徐子晨,崔 傲,王玉皞,劉 韜
(南昌大學(xué)信息工程學(xué)院,江西 南昌 330031)
隨著登納德縮放定律和摩爾定律的終結(jié),標(biāo)準(zhǔn)微處理器性能提升的減速已成為了既定事實,體系結(jié)構(gòu)在新的黃金時代需要尋求新的前進方向[1]。加州大學(xué)伯克利分校提出了RISC-V(RISC Five),即第五代RISC架構(gòu)。RISC-V并非是精簡指令集簡單的版本迭代,和前代相比它最大的優(yōu)勢在于開源和模塊化,允許用戶基于特定需求添加定制化拓展指令集。RISC-V由于其高度的靈活性在工業(yè)界和學(xué)術(shù)界均受到廣泛關(guān)注,推出了一系列支持亂序執(zhí)行的微處理器,如伯克利彈性亂序處理器BROOM(Berkeley Resilient Out-of-Order Machine)等[2-4],將會應(yīng)用在可穿戴設(shè)備、智能家居、機器人、自動駕駛和工業(yè)裝置等領(lǐng)域的計算設(shè)備中[5],在邊緣微設(shè)備的應(yīng)用中具有廣闊的前景。
機器學(xué)習(xí)的研究在近些年來的被關(guān)注度越來越高,尤其是在深度學(xué)習(xí)領(lǐng)域,各種深層網(wǎng)絡(luò)模型層出不窮,在計算機視覺、語音識別和自然語言處理等領(lǐng)域的應(yīng)用也越來越密集。構(gòu)建一個深度神經(jīng)網(wǎng)絡(luò)的工作流程通常包括以下幾步:(1)收集和準(zhǔn)備訓(xùn)練數(shù)據(jù);(2)選擇并優(yōu)化深度學(xué)習(xí)算法;(3)訓(xùn)練并調(diào)整模型;(4)在生產(chǎn)環(huán)境中部署模型。機器學(xué)習(xí)可分為監(jiān)督學(xué)習(xí)、無監(jiān)督學(xué)習(xí)和強化學(xué)習(xí),近年來,深度強化學(xué)習(xí)Deep RL(Deep Reinforcement Learning)在自動駕駛、連續(xù)控制等領(lǐng)域的表現(xiàn)優(yōu)異[6],但深度強化學(xué)習(xí)中的智能體訓(xùn)練時間長、計算力需求大,已成為限制深度強化學(xué)習(xí)進一步發(fā)展的瓶頸之一。強化學(xué)習(xí)的訓(xùn)練過程中帶有大量的循環(huán),適合在支持亂序執(zhí)行的RISC-V處理器上進行加速。因此,在基于RISC-V指令架構(gòu)的平臺上構(gòu)建深度強化學(xué)習(xí)模型,探索潛在的計算加速具有十分重要的意義。
深度學(xué)習(xí)模型的快速部署和推理應(yīng)用是RISC-V架構(gòu)面臨的一個新挑戰(zhàn)。目前傳統(tǒng)的基于Python的深度學(xué)習(xí)框架(TensorFlow、PyTorch和MXNet等)尚不支持RISC-V指令架構(gòu)。欲在RISC-V平臺上執(zhí)行一個深度神經(jīng)網(wǎng)絡(luò)模型的推理過程,研究人員往往需要構(gòu)建復(fù)雜的交叉編譯工具鏈,修改深度學(xué)習(xí)庫中特定的機器源代碼,自定義指令集拓展[7],不利于模型快速部署和優(yōu)化。我們希望在RISC-V平臺上探索一種快速部署模型方式,為深度強化學(xué)習(xí)應(yīng)用的加速提供新思路。
快速部署的解決方案首推虛擬化技術(shù)。傳統(tǒng)的虛擬化技術(shù)通過虛擬機監(jiān)視器VMM(Virtual Machine Monitor或稱為Hypervisor)實現(xiàn),允許在宿主機設(shè)備上運行多個異構(gòu)的體系結(jié)構(gòu)應(yīng)用,為用戶提供抽象、虛擬的硬件環(huán)境。使用Hypervisor實現(xiàn)的虛擬化產(chǎn)品有VMware Workstation和Virtual PC等。Hypervisor提供了良好的跨平臺兼容性,但在RISC-V架構(gòu)上直接使用虛擬化技術(shù)有以下幾個問題:(1)每個虛擬機都需要運行一個完整的操作系統(tǒng)和大量的應(yīng)用程序;(2)資源占用多;(3)運行響應(yīng)慢[8]。在實際開發(fā)環(huán)境中,我們更關(guān)注自己部署的應(yīng)用程序。其次,端設(shè)備上的硬件資源可能有限,用戶需要使用在操作系統(tǒng)層面實現(xiàn)的更加輕量級的虛擬化技術(shù),在提供高質(zhì)量的虛擬環(huán)境的同時,降低對系統(tǒng)性能的影響。在云計算框架中,面向輕量級軟件虛擬化,Pahl[9]提出了容器化的解決方案。容器化技術(shù)通過命名空間(Namespace,表示一個標(biāo)識符的可見范圍)為每個容器提供特定的命名空間,對進程實現(xiàn)隔離,相對于傳統(tǒng)的虛擬機,容器化技術(shù)具有更少的系統(tǒng)占用,更快的啟動速度和更高的資源利用率。Docker是目前最為常用的容器技術(shù),在容器的基礎(chǔ)上從文件系統(tǒng)、網(wǎng)絡(luò)互聯(lián)到進程隔離等進行了進一步的封裝,極大簡化了容器的創(chuàng)建和維護,使得 Docker 技術(shù)比虛擬機技術(shù)更為輕便、快捷。但是,Docker尚不支持RISC-V架構(gòu),使用容器技術(shù)在RISC-V平臺上實現(xiàn)模型的快速部署是一個亟待解決的問題。
本文針對強化學(xué)習(xí)這一領(lǐng)域,對基于RISC-V架構(gòu)的端設(shè)備上的強化學(xué)習(xí)容器化方法進行研究。首先,通過采用容器化技術(shù)減少上層軟件構(gòu)建虛擬化代價,去除冗余中間件,定制命名空間隔離特定進程,有效提升學(xué)習(xí)任務(wù)資源利用率,實現(xiàn)模型訓(xùn)練快速執(zhí)行;其次,利用RISC-V指令集的特征進一步優(yōu)化上層神經(jīng)網(wǎng)絡(luò)模型,優(yōu)化強化學(xué)習(xí)效率;最后,實現(xiàn)整體優(yōu)化和容器化方法系統(tǒng)原型,并通過多種基準(zhǔn)測試集完成系統(tǒng)原型性能評估。在原型系統(tǒng)實現(xiàn)里,本文使用QEMU(Quick Emulator)模擬器仿真的RISC-V指令架構(gòu)作為實驗平臺,疊進式設(shè)計、實現(xiàn)和測試多種強化學(xué)習(xí)優(yōu)化算法,討論模型在RISC-V平臺上的可移植性和性能表現(xiàn)。
本文的結(jié)構(gòu)如下:第2節(jié)討論RISC-V上虛擬化相關(guān)的工作;第3節(jié)提出了一種RISC-V架構(gòu)下的容器化方法;第4節(jié)對初步的實驗結(jié)果進行評估;最后一節(jié)總結(jié)目前得到的結(jié)論以及工作的不足之處。
虛擬化技術(shù)是在一臺主機上運行多個進程,將硬件資源(包括計算機的硬件資源、存儲設(shè)備和網(wǎng)絡(luò)資源等),抽象為虛擬邏輯對象的技術(shù)。虛擬化技術(shù)包括平臺虛擬化、硬件虛擬化和應(yīng)用程序虛擬化等,平臺虛擬化技術(shù)允許在宿主機設(shè)備中運行多個異構(gòu)的體系結(jié)構(gòu)應(yīng)用,通過虛擬機監(jiān)視器VMM為用戶提供抽象、虛擬的硬件環(huán)境。Popek等人[10]為將系統(tǒng)軟件視為VMM定義了3個基本特征:(1)保真。VMM上的軟件的執(zhí)行與硬件上的執(zhí)行相同,除非定時影響。(2)性能。絕大多數(shù)虛擬機指令由硬件執(zhí)行,而無需VMM干預(yù)。(3)安全。VMM管理所有硬件資源。VMM通過內(nèi)核代碼的二進制翻譯實現(xiàn)虛擬化,在宿主機和虛擬機之間添加一層中間層,將宿主機處理器的指令代碼轉(zhuǎn)換、翻譯成目標(biāo)處理器的指令,捕獲文件執(zhí)行時所需的系統(tǒng)調(diào)用。VMware Workstation、Virtual PC和QEMU等均采用這種方法實現(xiàn)硬件的虛擬化。Adams等人[11]對x86架構(gòu)下的軟硬件虛擬化技術(shù)進行了比較,得出硬件VMM的性能通常比純軟件VMM的性能低的結(jié)論。硬件虛擬化技術(shù)不具備性能優(yōu)勢的原因主要有2個:(1)它不支持內(nèi)存管理單元MMU(Memory Management Unit)虛擬化。(2)它無法與用于MMU虛擬化的現(xiàn)有軟件技術(shù)共存。Shuja等人[12]根據(jù)ARM架構(gòu)下移動虛擬化的硬件支持的最新進展,調(diào)查了基于軟件和硬件的移動虛擬化技術(shù),并介紹了CPU、內(nèi)存、I/O、中斷和網(wǎng)絡(luò)接口等在移動設(shè)備中虛擬化面臨的挑戰(zhàn)和問題。他們的研究最后提出,在資源受限的移動設(shè)備上實施基于CPU的虛擬化解決方案會占用大量CPU周期和內(nèi)存空間,而使用靜態(tài)二進制轉(zhuǎn)換實現(xiàn)虛擬化的解決方案開銷更低。針對資源有限的邊緣設(shè)備必須使用資源有效的技術(shù)來解決上述問題。Bernstein[13]介紹了Docker和Kubernetes,前者是一個開源項目,可以實現(xiàn)Linux應(yīng)用程序的自動化快速部署,后者是一個用于Docker容器的開源集群管理器。
在RISC-V平臺上有關(guān)深度學(xué)習(xí)的工作大多是將深度學(xué)習(xí)的計算負載(卷積、激活和池化等)從RISC-V處理器轉(zhuǎn)移到專用的硬件加速器上[7,14,15],采用軟硬件協(xié)同設(shè)計的方法加速深度神經(jīng)網(wǎng)絡(luò)模型推理計算。這種方法通常需要根據(jù)特定用途設(shè)計專用的硬件加速器,同時需要相應(yīng)的自定義函數(shù)庫、編譯器等工具鏈。
在RISC-V平臺上部署模型最簡單的方法是直接在RISC-V上編譯深度神經(jīng)網(wǎng)絡(luò)模型,但由于硬件資源和模型性能存在限制,實際開發(fā)中通常采用交叉編譯的方式來部署模型。Kong[16]提出了一個可以在RISC-V硬件平臺(FPGA、QEMU模擬器等)上部署深度神經(jīng)網(wǎng)絡(luò)模型的計算框架RISC-V 人工智能框架AIRV(AI on RISC-V),允許在RISC-V平臺而不是硬件加速器上運行深度神經(jīng)網(wǎng)絡(luò)模型的推理過程。此外還證明了相比于直接在RISC-V平臺上編譯網(wǎng)絡(luò)模型,在x86平臺上交叉編譯RISC-V目標(biāo)架構(gòu)的深度神經(jīng)網(wǎng)絡(luò)模型具有更高的資源利用率。Louis等人[7]在RISC-V 指令集中的V矢量拓展模塊基礎(chǔ)上增加一層軟件結(jié)構(gòu),修改了TensorFlow Lite C/C++庫函數(shù),此外還為RISC-V指令集交叉編譯了TensorFlow Lite源碼,并在RISC-V模擬器Spike上進行了驗證。這種方法支持在RISC-V平臺上部署多種網(wǎng)絡(luò)模型,實驗結(jié)果表明,使用這種方法可以將向處理器提交的指令數(shù)減少至直接編譯方法的1/8。Vega等人[17]提出一種RISC-V I/O虛擬化RV-IOV(RISC-V I/O Virtualization)的硬件,解決了部署Rocket內(nèi)核時的資源限制問題。Rocket Chip是一個開源的System-on-Chip設(shè)計生成器,可生成支持RISC-V 指令集的通用處理器核心,并提供有序核心生成器(Rocket)和無序核心生成器(BOOM)[18]。RV-IOV使用I/O虛擬化技術(shù)將Rocket內(nèi)核與主機解耦,從而可以利用ASIC或更大規(guī)模的FPGA實現(xiàn)內(nèi)核。
強化學(xué)習(xí)RL(Reinforce Learning)和監(jiān)督學(xué)習(xí)、無監(jiān)督學(xué)習(xí)都是機器學(xué)習(xí)任務(wù)的一種,與監(jiān)督學(xué)習(xí)和無監(jiān)督學(xué)習(xí)任務(wù)相比,強化學(xué)習(xí)強調(diào)智能體(Agent)在與環(huán)境(Environment)的交互中學(xué)習(xí),利用評價性的反饋信號實現(xiàn)決策的優(yōu)化[19]。強化學(xué)習(xí)的主要過程為:智能體在環(huán)境中學(xué)習(xí),根據(jù)環(huán)境的狀態(tài)(State),執(zhí)行動作(Action),并根據(jù)環(huán)境的反饋(Reward)做出更好的決策。強化學(xué)習(xí)的馬爾可夫決策過程可以表示為:
M=〈S,A,Ps,a,R〉
(1)
其中,S表示有限狀態(tài)集合,s表示某個特定狀態(tài),s∈S;A表示有限動作集合,a表示某個特定動作,a∈A;轉(zhuǎn)移模型:T(S,a,S′)~Pr(s′|s,a):根據(jù)當(dāng)前狀態(tài)s和動作a預(yù)測下一個狀態(tài)s′,這里的Pr表示從s采取行動a轉(zhuǎn)移到s′的概率;獎勵R(s,a)=E[Rt+1|s,a]表示Agent采取某個動作后的即時獎勵,它還有R(s,a,s′)和R(s)等表現(xiàn)形式,采用不同的形式,其意義略有不同。
強化學(xué)習(xí)可以分為基于值函數(shù)的強化學(xué)習(xí)和基于策略的強化學(xué)習(xí)。基于值函數(shù)的強化學(xué)習(xí)算法包括Q-learning和Deep Q-learning等,基于策略的強化學(xué)習(xí)算法包括策略梯度等[20]。
本文提出了一種RISC-V容器化方法,在其原型系統(tǒng)設(shè)計中,使用QEMU作為容器化引擎,定制命名空間隔離特定進程,在操作系統(tǒng)級別實現(xiàn)容器化。圖1展示了原型系統(tǒng)的整體架構(gòu),左邊是傳統(tǒng)的使用Hypervisor的虛擬機架構(gòu),右邊是容器化架構(gòu)。原型系統(tǒng)使用QEMU模擬RISC-V處理器內(nèi)核作為實驗硬件平臺,在RISC-V處理器上運行Linux系統(tǒng),并安裝QEMU。
Figure 1 Architecture of the prototype system
QEMU是一個具有跨平臺的特性、可執(zhí)行硬件虛擬化的開源托管虛擬機,可通過純軟件方式實現(xiàn)硬件的虛擬化,模擬外部硬件,為用戶提供抽象、虛擬的硬件環(huán)境。QEMU既可實現(xiàn)全系統(tǒng)硬件虛擬化,也可在User Mode下通過為每個容器提供特定的命名空間實現(xiàn)容器化設(shè)計。在 User Mode 下,QEMU不會仿真所有硬件,而是通過內(nèi)核代碼的TCG(Tiny Code Generator)模塊對異構(gòu)應(yīng)用的二進制代碼進行翻譯和轉(zhuǎn)換。異構(gòu)文件在執(zhí)行時,通過binfmt_misc識別可執(zhí)行文件格式并傳遞至QEMU。binfmt_misc是Linux內(nèi)核的一種功能,它允許識別任意可執(zhí)行文件格式,并將其傳遞給特定的用戶空間應(yīng)用程序,如仿真器和虛擬機。QEMU將注冊的異構(gòu)二進制程序攔截、轉(zhuǎn)換成本地指令架構(gòu)代碼,同時按需從目標(biāo)架構(gòu)系統(tǒng)調(diào)用轉(zhuǎn)換成宿主機架構(gòu)系統(tǒng)調(diào)用,并將其轉(zhuǎn)發(fā)至宿主機內(nèi)核。TCG 定義了一系列IR(Intermediate Representation),將已經(jīng)翻譯的代碼塊放在轉(zhuǎn)換緩存中,并通過跳轉(zhuǎn)指令將源處理器的指令集和目標(biāo)處理器的指令集鏈接在一起。當(dāng)Hypervisor執(zhí)行代碼時,存放于轉(zhuǎn)換緩存中的鏈接指令可以跳轉(zhuǎn)到指定的代碼塊,目標(biāo)二進制代碼可不斷調(diào)用已翻譯代碼塊來運行,直到需要翻譯新塊為止。在執(zhí)行的過程中,如果遇到了需要翻譯的代碼塊,執(zhí)行會暫停并跳回到Hypervisor,Hypervisor使用和協(xié)調(diào)TCG對需要進行二進制翻譯的源處理器指令集進行轉(zhuǎn)換和翻譯并存儲到轉(zhuǎn)換緩存中。圖2為TCG的工作示意圖。
Figure 2 Tiny Code Generator translation process
實驗設(shè)計使用 QEMU 模擬的RISC-V64位指令架構(gòu)4核處理器,內(nèi)存為2 GB,主頻為1.7 GHz,安裝Linux系統(tǒng)和QEMU。圖3展示了在RISC-V處理器上部署深度神經(jīng)網(wǎng)絡(luò)模型的流程。本節(jié)設(shè)置了3組對照實驗:(1)交叉編譯;(2)Hypervisor虛擬機;(3)容器化方法。首先在x86平臺上構(gòu)建強化學(xué)習(xí)RL模型,實驗(1)使用交叉編譯的方式[7, 16]部署深度學(xué)習(xí)網(wǎng)絡(luò)模型。部署過程中需要對每個模型單獨配置環(huán)境,修改強化學(xué)習(xí)庫函數(shù),構(gòu)建交叉編譯工具鏈。實驗(2)使用Hypervisor虛擬機的方式,使用QEMU在RISC-V平臺上進行全系統(tǒng)模擬,在虛擬機上安裝基于x86架構(gòu)的操作系統(tǒng),配置強化學(xué)習(xí)模型訓(xùn)練環(huán)境。實驗(3)采用本文提出的容器化方法,使用QEMU User Mode在容器化的進程中執(zhí)行基于x86架構(gòu)的模型,模型文件需將運行所需的依賴庫封裝至二進制可執(zhí)行文件,實現(xiàn)模型訓(xùn)練快速執(zhí)行。
Figure 3 Three processes for deploying a deep neural network model on a RISC-V platform
強化學(xué)習(xí)在自動駕駛、連續(xù)控制等領(lǐng)域的表現(xiàn)甚至可以和人類相媲美[6]。圖4展示了在實驗過程中使用強化學(xué)習(xí)算法解決連續(xù)控制領(lǐng)域的經(jīng)典問題——Cart-Pole模型:木棍在一個可移動的小車上豎立,通過學(xué)習(xí)決定小車的位置,使木棍在小車上豎立的時間盡量長。本節(jié)在x86平臺上使用PyTorch[21]構(gòu)建深度神經(jīng)網(wǎng)絡(luò)模型,在Gym[22]環(huán)境中模擬Cart-Pole模型的訓(xùn)練,并部署在RISC-V實驗平臺上。基準(zhǔn)測試集中的強化學(xué)習(xí)算法包括:(1)隨機代理(Random Policy);(2)交叉熵(Cross-entropy);(3)策略梯度(Policy Gradient)[20],疊進式設(shè)計、實現(xiàn)、測試了多種強化學(xué)習(xí)優(yōu)化算法,完成原型系統(tǒng)的性能評估。
Figure 4 Cart-Pole model
使用隨機代理訓(xùn)練的模型不會收斂,只是記錄執(zhí)行一定步數(shù)后的獎勵(Reward)總和,木棍會在小車上作隨機方向運動,無法在小車上保持豎直。交叉熵算法可以實現(xiàn)一個穩(wěn)定收斂的模型,基本思想是:使用當(dāng)前策略(從一些隨機的初始策略開始)對事件進行采樣,并使用本文策略將最成功的樣本的負面對數(shù)可能性最小化,恰好等于最小化交叉熵。具體做法是:首先,在環(huán)境和模型上運行N個輪次(Episode),每個輪次都是從開始到結(jié)束執(zhí)行一次算法,計算每個輪次的獎勵總和并確定一個獎勵邊界(如70%);其次,舍棄所有低于邊界值的輪次;最后,在剩余的輪次中進行訓(xùn)練;重復(fù)上述步驟直到對結(jié)果滿意為止?;诓呗蕴荻鹊挠?xùn)練和基于交叉熵的訓(xùn)練相比,在輪次的分割中具有更細的粒度。策略梯度的基本原理是通過反饋調(diào)整策略:在得到正向獎勵時,提高相應(yīng)動作的概率;得到負向獎勵時,降低相應(yīng)動作的概率。策略梯度具有以下優(yōu)點:(1)更好的收斂性;(2)適合高維度或連續(xù)狀態(tài)空間;(3)不必計算復(fù)雜的價值函數(shù)。
本節(jié)首先進行了交叉編譯、Hypervisor虛擬機和容器化方法的性能比較實驗。圖5展示了隨機代理、交叉熵和策略梯度算法在3種部署方式下的不同性能表現(xiàn),比較了強化學(xué)習(xí)模型在3種方式下的模型訓(xùn)練時間。其中,交叉編譯方式運行的模型訓(xùn)練時間最短;Hypervisor虛擬機方式運行模型的時間最長,和交叉編譯方式相比大約增加了100倍以上的模型訓(xùn)練時間;容器化方法的模型訓(xùn)練時間居于二者之間,比交叉編譯方式約增加了10倍以上的模型訓(xùn)練時間。
Figure 5 Performance comparison of different algorithms under three processes
圖6展示了隨機代理、交叉熵和策略梯度算法在3種方式下部署模型需要修改的代碼行數(shù)。在所有的算法中,交叉編譯方式除了對模型本身文件進行修改外,還需要修改深度學(xué)習(xí)模型依賴庫(如Numpy,Scipy和Gym等)中的函數(shù),修改代碼數(shù)量最多;使用Hypervisor虛擬機方式只需對模型本身文件進行修改,所需修改的代碼量最少;容器化技術(shù)需要將深度學(xué)習(xí)模型文件和所需依賴庫進行封裝,無需對庫函數(shù)進行修改,和Hypervisor虛擬機相比增加了約40%的代碼。
Figure 6 Number of code lines to be modified when deploying model
本節(jié)進一步對端到端的模型訓(xùn)練和運行時延進行了分析,如圖7所示。3種部署流程下建立模型的時間相同,部署到RISC-V指令架構(gòu)的實驗平臺的過程中,交叉編譯的方式耗費時間最多,Hypervisor虛擬機方式耗費的時間最少。和虛擬機方式相比,容器化方式在模型部署過程中多耗費了約30%的時間開銷;和交叉編譯方式相比,減少了約85%的時間開銷。
Figure 7 Comparing the total time to build the model,deploy the model in RISC-V,and train the model under three workflows
圖8綜合了圖5~圖7的實驗結(jié)果,其中,X軸表示模型部署時間,Y軸表示模型訓(xùn)練時間,氣泡大小表示模型部署包括的代碼數(shù)量。從圖8中可以看出,容器化方法在3個指標(biāo)上均處于中間位置。和交叉編譯的方式相比,容器化方法付出了約10倍的性能代價,減少了85%的模型部署時間和95%以上的代碼數(shù)量;和虛擬機的方式相比,僅增加了約30%的模型部署時間和約40%的代碼數(shù)量,減少了100倍的模型訓(xùn)練時間,大幅提升了模型性能。
Figure 8 Consolidated experimental
初步的實驗結(jié)果表明,使用交叉編譯方式部署模型雖然可以得到最高的模型性能,但部署周期最長,這是因為在移植模型的過程中需要對庫中所有特定的機器源代碼進行修改;在設(shè)置完畢虛擬機環(huán)境后,Hypervisor虛擬機方式可以大幅減少模型部署時間的消耗,但每次模型訓(xùn)練都需要運行完整的虛擬機,加載工作環(huán)境,和交叉編譯方式相比會帶來額外的資源占用;容器化方式和傳統(tǒng)RISC-V架構(gòu)下交叉編譯深度神經(jīng)網(wǎng)絡(luò)模型的方法和使用Hypervisor虛擬機的方式相比,僅付出相對較小的額外性能代價,在近似的部署時間內(nèi),可實現(xiàn)更多、更復(fù)雜的深度學(xué)習(xí)軟件框架的快速部署和運行。因此,容器化方式及其優(yōu)化方法是解決基于RISC-V架構(gòu)的軟件及學(xué)習(xí)模型快速部署的一種有效方法。
在容器化的流程中,需將模型文件和依賴的庫函數(shù)一同封裝成鏡像文件,但目前的封裝方式較為粗糙,復(fù)雜模型打包后的鏡像文件占用了GB級別的磁盤空間,我們將逐步完善整體工作流程,對模型實現(xiàn)更細粒度的封裝,進一步減少資源占用。
強化學(xué)習(xí)的計算包含大量的循環(huán)過程,通過指令的亂序執(zhí)行可以大幅提高指令的并行性,提高計算效率。未來會使用支持亂序執(zhí)行的RISC-V處理器核心對強化學(xué)習(xí)的計算過程進行優(yōu)化。
使用虛擬化技術(shù)可以解決跨平臺的模型快速部署和運行問題。但是,傳統(tǒng)的虛擬化技術(shù),例如虛擬機,對原型系統(tǒng)性能要求高,資源占用多,運行響應(yīng)慢,往往不適用于RISC-V架構(gòu)的應(yīng)用場景。
本文首先通過容器化技術(shù)減少上層軟件構(gòu)建虛擬化代價,去除冗余中間件,定制命名空間隔離特定進程,有效提升學(xué)習(xí)任務(wù)資源利用率,實現(xiàn)模型訓(xùn)練快速執(zhí)行;其次,利用RISC-V指令集的特征,進一步優(yōu)化上層神經(jīng)網(wǎng)絡(luò)模型,提高強化學(xué)習(xí)效率;最后,實現(xiàn)整體優(yōu)化和容器化方法系統(tǒng)原型,并通過多種基準(zhǔn)測試集完成系統(tǒng)原型性能評估。容器化技術(shù)和在傳統(tǒng)RISC-V架構(gòu)上交叉編譯深度神經(jīng)網(wǎng)絡(luò)模型的方法相比,僅付出相對較小的額外性能代價,就能快速實現(xiàn)更多、更復(fù)雜的深度學(xué)習(xí)軟件框架的部署和運行;與Hypervisor虛擬機方式相比,基于RISC-V的模型具有近似的部署時間,并減少了大量的性能損失。初步實驗結(jié)果表明,容器化方式及其優(yōu)化方法是解決基于RISC-V架構(gòu)的軟件和學(xué)習(xí)模型快速部署的一種有效方法。
目前在RISC-V平臺上對各種虛擬化方案性能方面的研究仍有待進一步探索,未來將會對深度神經(jīng)網(wǎng)絡(luò)模型進行量化、減枝等操作,針對特定領(lǐng)域?qū)δP瓦M行專門優(yōu)化,形成基于RISC-V架構(gòu)的深度神經(jīng)網(wǎng)絡(luò)模型構(gòu)建、鏡像打包、容器化技術(shù)部署的完整流程。