加入星計劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴散
  • 作品版權(quán)保護
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長期合作伙伴
立即加入
  • 正文
    • 1. 理解多深度網(wǎng)絡(luò)生成和執(zhí)行的上下文
    • 2. 深度神經(jīng)網(wǎng)絡(luò)DNN在NPU上調(diào)度的目標和挑戰(zhàn)
    • 3. 多深度神經(jīng)網(wǎng)絡(luò)DNN在NPU上的調(diào)度優(yōu)化策略
    • 總結(jié)
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請入駐 產(chǎn)業(yè)圖譜

多深度神經(jīng)網(wǎng)絡(luò)的調(diào)度機制研究

2023/01/28
763
閱讀需 25 分鐘
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

自動駕駛系統(tǒng)依賴于人工智能深度神經(jīng)網(wǎng)絡(luò)(deep neural networks, DNN)算法來執(zhí)行感知、決策和控制等復(fù)雜任務(wù)。

近年來,針對于自動駕的深度神經(jīng)網(wǎng)絡(luò)算法的精度有了顯著提高。然而,汽車在行駛過程中,除了要保證自動駕駛系統(tǒng)的輸出和決策是準確的之外,其時機也必須是確定性的,因為即使準確但過晚的輸出可能導(dǎo)致汽車撞上障礙物從而發(fā)生事故。因此準確性和實時性都是安全系統(tǒng)中需要考慮的關(guān)鍵因素。

深入理解自動駕駛系統(tǒng)中的深度神經(jīng)網(wǎng)絡(luò)模型的工作負載的多樣性和有效的端到端執(zhí)行,為準確和實時的執(zhí)行提供硬件軟件機制是保障自動駕駛安全和有效的基礎(chǔ)。

考慮到自動駕駛系統(tǒng)當中有多深度神經(jīng)網(wǎng)絡(luò)模型需要同時運行,每個模型的工作負載的多樣性以及特殊安全性需求等等挑戰(zhàn),如何能夠設(shè)計一個高效可靠且能適配于神經(jīng)網(wǎng)絡(luò)處理器(Neural Network Processing unit, NPU)硬件架構(gòu)的多深度神經(jīng)網(wǎng)絡(luò)DNN的調(diào)度機制越來越成為自動駕駛領(lǐng)域內(nèi)各方關(guān)注重點和研究對象。

1. 理解多深度網(wǎng)絡(luò)生成和執(zhí)行的上下文

1. 1 深度神經(jīng)網(wǎng)絡(luò)工作負載的生成

深度神經(jīng)網(wǎng)絡(luò)DNN的可執(zhí)行文件的生成通常包含以下幾個步驟:

首先是在Pytorch、Tensorflow等AI框架下開發(fā)和訓(xùn)練得到的模型,也可以進一步將模型轉(zhuǎn)換成ONNX格式。

通常模型在訓(xùn)練完之后,還會通過模型壓縮工具進一步進行壓縮和轉(zhuǎn)換,這包括量化、稀疏以及剪枝等等,這些方法可以大大地提升模型運行的效率,并節(jié)約硬件中存儲等資源,這一步驟是可選的。

被轉(zhuǎn)換后的模型通過AI編譯器進行編譯,通常AI編譯器至少分成前端和后端兩個部分,前端將模型進行多層融合和算子對應(yīng)并生成圖形表達,后端則是負責(zé)將高階的模型表達形式轉(zhuǎn)換成低階的張量或者算子層級的表達,并完成到硬件資源的映射和存儲分配,生成機器代碼,最終編譯器將輸出可執(zhí)行文件,以支持在NPU硬件中執(zhí)行。

有的編譯器可以支持單個或者多個模型同時處理,并且將他們聯(lián)合進行編譯乘多種輸出形式的二進制文件,包括單個模型在單個stream中,多個模型分成多個stream,以及多個模型混合在同一個stream當中。

1.2 深度神經(jīng)網(wǎng)絡(luò)工作負載的執(zhí)行

上一節(jié)介紹了深度神經(jīng)網(wǎng)絡(luò)DNN,接下來再理解下深度神經(jīng)網(wǎng)絡(luò)DNN是如何在硬件中執(zhí)行的。

DNN的執(zhí)行大體上也可以分為幾個層級,最頂層的是應(yīng)用層,正如之前提到的,編譯器可以將多個神經(jīng)網(wǎng)絡(luò)模型分布單個或者多個stream當中,在中間層的調(diào)度負責(zé)將具體的任務(wù)負載從各個stream中提取出來放到調(diào)度隊列當中,然后由底層驅(qū)動和運行時調(diào)度器將任務(wù)分配到NPU硬件中進行執(zhí)行。

