陳維偉 王 穎 張 磊
(?中國(guó)科學(xué)院計(jì)算技術(shù)研究所 北京 100190)
(??中國(guó)科學(xué)院大學(xué) 北京 100049)
近年來(lái),深度神經(jīng)網(wǎng)絡(luò)(deep neural network,DNN)在計(jì)算機(jī)視覺(jué)、自然語(yǔ)言處理等領(lǐng)域都取得了巨大的突破[1]。算法研究人員針對(duì)不同的應(yīng)用設(shè)計(jì)了大量的網(wǎng)絡(luò)結(jié)構(gòu)和對(duì)應(yīng)的訓(xùn)練方法,如在圖像分類(lèi)領(lǐng)域,從最初的AlexNet 到目前的Efficient-Net,人們對(duì)神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)的改進(jìn)不斷提升其精度和性能表現(xiàn)[2]。同時(shí)針對(duì)深度學(xué)習(xí)這類(lèi)計(jì)算密集和數(shù)據(jù)密集應(yīng)用,業(yè)界關(guān)注開(kāi)發(fā)特定領(lǐng)域的架構(gòu)(如硬件加速器),此類(lèi)硬件加速架構(gòu)多采用單指令多數(shù)據(jù)流、用戶控制與緩存等技術(shù),使其在并行性及帶寬利用率上比通用架構(gòu)更加高效,通過(guò)結(jié)合專(zhuān)用領(lǐng)域的編程語(yǔ)言以繼續(xù)提高計(jì)算能力[3-5],如Google公司研發(fā)的張量處理單元(tensor processing unit,TPU)在神經(jīng)網(wǎng)絡(luò)應(yīng)用中平均比圖形處理器(graphics processing unit,GPU)(Nvidia K80 GPU)或中央處理器(central processing unit,CPU)(Intel Haswell CPU)快15~30 倍,能效比(Tops/Watt)高出約30~80 倍[3-4]。
深度學(xué)習(xí)軟硬件的興起為構(gòu)建高能效的人工智能系統(tǒng)提供了可能,然而,目前深度學(xué)習(xí)算法與硬件專(zhuān)用架構(gòu)設(shè)計(jì)之間依然存在著很大的鴻溝。在算法設(shè)計(jì)方面,DNN 模型設(shè)計(jì)者通常專(zhuān)注于設(shè)計(jì)具有更高精度、更低參數(shù)和更小每秒浮點(diǎn)運(yùn)算次數(shù)(floating-point operations per second,FLOPs)的DNN 模型,但是其較少考慮到DNN 在具體硬件上的執(zhí)行特性,使得僅設(shè)計(jì)具有較低參數(shù)和較少FLOPs 的DNN 模型并不能直接提升性能[2,7],如NasNet 與分層網(wǎng)絡(luò)MobileNet 相比,其有更低的參數(shù)但使用多分支結(jié)構(gòu),其碎片化的單元結(jié)構(gòu)使得硬件運(yùn)算效率較低[8]。在硬件設(shè)計(jì)方面,目前,對(duì)應(yīng)用廣泛的、具有代表性的程序進(jìn)行泛化是硬件設(shè)計(jì)和優(yōu)化的傳統(tǒng)方法,其通常先構(gòu)建一組基準(zhǔn)測(cè)試程序(Benchmark,如SPEC),包含了一組特定的工作負(fù)載程序,硬件設(shè)計(jì)的目標(biāo)之一就是優(yōu)化這組特定程序的平均性能。例如,CPU 是為串行程序(如桌面應(yīng)用程序)而優(yōu)化,GPU 是為大規(guī)模并行工作負(fù)載(如圖形渲染、科學(xué)計(jì)算等)而設(shè)計(jì)。深度學(xué)習(xí)硬件設(shè)計(jì)評(píng)估也沿用此方式,當(dāng)前MLPerf 已成為評(píng)估深度學(xué)習(xí)加速器設(shè)計(jì)的標(biāo)準(zhǔn)Benchmark,深度學(xué)習(xí)硬件加速器在MLPerf 上的得分成為衡量硬件性能的重要指標(biāo)。然而B(niǎo)enchmark 所選定的應(yīng)用程序可能在相當(dāng)長(zhǎng)的一段時(shí)間內(nèi)固定不變,這容易使得專(zhuān)用硬件設(shè)計(jì)對(duì)新算法的優(yōu)化不夠充分。特別是在深度學(xué)習(xí)領(lǐng)域,由于其快速發(fā)展在短時(shí)間內(nèi)催生了大量精度更高、泛化能力更強(qiáng)、計(jì)算效率更高的模型,使得最新的DNN 模型和加速器協(xié)同度不高。例如,最新的神經(jīng)網(wǎng)絡(luò)EfficientNet,其使用了全局池化和SiLU/Swish非線性激活函數(shù)來(lái)提升精度,但最新的加速器不能很好支持此類(lèi)計(jì)算[9-10],導(dǎo)致系統(tǒng)不能工作在最佳狀態(tài)。
因此,針對(duì)目前軟硬件設(shè)計(jì)分離問(wèn)題,神經(jīng)網(wǎng)絡(luò)模型和加速硬件的協(xié)同設(shè)計(jì)對(duì)進(jìn)一步提升人工智能(artificial intelligence,AI)系統(tǒng)的整體性能尤為重要[11]。為此,本文針對(duì)圖像分類(lèi)任務(wù),提出了一種新的網(wǎng)絡(luò)結(jié)構(gòu)和加速器軟硬件協(xié)同設(shè)計(jì)框架,本方法可以在統(tǒng)一的DNN 結(jié)構(gòu)和加速器設(shè)計(jì)空間中,針對(duì)不同目標(biāo)自動(dòng)進(jìn)行協(xié)同設(shè)計(jì)搜索,進(jìn)一步提升AI系統(tǒng)性能,并減少人工開(kāi)銷(xiāo)。本文的主要貢獻(xiàn)點(diǎn)如下。
(1)通過(guò)在統(tǒng)一的聯(lián)合搜索空間中將DNN 模型結(jié)構(gòu)和加速器搜索參數(shù)化,可以針對(duì)不同設(shè)計(jì)場(chǎng)景和設(shè)計(jì)約束,自動(dòng)搜索DNN 結(jié)構(gòu)和加速器協(xié)同設(shè)計(jì)方案,進(jìn)一步擴(kuò)展帕累托邊界。
(2)針對(duì)協(xié)同設(shè)計(jì)搜索空間巨大的問(wèn)題,提出了一種LSTM+RL 的方案,使用長(zhǎng)短時(shí)記憶(long short-term memory,LSTM)來(lái)生成設(shè)計(jì)序列,同時(shí)使用強(qiáng)化學(xué)習(xí)(reinforcement learning,RL)方法指導(dǎo)搜索方向。實(shí)驗(yàn)結(jié)果表明,此方法可有效降低協(xié)同設(shè)計(jì)搜索開(kāi)銷(xiāo)。
(3)針對(duì)神經(jīng)網(wǎng)絡(luò)精度評(píng)估和硬件設(shè)計(jì)評(píng)估開(kāi)銷(xiāo)巨大問(wèn)題,提出了基于HyperNet 的網(wǎng)絡(luò)精度評(píng)估方法,候選DNN 模型可直接從HyperNet 中繼承權(quán)重以避免昂貴的訓(xùn)練開(kāi)銷(xiāo);同時(shí)采用高斯過(guò)程模型對(duì)硬件設(shè)計(jì)性能進(jìn)行預(yù)測(cè),減少了整體的評(píng)估開(kāi)銷(xiāo)。
為進(jìn)一步提升AI 系統(tǒng)的性能和服務(wù)質(zhì)量(quality of service,QoS),神經(jīng)網(wǎng)絡(luò)軟硬件協(xié)同設(shè)計(jì)已經(jīng)成為近年來(lái)的研究熱點(diǎn)[12]。當(dāng)前研究工作從神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)設(shè)計(jì)到硬件加速器的多個(gè)優(yōu)化方面展開(kāi),主要存在3 類(lèi)提升神經(jīng)網(wǎng)絡(luò)運(yùn)算能效的方法。第1 類(lèi)是硬件感知神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)設(shè)計(jì)方法,其面向特定硬件設(shè)計(jì)更高效的DNN 模型。具體而言,硬件感知神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)搜索方法根據(jù)應(yīng)用設(shè)定DNN 結(jié)構(gòu)設(shè)計(jì)空間,在設(shè)計(jì)過(guò)程中,依賴性能評(píng)估模型來(lái)估計(jì)候選神經(jīng)網(wǎng)絡(luò)模型在目標(biāo)硬件上的性能,然后在迭代設(shè)計(jì)過(guò)程中決定是否應(yīng)該保留或更新所發(fā)現(xiàn)的網(wǎng)絡(luò),最后篩選出針對(duì)目標(biāo)硬件和約束的最優(yōu)DNN模型。如FbNet[13]和ProxylessNAS[14]都是針對(duì)智能手機(jī)設(shè)計(jì)的DNN 模型,這2 個(gè)DNN 模型都旨在實(shí)現(xiàn)較高模型精度的同時(shí),實(shí)現(xiàn)較高的推理速度。然而此類(lèi)硬件感知神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)搜索方法需要針對(duì)每一個(gè)任務(wù)專(zhuān)門(mén)設(shè)計(jì)網(wǎng)絡(luò)結(jié)構(gòu)搜索空間,需要豐富的專(zhuān)家知識(shí),極大影響了其適應(yīng)不同場(chǎng)景的能力。
第2 類(lèi)提升神經(jīng)網(wǎng)絡(luò)計(jì)算效率的方法是針對(duì)特定任務(wù)的神經(jīng)網(wǎng)絡(luò)硬件加速方法,其需要根據(jù)DNN的計(jì)算模式來(lái)設(shè)計(jì)新的指令集架構(gòu)、編程模型、編程工具,甚至是新的編程語(yǔ)言,來(lái)實(shí)現(xiàn)最大化的性能提升。如Kiseok 等人[6]針對(duì)嵌入式視覺(jué)任務(wù),提出了一種DNN 模型和加速器的協(xié)同設(shè)計(jì)方法,其首先針對(duì)SqueezeNet,專(zhuān)門(mén)設(shè)計(jì)了一個(gè)DNN 加速器,然后調(diào)整 SqueezeNet 的超參數(shù),使得修改后的SqueezeNet 在定制的加速器上運(yùn)行更高效。然而針對(duì)不同場(chǎng)景設(shè)計(jì)專(zhuān)用硬件加速器耗時(shí)耗力,還需要針對(duì)性地設(shè)計(jì)專(zhuān)用的編譯部署方法,這使得部署成本高昂。
此外,第3 類(lèi)提升神經(jīng)網(wǎng)絡(luò)計(jì)算效率的方法是DNN 模型結(jié)構(gòu)和硬件協(xié)同設(shè)計(jì)。如Yang 等人[15]在嵌入式現(xiàn)場(chǎng)可編程門(mén)陣列(field-programmable gate array,FPGA)上采用軟硬件協(xié)同設(shè)計(jì)方法來(lái)加速ConvNet 模型。其采用1×1 的卷積塊來(lái)構(gòu)建DNN 模型,然后基于FPGA 設(shè)計(jì)高度定制化的1×1卷積計(jì)算單元,以提高前向推理速度。然而,該方法由于定制化程度較高,不能移植到其他應(yīng)用程序和平臺(tái)。Ji 等人[16]提出了工具鏈Neutrams,該工具鏈將現(xiàn)有神經(jīng)網(wǎng)絡(luò)模型進(jìn)行轉(zhuǎn)換(如算子融合),以滿足神經(jīng)形態(tài)芯片的硬件約束要求,然后進(jìn)行硬件適配并將轉(zhuǎn)換后的神經(jīng)網(wǎng)絡(luò)模型映射到神經(jīng)形態(tài)芯片上。Hao 等人[1]則提出了一種FPGA/DNN 協(xié)同設(shè)計(jì)方法,其主要由兩部分構(gòu)成:一個(gè)是針對(duì)硬件自底向上的神經(jīng)結(jié)構(gòu)塊構(gòu)建,用于高精度網(wǎng)絡(luò)結(jié)構(gòu)搜索;另一個(gè)是針對(duì)每一個(gè)神經(jīng)網(wǎng)絡(luò)塊,自頂向下的構(gòu)建專(zhuān)用知識(shí)產(chǎn)權(quán)核(intelligent property,IP)實(shí)例,并在FPGA 上將這些IP 組織起來(lái),從而實(shí)現(xiàn)專(zhuān)用的神經(jīng)網(wǎng)絡(luò)計(jì)算加速。
當(dāng)前的DNN 模型和加速器協(xié)同設(shè)計(jì)工作證明了其提升神經(jīng)網(wǎng)絡(luò)計(jì)算系統(tǒng)性能的潛力,然而它們基本都遵循著兩階段式的設(shè)計(jì)流程。圖1 對(duì)當(dāng)前的兩階段設(shè)計(jì)流程進(jìn)行了簡(jiǎn)要描述。首先,此類(lèi)設(shè)計(jì)要么修改現(xiàn)有的DNN 模型,要么使用人工或網(wǎng)絡(luò)結(jié)構(gòu)搜索(neural architecture search,NAS)方式設(shè)計(jì)一個(gè)高精度的DNN 模型,然后設(shè)計(jì)一個(gè)針對(duì)此DNN模型的硬件加速器。此兩階段式的設(shè)計(jì)方式限制了其只能在局部空間中進(jìn)行搜索,導(dǎo)致可能不會(huì)收斂到最優(yōu)解,特別是當(dāng)需要考慮到真實(shí)部署環(huán)境中有更多實(shí)際的設(shè)計(jì)約束目標(biāo)(如帶寬、能耗、QoS等)[17]時(shí),針對(duì)最高精度的DNN 模型進(jìn)行專(zhuān)用硬件化并不一定能保證最好的系統(tǒng)性能[18]。此外,由于這些硬件設(shè)計(jì)流程都是針對(duì)特定的應(yīng)用和加速器架構(gòu),如文獻(xiàn)[1]中人工定制的神經(jīng)操作運(yùn)算IP,當(dāng)移植到其他應(yīng)用上時(shí),還需要大量的人工改動(dòng)從而導(dǎo)致高額的人工設(shè)計(jì)開(kāi)銷(xiāo)。因此,本文針對(duì)目前兩階段設(shè)計(jì)方法的缺點(diǎn),提出了一種新的網(wǎng)絡(luò)結(jié)構(gòu)和加速器軟硬件協(xié)同設(shè)計(jì)方法并將其命名為單階段協(xié)同設(shè)計(jì)方法。圖2 展示了此單階段設(shè)計(jì)方式的流程圖,相較于兩階段設(shè)計(jì)方式,本方法可以在統(tǒng)一的DNN 結(jié)構(gòu)和加速器設(shè)計(jì)空間中,針對(duì)不同目標(biāo)自動(dòng)進(jìn)行協(xié)同設(shè)計(jì)搜索,進(jìn)一步提升AI 系統(tǒng)性能。
圖1 傳統(tǒng)的兩階段設(shè)計(jì)流程示意
圖2 單階段網(wǎng)絡(luò)結(jié)構(gòu)/加速器協(xié)同設(shè)計(jì)流程示意
本文通過(guò)實(shí)驗(yàn)也證明了當(dāng)前兩階段設(shè)計(jì)在面向不同應(yīng)用時(shí)能效提升有限的問(wèn)題。圖3 展示了使用3 種不同的脈動(dòng)計(jì)算陣列(processor element,PE)大小,在Once-for-All[2]的網(wǎng)絡(luò)設(shè)計(jì)空間中進(jìn)行神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)搜索獲得的帕累托曲線??梢园l(fā)現(xiàn),在不同的設(shè)計(jì)約束下,最優(yōu)的網(wǎng)絡(luò)結(jié)構(gòu)和硬件配置組合是不同的,如在延遲約束為8 ms 時(shí),加速器配置3 的結(jié)果最優(yōu),而當(dāng)延遲約束為6 ms 時(shí),加速器配置2的結(jié)果最優(yōu)。這也驗(yàn)證了,針對(duì)特定的應(yīng)用場(chǎng)景和設(shè)計(jì)約束,需要在統(tǒng)一的設(shè)計(jì)空間中進(jìn)行網(wǎng)絡(luò)結(jié)構(gòu)和加速器的協(xié)同設(shè)計(jì),來(lái)進(jìn)一步提升AI 系統(tǒng)效率。
圖3 在同一網(wǎng)絡(luò)結(jié)構(gòu)設(shè)計(jì)空間中,3 種不同硬件參數(shù)配置下搜索獲得的帕累托曲線圖
在給定神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)的搜索空間η={η1,…,ηm}(包含m個(gè)神經(jīng)網(wǎng)絡(luò)模型結(jié)構(gòu))和加速器配置搜索空間C={c1,…,cn}(總共有n種配置選擇),同時(shí)在給定用戶設(shè)計(jì)約束thres情況下,此工作的設(shè)計(jì)目標(biāo)是自動(dòng)化生成最優(yōu)網(wǎng)絡(luò)結(jié)構(gòu)η?和相對(duì)應(yīng)的加速器配置c?,因而能在滿足用戶約束下,提供最優(yōu)的系統(tǒng)性能和精度,其形式化描述如下:
其中A代表DNN 模型精度;Perf代表了系統(tǒng)的性能約束,在具體實(shí)驗(yàn)中,可代表延遲或能耗等具體指標(biāo)。
在融合后的統(tǒng)一協(xié)同設(shè)計(jì)空間中直接進(jìn)行搜索主要面臨著2 個(gè)挑戰(zhàn):(1)巨大的協(xié)同搜索空間;(2)高額的評(píng)估開(kāi)銷(xiāo)。由于沒(méi)有成熟的理論來(lái)解釋網(wǎng)絡(luò)結(jié)構(gòu)和性能之間的準(zhǔn)確性關(guān)系,就需要對(duì)每一個(gè)網(wǎng)絡(luò)進(jìn)行訓(xùn)練以獲得精度,以及對(duì)硬件設(shè)計(jì)進(jìn)行模擬來(lái)獲得性能指標(biāo),這造成了較高的網(wǎng)絡(luò)訓(xùn)練以及性能模擬開(kāi)銷(xiāo)成本。基于此,本文設(shè)計(jì)了2 種技術(shù)來(lái)解決上述問(wèn)題,主要為:(1)基于LSTM 的序列生成器,用來(lái)生成協(xié)同設(shè)計(jì)點(diǎn)(包含DNN 結(jié)構(gòu)和硬件配置),同時(shí)采用強(qiáng)化學(xué)習(xí)進(jìn)行搜索;(2)快速的DNN 精度和硬件性能評(píng)估器。圖4 給出了系統(tǒng)的整體流程圖,其主要分為3 步:
圖4 整體方法設(shè)計(jì)流程概覽圖
(1)DNN 精度和硬件性能評(píng)估器構(gòu)建。此步驟中,系統(tǒng)根據(jù)目標(biāo)任務(wù)(如分類(lèi)、檢測(cè))構(gòu)建HyperNet,候選DNN 模型可視為HyperNet 的子網(wǎng),其可直接從HyperNet 中進(jìn)行抽取并繼承權(quán)重,以便避免單獨(dú)訓(xùn)練從而實(shí)現(xiàn)快速的DNN 模型精度評(píng)估。同時(shí)從硬件模擬器中采樣,獲取不同硬件配制下的性能數(shù)據(jù),進(jìn)而構(gòu)建高斯過(guò)程模型直接預(yù)測(cè)硬件性能來(lái)替代高耗時(shí)的硬件模擬。
(2)針對(duì)目標(biāo)約束的高效搜索。根據(jù)設(shè)計(jì)約束(如精度、能耗、延遲等),采用RL 進(jìn)行迭代搜索。在每一步迭代中,使用LSTM 輸出設(shè)計(jì)序列,然后送入第一步中構(gòu)建的精度和性能評(píng)估器中進(jìn)行評(píng)估,獲得reward 反饋來(lái)指導(dǎo)RL 控制器進(jìn)行下一次的迭代。
(3)確定最優(yōu)設(shè)計(jì)點(diǎn)。當(dāng)搜索迭代到一定次數(shù),選擇搜索過(guò)程中綜合得分最高的前K個(gè)點(diǎn),進(jìn)行DNN 模型重新訓(xùn)練和真實(shí)的硬件評(píng)估,并選擇重訓(xùn)后得分最高的作為最優(yōu)設(shè)計(jì)點(diǎn)。
在此協(xié)同設(shè)計(jì)空間中,將每一個(gè)候選設(shè)計(jì)點(diǎn)當(dāng)做一個(gè)序列:λ=(η,c)=(d1,…dS,dS+1,…,dS+L)。此序列包含兩部分,分別是網(wǎng)絡(luò)結(jié)構(gòu)超參數(shù)(長(zhǎng)度為S)和硬件架構(gòu)超參數(shù)(長(zhǎng)度為L(zhǎng)),可以從每一個(gè)候選λ構(gòu)建出唯一的DNN 模型和硬件加速器組合。其中,對(duì)于λ中的每一個(gè)參數(shù)的選擇可看做強(qiáng)化學(xué)習(xí)中的一個(gè)action(動(dòng)作選擇),所以整個(gè)λ可被視為一個(gè)動(dòng)作序列。因此,本文使用LSTM(采用120 個(gè)隱層單元)來(lái)生成此序列,圖5 列出了生成序列的示意圖。在生成λ的第i個(gè)參數(shù)時(shí),LSTM 接收第i-1 個(gè)參數(shù)作為輸入,并將0 作為第一個(gè)參數(shù)的輸入。為提高搜索效率,本文使用強(qiáng)化學(xué)習(xí)來(lái)捕捉動(dòng)作序列之間的相關(guān)關(guān)系來(lái)指導(dǎo)序列生成具有較高的獎(jiǎng)勵(lì)(reward),此rewardR(λ)的形式化表示如下:
圖5 基于LSTM 的序列生成流程示意圖
R(λ)由多個(gè)目標(biāo)構(gòu)成,其中A(λ)l(λ),e(λ)分別表示生成序列λ的精度、延遲和能耗。t_lat,t_eer分別表示有用戶設(shè)定的延遲和能耗約束,α1、ω1、α2、ω2為控制系數(shù)。因此,強(qiáng)化學(xué)習(xí)的目標(biāo)是找到最優(yōu)的超參λ?來(lái)最大化rewardR(λ),即:
φ代表LSTM 中需要被更新的參數(shù),通過(guò)更新φ來(lái)生成具有更高reward 的序列λ。同時(shí),使用REINFORCE 算法[19]來(lái)更新LSTM 參數(shù)φ,其具體更新方法表示如下:
其中b代表了采用當(dāng)前φ的生成序列的期望reward,也即平均reward。通過(guò)引入平均reward 值可以降低參數(shù)更新的方差,從而提高了搜索效率。
為了快速評(píng)估DNN 模型的精度,本文利用權(quán)重共享方法[5]構(gòu)建了一個(gè)超網(wǎng)(HyperNet)來(lái)對(duì)每一個(gè)侯選DNN 直接賦予權(quán)重值。每一個(gè)候選DNN 模型可被視為HyperNet 中的一條路徑,并直接從Hyper-Net 中繼承權(quán)重。從而,只需要訓(xùn)練這個(gè)HyperNet一次,避免了之前對(duì)每一個(gè)網(wǎng)絡(luò)進(jìn)行單獨(dú)訓(xùn)練的高額開(kāi)銷(xiāo)。
HyperNet 結(jié)構(gòu)。圖6 給出了HyperNet 的結(jié)構(gòu)示意圖。與之前網(wǎng)絡(luò)結(jié)構(gòu)設(shè)計(jì)方法[14,18,20]相同,本文使用2 種不同的cell 結(jié)構(gòu):規(guī)約單元(reduction cell)和正常單元(normal cell)來(lái)構(gòu)建HyperNet,其中reduction cell 和normal cell 有著相似的結(jié)構(gòu),但reduction cell 的步長(zhǎng)值(stride)為2。對(duì)于每一個(gè)cell 結(jié)構(gòu),可視為由B個(gè)節(jié)點(diǎn)(node)組成的無(wú)向圖,其中每一個(gè)node 代表著DNN 處理過(guò)程中的特征圖。對(duì)于第i個(gè)nodeIi,其需要選擇2 個(gè)前向node(j和k)作為輸入。Node 之間的連接可視為圖的邊,對(duì)于每一個(gè)邊,需要選擇一個(gè)具體運(yùn)算操作(如conv3×3、conv5×5、pooling 等),其形式化描述如下:
圖6 HyperNet 結(jié)構(gòu)與訓(xùn)練策略示意
θ(i,j)和θ(i,k)分別為(i,j)和(i,k)之間選擇的運(yùn)算操作,I0和I1為前2 個(gè)cell 的輸出。在輸出選擇上,本文將所有node(除去I0和I1)進(jìn)行拼接之后作為此cell 的輸出。因此,每一個(gè)node 通過(guò)選擇不同的前向node 作為輸入以及選擇不同的運(yùn)算操作,從而確定不同的cell 結(jié)構(gòu),又通過(guò)不同的cell 組合構(gòu)成不同的DNN 模型。因而每一個(gè)候選DNN 模型可視為整個(gè)HyperNet 中的一條路徑,其可直接從HyperNet 中繼承權(quán)重。在實(shí)驗(yàn)中,本文選取了6 種運(yùn)算操作和7 個(gè)node 組成HyperNet,因此,整個(gè)HyperNet 包含(6×(B-2)!)4≈5×1011種不同的候選DNN 模型結(jié)構(gòu)。
HyperNet 訓(xùn)練策略。為了公平地評(píng)估每一個(gè)子網(wǎng)DNN 模型的精度,防止子網(wǎng)選擇偏好對(duì)精度評(píng)估造成影響,本文對(duì)HyperNet 采取了一種公平的訓(xùn)練策略,即在HyperNet 的每一次訓(xùn)練迭代中,隨機(jī)采樣子網(wǎng)并進(jìn)行參數(shù)更新,可表示為
對(duì)于第i個(gè)node,其選擇前向第i-1 個(gè)node 的概率為p(Ii-1)=2/i。對(duì)于每一個(gè)備選運(yùn)算操作,其被選概率為1/V,V為運(yùn)算操作的個(gè)數(shù),實(shí)驗(yàn)中選用了6個(gè)不同的運(yùn)算,所以此處為6。對(duì)比之前工作[7,18,21],此隨機(jī)采樣策略有效避免了采樣偏差導(dǎo)致的精度評(píng)估不準(zhǔn)確問(wèn)題,從而對(duì)候選DNN 模型結(jié)構(gòu)進(jìn)行更有效的精度評(píng)估。
在傳統(tǒng)的加速器設(shè)計(jì)中,通常需要構(gòu)建一個(gè)精確的模擬器來(lái)對(duì)硬件進(jìn)行時(shí)鐘級(jí)的行為仿真,以反映硬件的真實(shí)運(yùn)行狀態(tài),但這同時(shí)導(dǎo)致模擬時(shí)間開(kāi)銷(xiāo)巨大,使得在協(xié)同設(shè)計(jì)的超大空間中直接使用模擬器來(lái)進(jìn)行硬件性能評(píng)估不可行。因此,為了進(jìn)行快速的硬件性能評(píng)估,本文采用機(jī)器學(xué)習(xí)技術(shù)來(lái)構(gòu)建硬件性能評(píng)估器,實(shí)現(xiàn)了近2000×的速度提升,同時(shí)預(yù)測(cè)精度誤差小于4%。在實(shí)驗(yàn)中,本文只構(gòu)建了延遲和能耗預(yù)測(cè)器,但此方法可以擴(kuò)展到其他硬件性能預(yù)測(cè)。
能耗預(yù)測(cè)器。圖7 比較了6 種不同的機(jī)器學(xué)習(xí)模型對(duì)能耗的預(yù)測(cè)能力。在選擇具體的機(jī)器學(xué)習(xí)評(píng)估模型前,本文首先從模擬器中收集了3600 個(gè)訓(xùn)練樣本,并使用600 個(gè)樣本作為預(yù)測(cè)樣本,然后使用這6 種不同的機(jī)器學(xué)習(xí)方法在此樣本上進(jìn)行訓(xùn)練,并選取預(yù)測(cè)能力最優(yōu)的機(jī)器學(xué)習(xí)模型作為性能預(yù)測(cè)器。通過(guò)實(shí)驗(yàn)發(fā)現(xiàn),基于高斯過(guò)程(采用RBF 核)的預(yù)測(cè)模型具有最高的預(yù)測(cè)精度,因此采用高斯過(guò)程模型作為能耗預(yù)測(cè)器。
圖7 不同機(jī)器學(xué)習(xí)方法的能耗預(yù)測(cè)結(jié)果對(duì)比
延遲預(yù)測(cè)器。同構(gòu)建能耗預(yù)測(cè)方法一樣,本文比較了這6 種不同的預(yù)測(cè)模型,然后根據(jù)預(yù)測(cè)精度來(lái)篩選預(yù)測(cè)器,最后也同樣使用高斯過(guò)程來(lái)構(gòu)建延遲預(yù)測(cè)器。
為驗(yàn)證此協(xié)同設(shè)計(jì)框架性能,本文在圖像分類(lèi)任務(wù)數(shù)據(jù)集Cifar10 和Eyeriss(脈動(dòng)陣列架構(gòu))[22]加速器上進(jìn)行實(shí)驗(yàn)驗(yàn)證。根據(jù)設(shè)計(jì)流程,此搜索框架根據(jù)用戶設(shè)計(jì)約束,自動(dòng)搜索DNN 模型結(jié)構(gòu)和加速器配置。在加速器可配置參數(shù)中,假設(shè)可配置PE的大小、全局緩沖器大小、寄存器大小和Dataflow 的方式。表1 列出了需要搜索的一些關(guān)鍵參數(shù)。本文所有實(shí)驗(yàn)運(yùn)行在單臺(tái)Linux 主機(jī)上,采用Intel Xeon 8163 2.5 GHz CPU 和單卡NVIDIA V100 GPU(16 GB HBM2)配置。在實(shí)驗(yàn)中,使用Cuda 10.0和Tensor-Flow 1.12 實(shí)現(xiàn)了RL 控制器、LSTM 和HyperNet。
表1 DNN 加速器協(xié)同設(shè)計(jì)參數(shù)
DNN 精度預(yù)測(cè)器是協(xié)同搜索中精度評(píng)估的關(guān)鍵,為此,實(shí)驗(yàn)驗(yàn)證了本文提出的基于HyperNet 的DNN 模型精度預(yù)測(cè)器。也就是說(shuō),通過(guò)從HyperNet繼承的權(quán)重來(lái)獲得DNN 模型的精度的方法,與直接單獨(dú)訓(xùn)練DNN 模型的方法相比,是否有正相關(guān)性?因此,實(shí)驗(yàn)中使用6 個(gè)cell(4 個(gè)normal cell 和2 個(gè)reduction cell)來(lái)構(gòu)成HyperNet 并將其訓(xùn)練300 個(gè)epoch。在HyperNet 的訓(xùn)練過(guò)程中,本文采用動(dòng)量為0.9 的隨機(jī)梯度下降優(yōu)化器和數(shù)據(jù)增強(qiáng)策略,同時(shí)采用余弦學(xué)習(xí)率衰減策略并控制學(xué)習(xí)率在0.05~0.0001 之間。此外,使用L2(4×10-5)正則化對(duì)權(quán)重進(jìn)行優(yōu)化。
圖8(a)展示了HyperNet 在訓(xùn)練過(guò)程中的精度變化。具體而言,在訓(xùn)練過(guò)程中從HyperNet 隨機(jī)抽出子網(wǎng)模型,并以此精度來(lái)代表HyperNet 的精度??梢钥闯?HyperNet 的精度隨著訓(xùn)練迭代不斷提升。圖8(b)展示了HyperNet 訓(xùn)練完成后,從HyperNet直接繼承權(quán)重的DNN 模型精度與單獨(dú)訓(xùn)練的實(shí)際精度的相關(guān)關(guān)系。由于協(xié)同設(shè)計(jì)空間中DNN模型數(shù)量巨大,不能對(duì)全部DNN 模型進(jìn)行驗(yàn)證,本文只從DNN 設(shè)計(jì)空間中隨機(jī)選取130 個(gè)模型進(jìn)行了單獨(dú)訓(xùn)練(每個(gè)模型單獨(dú)訓(xùn)練70 個(gè)epoch)。從圖8(b)中可以明顯看出,直接從HyperNet 繼承權(quán)重與單獨(dú)訓(xùn)練的精度具有較高的正相關(guān)性,從而表明從HyperNet 生成權(quán)值可以用于預(yù)測(cè)DNN 模型的真實(shí)精度,進(jìn)而避免了高額的單獨(dú)訓(xùn)練開(kāi)銷(xiāo)。
圖8 HyperNet 精度驗(yàn)證
在實(shí)驗(yàn)中,本文對(duì)比了使用強(qiáng)化學(xué)習(xí)與隨機(jī)搜索在協(xié)同設(shè)計(jì)中的搜索過(guò)程,此兩種方法都以尋找更高的網(wǎng)絡(luò)結(jié)構(gòu)和對(duì)應(yīng)硬件配置為目標(biāo)。此強(qiáng)化學(xué)習(xí)搜索算法采用了REINFORCE 算法[19]進(jìn)行更新,參數(shù)更新采用Adam 優(yōu)化器,其學(xué)習(xí)率為0.0035。由于此協(xié)同設(shè)計(jì)為多目標(biāo)優(yōu)化,在式(2)中,可以設(shè)定不同的α1、ω1、α2和ω2系數(shù)使得搜索結(jié)果偏向不同的優(yōu)化目標(biāo),如精度最高、延遲最低或精度/能耗綜合得分最高。因此,本文設(shè)計(jì)了2 種不同的reward 函數(shù),以使搜索結(jié)果偏向不同的設(shè)計(jì)目標(biāo)。圖9(a)針對(duì)DNN 模型精度和能耗進(jìn)行權(quán)衡的場(chǎng)景,也就是需要更高的精度/能耗綜合得分目標(biāo)下,使用強(qiáng)化學(xué)習(xí)方法進(jìn)行搜索獲得的結(jié)果。通過(guò)設(shè)定式(2)中的參數(shù),具體為α1=0.6、ω1=-0.4、α2=0.3 和ω2=-0.2。可以看出,隨著搜索迭代,其搜索區(qū)域逐漸向Pareto 曲線靠近。同樣,在圖9(b)中,根據(jù)DNN 模型精度/延遲進(jìn)行權(quán)衡的場(chǎng)景(設(shè)定參數(shù)為α1=0.3、ω1=-0.3、α2=0.6 和ω2=-0.4),其搜索結(jié)果也不斷朝著精度/延遲Pareto曲線區(qū)域靠近,證明了基于強(qiáng)化學(xué)習(xí)的搜索策略能根據(jù)用戶需求設(shè)定,自動(dòng)朝著具有較高reward 的多目標(biāo)區(qū)域移動(dòng),具有自適應(yīng)搜索能力。從圖9(a)和(b)可以看出,相比于隨機(jī)搜索,基于強(qiáng)化學(xué)習(xí)的搜索策略能有更好地適應(yīng)此大空間搜索問(wèn)題,在多次迭代過(guò)程中逐漸找到具有最高的reward 的協(xié)同設(shè)計(jì)方案。
圖9 不同目標(biāo)設(shè)定下的搜索過(guò)程示意
最后,本文將此單階段協(xié)同設(shè)計(jì)方案與之前的兩階段設(shè)計(jì)方案進(jìn)行了對(duì)比。為了進(jìn)行公平比較,選擇現(xiàn)有的具有較高精度的DNN 模型[7,18,21-24]。對(duì)每一個(gè)對(duì)比模型,在統(tǒng)一的加速器設(shè)計(jì)空間中,枚舉所有可能的加速器配置,并選擇最優(yōu)配置下的結(jié)果作為對(duì)比。對(duì)于單階段協(xié)同設(shè)計(jì)方案,由于精度和性能預(yù)測(cè)器存在一些偏差,對(duì)最終選擇結(jié)果有一定影響,為此本實(shí)驗(yàn)首先用5×106次迭代完成搜索,然后選擇搜索過(guò)程中reward 最高的前10 個(gè)協(xié)同設(shè)計(jì)方案結(jié)果,對(duì)其中每一個(gè)網(wǎng)絡(luò)單獨(dú)訓(xùn)練獲得準(zhǔn)確精度,最后從這10 個(gè)協(xié)同設(shè)計(jì)方案中選取綜合結(jié)果最優(yōu)的一組作為代表。表2 展示了協(xié)同設(shè)計(jì)搜索相對(duì)之前兩階段設(shè)計(jì)方案的性能提升結(jié)果。作為對(duì)比,ACC/Latency 代表了本方案在精度/延遲權(quán)衡情況下的搜索結(jié)果,與之前兩階段方案相比,在同精度情況下,本文提出的方案實(shí)現(xiàn)最低0.77 ms 的延遲。同樣,ACC/Energy 代表了本方案在精度/能耗權(quán)衡情況下的搜索結(jié)果,與之前方案相比,在同精度情況下,本文提出的方案實(shí)現(xiàn)了最低7.5 mJ 的能耗。圖10展示了與之前兩階段設(shè)計(jì)方案相比,在同精度情況下,其平均能耗大約降低40%,最高延遲降低60%左右??梢宰C明,更大的聯(lián)合設(shè)計(jì)空間,可以進(jìn)一步提升AI 系統(tǒng)的性能;同時(shí)通過(guò)縮減搜索空間、提升搜索效率方法,對(duì)針對(duì)不同設(shè)計(jì)約束實(shí)現(xiàn)自動(dòng)化搜索可以進(jìn)一步降低人工開(kāi)銷(xiāo)。
表2 不同設(shè)計(jì)方法結(jié)果對(duì)比
圖10 在同精度設(shè)計(jì)約束下,不同設(shè)計(jì)方案結(jié)果與最優(yōu)延遲和最優(yōu)能耗結(jié)果的相對(duì)比例
本文在已有的兩階段協(xié)同設(shè)計(jì)方法基礎(chǔ)上,提出了一種直接在DNN/加速器協(xié)同設(shè)計(jì)空間中進(jìn)行自動(dòng)化搜索的框架,以進(jìn)一步提升AI 系統(tǒng)的性能,并減少人工開(kāi)銷(xiāo)。針對(duì)候選協(xié)同設(shè)計(jì)點(diǎn)評(píng)估開(kāi)銷(xiāo)巨大的問(wèn)題,設(shè)計(jì)了基于HyperNet 的網(wǎng)絡(luò)精度評(píng)估方法,每一個(gè)候選DNN 模型可直接從HyperNet 中繼承權(quán)重以避免昂貴的訓(xùn)練開(kāi)銷(xiāo);同時(shí)采用高斯過(guò)程模型對(duì)硬件設(shè)計(jì)性能進(jìn)行預(yù)測(cè),減少了整體的評(píng)估開(kāi)銷(xiāo)。針對(duì)聯(lián)合設(shè)計(jì)搜索空間巨大問(wèn)題,分析設(shè)計(jì)序列的相關(guān)性,利用LSTM 來(lái)生成協(xié)同設(shè)計(jì)序列并使用RL 來(lái)進(jìn)行搜索。這些方法能加快性能評(píng)估并顯著提高搜索效率。實(shí)驗(yàn)證明,在基于Eyeriss 的加速器結(jié)構(gòu)和Cifar10 數(shù)據(jù)集上采用此協(xié)同設(shè)計(jì)方法,能在單卡GPU 上12 h 內(nèi)完成整個(gè)搜索。與之前的兩階段設(shè)計(jì)方法相對(duì)比,此協(xié)同設(shè)計(jì)方法在同精度設(shè)計(jì)要求下,能實(shí)現(xiàn)平均近40%的能耗降低。