負責(zé)執(zhí)行深度神經(jīng)網(wǎng)絡(luò)的硬件架構(gòu)有多種形式,從單個計算核心到多個簇(Cluster)以及異構(gòu)架構(gòu)等等。一般來說計算核心是由調(diào)度器以及處理單元(Processing Element,PE)陣列組成,而cluster則有多個計算核心組成。在異構(gòu)架構(gòu)中除了有PE陣列單元負責(zé)卷積以及矩陣操作之外,還有支持向量運算的向量計算單元等等。

2. 深度神經(jīng)網(wǎng)絡(luò)DNN在NPU上調(diào)度的目標和挑戰(zhàn)

2.1 深度神經(jīng)網(wǎng)絡(luò)DNN在NPU上調(diào)度的挑戰(zhàn)

01、多深度神經(jīng)網(wǎng)絡(luò)DNNS的實時性要求

各個模型需要執(zhí)行的開始時間不同,同時各個模型的任務(wù)截止時間也不相同。另外優(yōu)先級高的模型任務(wù)需要得到優(yōu)先調(diào)度,甚至有的時候需要搶占式來保證高優(yōu)先級的任務(wù)模型立即執(zhí)行。最后還要滿足模型的服務(wù)質(zhì)量(quality of service,QOS)的要求等等。

02、深度神經(jīng)網(wǎng)絡(luò)的負載多樣性

深度神經(jīng)網(wǎng)絡(luò)由多個層級組成的結(jié)構(gòu),其負載實質(zhì)上就是其中不同層級中的算子操作。這些算子的計算強度各不相同,計算強度是由計算量除以訪存量就可以得到的,它表示此模型在計算過程中,每個字節(jié)內(nèi)存交換到底用于進行多少次浮點運算,其單位是字節(jié)每秒浮點運算次數(shù)(FPLOPs)/字節(jié)(Byte),算子計算強度越大,其內(nèi)存使用效率越高。根據(jù)計算強度我們可以把不同的算子其分為計算受限(computing-bound)以及存儲受限(memory-bound)兩種類型。

對于計算受限的算子,它們通常對相同的數(shù)據(jù)執(zhí)行多個操作,因此可以充分利用加速器中的處理元素。但是,它們不需要經(jīng)常從內(nèi)存中獲取數(shù)據(jù),而不需要充分利用內(nèi)存緩沖區(qū)和帶寬。這是卷積算子的情況。

對于存儲受限的算子,它們的數(shù)據(jù)可重用性很低。因此,他們需要非常頻繁地獲取數(shù)據(jù),計算資源沒有得到充分利用,等待更多的數(shù)據(jù)。池化(Pooling)、全連接層(full connection)、激活函數(shù)(activation function)等算子以及自注意力(self-attention)等算子都是受內(nèi)存限制類型的。

正是由于計算受限和存儲受限的算子對于資源的訴求不同,因為調(diào)度器需要根據(jù)將被執(zhí)行的算子的特性進行不同的調(diào)度策略和資源分配才能達到實時性和高效率的要求。

03、特殊安全和可靠性需求

一些負載由于要滿足特殊安全性的需求,需要通過硬件資源與其他的負載進行分離以達到確保的安全性和實時性。

04、硬件靈活性帶來的映射空間巨大

NPU的架構(gòu)形式非常豐富,而不同的硬件架構(gòu)形式又決定了NPU可以支持的調(diào)度的靈活性。

硬件支持的調(diào)度靈活性通??梢苑譃樗膫€維度:

T 即數(shù)據(jù)切塊大?。═ile sizes):改變張量數(shù)據(jù)結(jié)構(gòu)在多層次結(jié)構(gòu)的緩沖區(qū)的每個級別中的數(shù)據(jù)切塊的邊界和寬高比。

O 即循環(huán)順序(Loop order):改變每個數(shù)據(jù)切塊的循環(huán)計算結(jié)構(gòu)中循環(huán)執(zhí)行順序。

P 即循環(huán)并行化(Loop parallelization):改變每個數(shù)據(jù)切塊的計算中從哪個張量維度(長、寬或者通道)進行并行化調(diào)度,這實際代表著數(shù)據(jù)的空間劃分(例如跨多個PE劃分)。

S 即數(shù)組形狀(Array shape):改變加速器硬件資源即PE陣列的邏輯形狀和集群方式。這決定了數(shù)據(jù)切塊的數(shù)量和在PE陣列上映射的張量維度的最大切塊尺寸。

每一種靈活性都會帶來多余的硬件面積,因此絕大多數(shù)NPU硬件架構(gòu)只能支持以上幾個維度當中的一個或幾個, 但是也會形成一個巨大的硬件映射空間,而針對于一個特定任務(wù)負載的每一個調(diào)度的決策在這個映射空間都是一個點,其結(jié)果都會得到不同的延時以及硬件利用率等性能。這些因素都給調(diào)度器和編譯器帶來了相當?shù)膹?fù)雜度。

2.2 多深度神經(jīng)網(wǎng)絡(luò)DNN調(diào)度的目標和指標

在多個DNN工作負載運行時,對于調(diào)度機制來說有多個而不是單一的優(yōu)化目標,包括滿足不同DNN網(wǎng)絡(luò)的實時性要求,高效的硬件映射以及調(diào)度的開銷/收益的平衡等等。

在評估調(diào)度方法時,常見具體使用性能指標以及計算公式如下公式所示:系統(tǒng)吞吐量(STP),度量在多程序執(zhí)行下,每個任務(wù)的性能下降的程度:

標準化周轉(zhuǎn)時間(NTT),用來度量單一任務(wù)執(zhí)行的時間是否比多個任務(wù)執(zhí)行時放緩:

NTT的算術(shù)平均值(ANTT),即NTT的算數(shù)平均值:

公平性(Fairness),在多任務(wù)環(huán)境下,相對于任務(wù)的孤立執(zhí)行,衡量任務(wù)進度的平等程度:

上述式子中,Cisingle表示僅有第i個深度神經(jīng)網(wǎng)絡(luò)DNN在NPU中執(zhí)行所需的時間,Cimulti表示有n個深度神經(jīng)網(wǎng)絡(luò)DNN在NPU中執(zhí)行時,第i個深度神經(jīng)網(wǎng)絡(luò)DNN執(zhí)行所需要的時間,而PPi的表示如下式所示:

3. 多深度神經(jīng)網(wǎng)絡(luò)DNN在NPU上的調(diào)度優(yōu)化策略

3.1 單個深度神經(jīng)網(wǎng)絡(luò)DNN調(diào)度優(yōu)化方案

傳統(tǒng)上優(yōu)化DNN調(diào)度的問題主要就是關(guān)注在單個核心NPU或GPU中調(diào)度單個模型到達最低的時延和最高的硬件利用率。

在DNN的運行分層從上到下使用了幾種優(yōu)化技術(shù),:

服務(wù)層級編排(orchestration):它發(fā)生在軟件層級,當云服務(wù)接收數(shù)百萬DNN任務(wù)并將其分發(fā)到多個服務(wù)器時。

圖級并行化:在DNN編譯器中通常使用有向無環(huán)圖(Directed Acyclic Graph, DAG),其中節(jié)點表示深度神經(jīng)網(wǎng)絡(luò)中的算子,邊表示張量。這一級別的優(yōu)化旨在充分實現(xiàn)圖中的并行性提高計算效率,因此通常是在軟件的編譯器中進行優(yōu)化。

運行時級調(diào)度:旨在使用負載平衡和并發(fā)方式來優(yōu)化算子之間的并行性上。在單一DNN模型推理中,這僅限于模型內(nèi)的并行性, 而在多個DNN模型推理中,則可以是跨模型的并發(fā)。

算子級別:通過循環(huán)平鋪和緩沖區(qū)管理等機制來加速算子執(zhí)行,以達到充分利用NPU計算和內(nèi)存資源。在GPU中,這通常是作為內(nèi)核級的調(diào)優(yōu)完成,而在NPU中,則是由編譯器完成的。

3.2 多個深度神經(jīng)網(wǎng)絡(luò)DNN調(diào)度優(yōu)化策略

01、時分復(fù)用(time multiplex)

時分復(fù)用是一種常用的多神經(jīng)網(wǎng)路調(diào)度的策略是時分多路復(fù)用。

在這種策略中,單個DNN模型使用整個加速器,然后轉(zhuǎn)換到另一個DNN網(wǎng)絡(luò)模型。這通常是通過每個DNN在不同的stream中來進行管理的。

時分多路復(fù)用調(diào)度策略也可以采用多種多樣的形式,例如可以是基于FIFO的、固定時間的、貪婪的或計算-存儲平衡的等等策略。其中計算-內(nèi)存平衡調(diào)度器的目標是提高硬件利用率并降低總體延遲,當內(nèi)存資源被完全占用時,它們會調(diào)度計算受限(computing-bounding)的算子到硬件中執(zhí)行,而當計算能力被充分利用時,則調(diào)度內(nèi)存受限(memory-bounding)的算子到硬件資源中執(zhí)行。

02、共部(co-location)

在多個同一類的網(wǎng)絡(luò)模型共享使用同一個硬件資源的方式叫做共部(Co-location),這可以通過在硬件架構(gòu)中使用不同處理器模塊專用于多個同一類的網(wǎng)絡(luò)模型來實現(xiàn)。

例如在FPGA模型開發(fā)研究中,通常每個網(wǎng)絡(luò)或每種網(wǎng)絡(luò)類型都有一個專門的處理器模塊。但是共部(Co-location)不僅局限于FPGA上的專用處理器模塊,在具有多核的NPU硬件架構(gòu)中,也可以將每個核都分配一個網(wǎng)絡(luò)模型。

03、混合調(diào)度

共地址的調(diào)度方式也可以與時分多路復(fù)用方法相結(jié)合。如下圖所示,在NPU架構(gòu)中有4個計算核心,其中左邊三個核心支持分時復(fù)用的調(diào)度策略,而最右側(cè)的核心則實現(xiàn)了共部調(diào)度策略;在這種情況下,調(diào)度可以獲得一些模型的時間復(fù)用優(yōu)勢,同時保持一個模型的專用核心。這可能是決定論或安全性所需要的。

不同的方法需要不同的硬件和軟件來支持它們,這取決于不同的場景的需求,在設(shè)計中考慮運行時哪項指標是最重要的:吞吐量、延遲、公平性或確定性。

3.3多核架構(gòu)NPU的調(diào)度策略

多核架構(gòu)NPU的調(diào)度策略主要有:

基于幀的分割: 同一個深度神經(jīng)網(wǎng)絡(luò)DNN模型推理時,可以并行處理多幀數(shù)據(jù)的推理,而不同幀則由不同的計算核心同時處理,模型參數(shù)可以在核心之間共享。

基于層的分割: 在運行深度神經(jīng)網(wǎng)絡(luò)DNN對某一幀數(shù)據(jù)進行推理的時候,將DNN模型按照層進行分割后在多個計算核并行處理。這種方法提高了吞吐量,但是需要一個很好的平衡策略使整個網(wǎng)絡(luò)模型能夠恰好地分割到所有核心,否則會出現(xiàn)部分計算核心處于空閑狀態(tài),從而降低了硬件領(lǐng)用率和推理時延。

共享輸入特征的特征映射分區(qū):在這種方法中,通過將深度神經(jīng)網(wǎng)絡(luò)DNN中的每一層的輸入特征(input feature)劃分到不同的核心并行運行??紤]到數(shù)據(jù)可以廣播,因此帶寬顯著減少。由于每次只在每個核上處理輸入特征的一部分,因此在最后要做一些后處理來考慮邊緣對齊。

共享權(quán)重的特征映射分區(qū):和前一種方式類似,只是劃分的對象變成了權(quán)重而非輸入特性。在深度神經(jīng)網(wǎng)絡(luò)DNN中的每一層通過在不同計算核心中劃分權(quán)重來在多個計算核心中并行運行,同時帶寬會顯著減少。

總結(jié)

深度神經(jīng)網(wǎng)絡(luò)模型DNN正以令人眼花繚亂的速度演進發(fā)展,隨著算法多樣性和更高算力的需求推動著NPU的硬件架構(gòu)朝著規(guī)模越來越大,核心的數(shù)量也越來越多,而硬件的設(shè)計和驗證時間相比軟件更費時費力,這使得處于模型算法和硬件之間的調(diào)度系統(tǒng)變得越來越重要。

如何在硬件加速器上高效地運行多個DNN模型的策略選擇有很多,許多新的優(yōu)化機會還在不斷涌現(xiàn)中。

然而,這些優(yōu)化是有代價的,目前看起來最有前景的調(diào)度策略都需要硬件支持,如搶占表、權(quán)重的內(nèi)存直接訪問(Direct Memory Access,DMA)、輸入特征的DMA或硬件運行時調(diào)度模塊。

因此在為未來的深度神經(jīng)網(wǎng)絡(luò)DNN設(shè)計調(diào)度機制時,最大挑戰(zhàn)是需要協(xié)同軟件和硬件在成本、性能和未來工作負載的靈活性之間保持良好的平衡。

參考文獻:

[1] H. Kwon, P. Chatarasi, M. Pellauer, A. Parashar, V. Sarkar, and T. Krishna, ‘Understanding Reuse, Performance, and Hardware Cost of DNN Dataflows: A Data-Centric Approach Using MAESTRO’. arXiv, May 11, 2020. Accessed: Jul. 21, 2022. [Online]. Available: http://arxiv.org/abs/1805.02566

[2] L. Liu, Y. Wang, and W. Shi, ‘Understanding Time Variations of DNN Inference in Autonomous Driving’. arXiv, Sep. 12, 2022. doi: 10.48550/arXiv.2209.05487.

[3] F. Yu et al., ‘Automated Runtime-Aware Scheduling for Multi-Tenant DNN Inference on GPU’. arXiv, Nov. 28, 2021. doi: 10.48550/arXiv.2111.14255.

[4] Y. Choi and M. Rhu, ‘PREMA: A Predictive Multi-task Scheduling Algorithm For Preemptible Neural Processing Units’. arXiv, Sep. 06, 2019. Accessed: Jul. 19, 2022. [Online]. Available: http://arxiv.org/abs/1909.04548

[5] E. Baek, D. Kwon, and J. Kim, ‘A Multi-Neural Network Acceleration Architecture’, in 2020 ACM/IEEE 47th Annual International Symposium on Computer Architecture (ISCA), May 2020, pp. 940–953. doi: 10.1109/ISCA45697.2020.00081.

[6] J.-H. Kim, S. Yoo, S. Moon, and J.-Y. Kim, ‘Exploration of Systolic-Vector Architecture with Resource Scheduling for Dynamic ML Workloads’. arXiv, Jun. 07, 2022. Accessed: Aug. 12, 2022. [Online]. Available: http://arxiv.org/abs/2206.03060

[7] S. I. Venieris and C.-S. Bouganis, ‘f-CNNx: A Toolflow for Mapping Multiple Convolutional Neural Networks on FPGAs’, in 2018 28th International Conference on Field Programmable Logic and Applications (FPL), Dublin, Ireland, Aug. 2018, pp. 381–3817. doi: 10.1109/FPL.2018.00072.

[8] Y. H. Oh et al., ‘Layerweaver: Maximizing Resource Utilization of Neural Processing Units via Layer-Wise Scheduling’, in 2021 IEEE International Symposium on High-Performance Computer Architecture (HPCA), Seoul, Korea (South), Feb. 2021, pp. 584–597. doi: 10.1109/HPCA51647.2021.00056.

[9] F. Yu, D. Wang, L. Shangguan, M. Zhang, C. Liu, and X. Chen, ‘A Survey of Multi-Tenant Deep Learning Inference on GPU’. arXiv, May 24, 2022. Accessed: Dec. 15, 2022. [Online]. Available: http://arxiv.org/abs/2203.09040

[10] Stylianos I. Venieris, Chistos-Savvas Bouganis, Nicholas D. Lane, ‘Multi-DNN Accelerators for

Next-Generation AI Systems’. IEEE Computer Journal, 2022

[11] S.-C. Kao, H. Kwon, M. Pellauer, A. Parashar, and T. Krishna, ‘A Formalism of DNN Accelerator Flexibility’. arXiv, Jun. 06, 2022. Accessed: Aug. 17, 2022. [Online]. Available: http://arxiv.org/abs/2206.02987

作者簡介

Carlos Nossa,復(fù)睿微電子英國研發(fā)中心軟件架構(gòu)師,常駐英國劍橋。曾在知名通信芯片公司參與多款物聯(lián)網(wǎng)芯片相關(guān)的開發(fā)和研究工作,負責(zé)期平臺軟件架構(gòu)設(shè)計,并通過安全認證,實現(xiàn)海量發(fā)貨。

Shawn Ouyang,復(fù)睿微電子英國研發(fā)中心系統(tǒng)架構(gòu)師,常駐英國劍橋。曾在某頂尖通信公司的海內(nèi)外研究所從事近10年手機和物聯(lián)網(wǎng)芯片相關(guān)的開發(fā)和研究工作。

相關(guān)推薦

電子產(chǎn)業(yè)圖譜