国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于RISC-V架構(gòu)的強(qiáng)化學(xué)習(xí)容器化方法研究 *

2021-03-01 03:33徐子晨王玉皞
關(guān)鍵詞:虛擬化交叉容器

徐子晨,崔 傲,王玉皞,劉 韜

(南昌大學(xué)信息工程學(xué)院,江西 南昌 330031)

1 引言

隨著登納德縮放定律和摩爾定律的終結(jié),標(biāo)準(zhǔn)微處理器性能提升的減速已成為了既定事實(shí),體系結(jié)構(gòu)在新的黃金時(shí)代需要尋求新的前進(jìn)方向[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],將會(huì)應(yīng)用在可穿戴設(shè)備、智能家居、機(jī)器人、自動(dòng)駕駛和工業(yè)裝置等領(lǐng)域的計(jì)算設(shè)備中[5],在邊緣微設(shè)備的應(yīng)用中具有廣闊的前景。

機(jī)器學(xué)習(xí)的研究在近些年來的被關(guān)注度越來越高,尤其是在深度學(xué)習(xí)領(lǐng)域,各種深層網(wǎng)絡(luò)模型層出不窮,在計(jì)算機(jī)視覺、語音識別和自然語言處理等領(lǐng)域的應(yīng)用也越來越密集。構(gòu)建一個(gè)深度神經(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)境中部署模型。機(jī)器學(xué)習(xí)可分為監(jiān)督學(xué)習(xí)、無監(jiān)督學(xué)習(xí)和強(qiáng)化學(xué)習(xí),近年來,深度強(qiáng)化學(xué)習(xí)Deep RL(Deep Reinforcement Learning)在自動(dòng)駕駛、連續(xù)控制等領(lǐng)域的表現(xiàn)優(yōu)異[6],但深度強(qiáng)化學(xué)習(xí)中的智能體訓(xùn)練時(shí)間長、計(jì)算力需求大,已成為限制深度強(qiáng)化學(xué)習(xí)進(jìn)一步發(fā)展的瓶頸之一。強(qiáng)化學(xué)習(xí)的訓(xùn)練過程中帶有大量的循環(huán),適合在支持亂序執(zhí)行的RISC-V處理器上進(jìn)行加速。因此,在基于RISC-V指令架構(gòu)的平臺上構(gòu)建深度強(qiáng)化學(xué)習(xí)模型,探索潛在的計(jì)算加速具有十分重要的意義。

深度學(xué)習(xí)模型的快速部署和推理應(yīng)用是RISC-V架構(gòu)面臨的一個(gè)新挑戰(zhàn)。目前傳統(tǒng)的基于Python的深度學(xué)習(xí)框架(TensorFlow、PyTorch和MXNet等)尚不支持RISC-V指令架構(gòu)。欲在RISC-V平臺上執(zhí)行一個(gè)深度神經(jīng)網(wǎng)絡(luò)模型的推理過程,研究人員往往需要構(gòu)建復(fù)雜的交叉編譯工具鏈,修改深度學(xué)習(xí)庫中特定的機(jī)器源代碼,自定義指令集拓展[7],不利于模型快速部署和優(yōu)化。我們希望在RISC-V平臺上探索一種快速部署模型方式,為深度強(qiáng)化學(xué)習(xí)應(yīng)用的加速提供新思路。

快速部署的解決方案首推虛擬化技術(shù)。傳統(tǒng)的虛擬化技術(shù)通過虛擬機(jī)監(jiān)視器VMM(Virtual Machine Monitor或稱為Hypervisor)實(shí)現(xiàn),允許在宿主機(jī)設(shè)備上運(yùn)行多個(gè)異構(gòu)的體系結(jié)構(gòu)應(yīng)用,為用戶提供抽象、虛擬的硬件環(huán)境。使用Hypervisor實(shí)現(xiàn)的虛擬化產(chǎn)品有VMware Workstation和Virtual PC等。Hypervisor提供了良好的跨平臺兼容性,但在RISC-V架構(gòu)上直接使用虛擬化技術(shù)有以下幾個(gè)問題:(1)每個(gè)虛擬機(jī)都需要運(yùn)行一個(gè)完整的操作系統(tǒng)和大量的應(yīng)用程序;(2)資源占用多;(3)運(yùn)行響應(yīng)慢[8]。在實(shí)際開發(fā)環(huán)境中,我們更關(guān)注自己部署的應(yīng)用程序。其次,端設(shè)備上的硬件資源可能有限,用戶需要使用在操作系統(tǒng)層面實(shí)現(xiàn)的更加輕量級的虛擬化技術(shù),在提供高質(zhì)量的虛擬環(huán)境的同時(shí),降低對系統(tǒng)性能的影響。在云計(jì)算框架中,面向輕量級軟件虛擬化,Pahl[9]提出了容器化的解決方案。容器化技術(shù)通過命名空間(Namespace,表示一個(gè)標(biāo)識符的可見范圍)為每個(gè)容器提供特定的命名空間,對進(jìn)程實(shí)現(xiàn)隔離,相對于傳統(tǒng)的虛擬機(jī),容器化技術(shù)具有更少的系統(tǒng)占用,更快的啟動(dòng)速度和更高的資源利用率。Docker是目前最為常用的容器技術(shù),在容器的基礎(chǔ)上從文件系統(tǒng)、網(wǎng)絡(luò)互聯(lián)到進(jìn)程隔離等進(jìn)行了進(jìn)一步的封裝,極大簡化了容器的創(chuàng)建和維護(hù),使得 Docker 技術(shù)比虛擬機(jī)技術(shù)更為輕便、快捷。但是,Docker尚不支持RISC-V架構(gòu),使用容器技術(shù)在RISC-V平臺上實(shí)現(xiàn)模型的快速部署是一個(gè)亟待解決的問題。

本文針對強(qiáng)化學(xué)習(xí)這一領(lǐng)域,對基于RISC-V架構(gòu)的端設(shè)備上的強(qiáng)化學(xué)習(xí)容器化方法進(jìn)行研究。首先,通過采用容器化技術(shù)減少上層軟件構(gòu)建虛擬化代價(jià),去除冗余中間件,定制命名空間隔離特定進(jìn)程,有效提升學(xué)習(xí)任務(wù)資源利用率,實(shí)現(xiàn)模型訓(xùn)練快速執(zhí)行;其次,利用RISC-V指令集的特征進(jìn)一步優(yōu)化上層神經(jīng)網(wǎng)絡(luò)模型,優(yōu)化強(qiáng)化學(xué)習(xí)效率;最后,實(shí)現(xiàn)整體優(yōu)化和容器化方法系統(tǒng)原型,并通過多種基準(zhǔn)測試集完成系統(tǒng)原型性能評估。在原型系統(tǒng)實(shí)現(xiàn)里,本文使用QEMU(Quick Emulator)模擬器仿真的RISC-V指令架構(gòu)作為實(shí)驗(yàn)平臺,疊進(jìn)式設(shè)計(jì)、實(shí)現(xiàn)和測試多種強(qiáng)化學(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é)對初步的實(shí)驗(yàn)結(jié)果進(jìn)行評估;最后一節(jié)總結(jié)目前得到的結(jié)論以及工作的不足之處。

2 相關(guān)工作

2.1 虛擬化技術(shù)

虛擬化技術(shù)是在一臺主機(jī)上運(yùn)行多個(gè)進(jìn)程,將硬件資源(包括計(jì)算機(jī)的硬件資源、存儲(chǔ)設(shè)備和網(wǎng)絡(luò)資源等),抽象為虛擬邏輯對象的技術(shù)。虛擬化技術(shù)包括平臺虛擬化、硬件虛擬化和應(yīng)用程序虛擬化等,平臺虛擬化技術(shù)允許在宿主機(jī)設(shè)備中運(yùn)行多個(gè)異構(gòu)的體系結(jié)構(gòu)應(yīng)用,通過虛擬機(jī)監(jiān)視器VMM為用戶提供抽象、虛擬的硬件環(huán)境。Popek等人[10]為將系統(tǒng)軟件視為VMM定義了3個(gè)基本特征:(1)保真。VMM上的軟件的執(zhí)行與硬件上的執(zhí)行相同,除非定時(shí)影響。(2)性能。絕大多數(shù)虛擬機(jī)指令由硬件執(zhí)行,而無需VMM干預(yù)。(3)安全。VMM管理所有硬件資源。VMM通過內(nèi)核代碼的二進(jìn)制翻譯實(shí)現(xiàn)虛擬化,在宿主機(jī)和虛擬機(jī)之間添加一層中間層,將宿主機(jī)處理器的指令代碼轉(zhuǎn)換、翻譯成目標(biāo)處理器的指令,捕獲文件執(zhí)行時(shí)所需的系統(tǒng)調(diào)用。VMware Workstation、Virtual PC和QEMU等均采用這種方法實(shí)現(xiàn)硬件的虛擬化。Adams等人[11]對x86架構(gòu)下的軟硬件虛擬化技術(shù)進(jìn)行了比較,得出硬件VMM的性能通常比純軟件VMM的性能低的結(jié)論。硬件虛擬化技術(shù)不具備性能優(yōu)勢的原因主要有2個(gè):(1)它不支持內(nèi)存管理單元MMU(Memory Management Unit)虛擬化。(2)它無法與用于MMU虛擬化的現(xiàn)有軟件技術(shù)共存。Shuja等人[12]根據(jù)ARM架構(gòu)下移動(dòng)虛擬化的硬件支持的最新進(jìn)展,調(diào)查了基于軟件和硬件的移動(dòng)虛擬化技術(shù),并介紹了CPU、內(nèi)存、I/O、中斷和網(wǎng)絡(luò)接口等在移動(dòng)設(shè)備中虛擬化面臨的挑戰(zhàn)和問題。他們的研究最后提出,在資源受限的移動(dòng)設(shè)備上實(shí)施基于CPU的虛擬化解決方案會(huì)占用大量CPU周期和內(nèi)存空間,而使用靜態(tài)二進(jìn)制轉(zhuǎn)換實(shí)現(xiàn)虛擬化的解決方案開銷更低。針對資源有限的邊緣設(shè)備必須使用資源有效的技術(shù)來解決上述問題。Bernstein[13]介紹了Docker和Kubernetes,前者是一個(gè)開源項(xiàng)目,可以實(shí)現(xiàn)Linux應(yīng)用程序的自動(dòng)化快速部署,后者是一個(gè)用于Docker容器的開源集群管理器。

2.2 基于RISC-V架構(gòu)的加速和優(yōu)化

在RISC-V平臺上有關(guān)深度學(xué)習(xí)的工作大多是將深度學(xué)習(xí)的計(jì)算負(fù)載(卷積、激活和池化等)從RISC-V處理器轉(zhuǎn)移到專用的硬件加速器上[7,14,15],采用軟硬件協(xié)同設(shè)計(jì)的方法加速深度神經(jīng)網(wǎng)絡(luò)模型推理計(jì)算。這種方法通常需要根據(jù)特定用途設(shè)計(jì)專用的硬件加速器,同時(shí)需要相應(yīng)的自定義函數(shù)庫、編譯器等工具鏈。

在RISC-V平臺上部署模型最簡單的方法是直接在RISC-V上編譯深度神經(jīng)網(wǎng)絡(luò)模型,但由于硬件資源和模型性能存在限制,實(shí)際開發(fā)中通常采用交叉編譯的方式來部署模型。Kong[16]提出了一個(gè)可以在RISC-V硬件平臺(FPGA、QEMU模擬器等)上部署深度神經(jīng)網(wǎng)絡(luò)模型的計(jì)算框架RISC-V 人工智能框架AIRV(AI on RISC-V),允許在RISC-V平臺而不是硬件加速器上運(yùn)行深度神經(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上進(jìn)行了驗(yàn)證。這種方法支持在RISC-V平臺上部署多種網(wǎng)絡(luò)模型,實(shí)驗(yàn)結(jié)果表明,使用這種方法可以將向處理器提交的指令數(shù)減少至直接編譯方法的1/8。Vega等人[17]提出一種RISC-V I/O虛擬化RV-IOV(RISC-V I/O Virtualization)的硬件,解決了部署Rocket內(nèi)核時(shí)的資源限制問題。Rocket Chip是一個(gè)開源的System-on-Chip設(shè)計(jì)生成器,可生成支持RISC-V 指令集的通用處理器核心,并提供有序核心生成器(Rocket)和無序核心生成器(BOOM)[18]。RV-IOV使用I/O虛擬化技術(shù)將Rocket內(nèi)核與主機(jī)解耦,從而可以利用ASIC或更大規(guī)模的FPGA實(shí)現(xiàn)內(nèi)核。

2.3 深度強(qiáng)化學(xué)習(xí)

強(qiáng)化學(xué)習(xí)RL(Reinforce Learning)和監(jiān)督學(xué)習(xí)、無監(jiān)督學(xué)習(xí)都是機(jī)器學(xué)習(xí)任務(wù)的一種,與監(jiān)督學(xué)習(xí)和無監(jiān)督學(xué)習(xí)任務(wù)相比,強(qiáng)化學(xué)習(xí)強(qiáng)調(diào)智能體(Agent)在與環(huán)境(Environment)的交互中學(xué)習(xí),利用評價(jià)性的反饋信號實(shí)現(xiàn)決策的優(yōu)化[19]。強(qiáng)化學(xué)習(xí)的主要過程為:智能體在環(huán)境中學(xué)習(xí),根據(jù)環(huán)境的狀態(tài)(State),執(zhí)行動(dòng)作(Action),并根據(jù)環(huán)境的反饋(Reward)做出更好的決策。強(qiáng)化學(xué)習(xí)的馬爾可夫決策過程可以表示為:

M=〈S,A,Ps,a,R〉

(1)

其中,S表示有限狀態(tài)集合,s表示某個(gè)特定狀態(tài),s∈S;A表示有限動(dòng)作集合,a表示某個(gè)特定動(dòng)作,a∈A;轉(zhuǎn)移模型:T(S,a,S′)~Pr(s′|s,a):根據(jù)當(dāng)前狀態(tài)s和動(dòng)作a預(yù)測下一個(gè)狀態(tài)s′,這里的Pr表示從s采取行動(dòng)a轉(zhuǎn)移到s′的概率;獎(jiǎng)勵(lì)R(s,a)=E[Rt+1|s,a]表示Agent采取某個(gè)動(dòng)作后的即時(shí)獎(jiǎng)勵(lì),它還有R(s,a,s′)和R(s)等表現(xiàn)形式,采用不同的形式,其意義略有不同。

強(qiáng)化學(xué)習(xí)可以分為基于值函數(shù)的強(qiáng)化學(xué)習(xí)和基于策略的強(qiáng)化學(xué)習(xí)?;谥岛瘮?shù)的強(qiáng)化學(xué)習(xí)算法包括Q-learning和Deep Q-learning等,基于策略的強(qiáng)化學(xué)習(xí)算法包括策略梯度等[20]。

3 RISC-V容器化方法

本文提出了一種RISC-V容器化方法,在其原型系統(tǒng)設(shè)計(jì)中,使用QEMU作為容器化引擎,定制命名空間隔離特定進(jìn)程,在操作系統(tǒng)級別實(shí)現(xiàn)容器化。圖1展示了原型系統(tǒng)的整體架構(gòu),左邊是傳統(tǒng)的使用Hypervisor的虛擬機(jī)架構(gòu),右邊是容器化架構(gòu)。原型系統(tǒng)使用QEMU模擬RISC-V處理器內(nèi)核作為實(shí)驗(yàn)硬件平臺,在RISC-V處理器上運(yùn)行Linux系統(tǒng),并安裝QEMU。

Figure 1 Architecture of the prototype system

QEMU是一個(gè)具有跨平臺的特性、可執(zhí)行硬件虛擬化的開源托管虛擬機(jī),可通過純軟件方式實(shí)現(xiàn)硬件的虛擬化,模擬外部硬件,為用戶提供抽象、虛擬的硬件環(huán)境。QEMU既可實(shí)現(xiàn)全系統(tǒng)硬件虛擬化,也可在User Mode下通過為每個(gè)容器提供特定的命名空間實(shí)現(xiàn)容器化設(shè)計(jì)。在 User Mode 下,QEMU不會(huì)仿真所有硬件,而是通過內(nèi)核代碼的TCG(Tiny Code Generator)模塊對異構(gòu)應(yīng)用的二進(jìn)制代碼進(jìn)行翻譯和轉(zhuǎn)換。異構(gòu)文件在執(zhí)行時(shí),通過binfmt_misc識別可執(zhí)行文件格式并傳遞至QEMU。binfmt_misc是Linux內(nèi)核的一種功能,它允許識別任意可執(zhí)行文件格式,并將其傳遞給特定的用戶空間應(yīng)用程序,如仿真器和虛擬機(jī)。QEMU將注冊的異構(gòu)二進(jìn)制程序攔截、轉(zhuǎn)換成本地指令架構(gòu)代碼,同時(shí)按需從目標(biāo)架構(gòu)系統(tǒng)調(diào)用轉(zhuǎn)換成宿主機(jī)架構(gòu)系統(tǒng)調(diào)用,并將其轉(zhuǎn)發(fā)至宿主機(jī)內(nèi)核。TCG 定義了一系列IR(Intermediate Representation),將已經(jīng)翻譯的代碼塊放在轉(zhuǎn)換緩存中,并通過跳轉(zhuǎn)指令將源處理器的指令集和目標(biāo)處理器的指令集鏈接在一起。當(dāng)Hypervisor執(zhí)行代碼時(shí),存放于轉(zhuǎn)換緩存中的鏈接指令可以跳轉(zhuǎn)到指定的代碼塊,目標(biāo)二進(jìn)制代碼可不斷調(diào)用已翻譯代碼塊來運(yùn)行,直到需要翻譯新塊為止。在執(zhí)行的過程中,如果遇到了需要翻譯的代碼塊,執(zhí)行會(huì)暫停并跳回到Hypervisor,Hypervisor使用和協(xié)調(diào)TCG對需要進(jìn)行二進(jìn)制翻譯的源處理器指令集進(jìn)行轉(zhuǎn)換和翻譯并存儲(chǔ)到轉(zhuǎn)換緩存中。圖2為TCG的工作示意圖。

Figure 2 Tiny Code Generator translation process

4 性能評估和分析

4.1 實(shí)驗(yàn)設(shè)計(jì)

實(shí)驗(yàn)設(shè)計(jì)使用 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組對照實(shí)驗(yàn):(1)交叉編譯;(2)Hypervisor虛擬機(jī);(3)容器化方法。首先在x86平臺上構(gòu)建強(qiáng)化學(xué)習(xí)RL模型,實(shí)驗(yàn)(1)使用交叉編譯的方式[7, 16]部署深度學(xué)習(xí)網(wǎng)絡(luò)模型。部署過程中需要對每個(gè)模型單獨(dú)配置環(huán)境,修改強(qiáng)化學(xué)習(xí)庫函數(shù),構(gòu)建交叉編譯工具鏈。實(shí)驗(yàn)(2)使用Hypervisor虛擬機(jī)的方式,使用QEMU在RISC-V平臺上進(jìn)行全系統(tǒng)模擬,在虛擬機(jī)上安裝基于x86架構(gòu)的操作系統(tǒng),配置強(qiáng)化學(xué)習(xí)模型訓(xùn)練環(huán)境。實(shí)驗(yàn)(3)采用本文提出的容器化方法,使用QEMU User Mode在容器化的進(jìn)程中執(zhí)行基于x86架構(gòu)的模型,模型文件需將運(yùn)行所需的依賴庫封裝至二進(jìn)制可執(zhí)行文件,實(shí)現(xiàn)模型訓(xùn)練快速執(zhí)行。

Figure 3 Three processes for deploying a deep neural network model on a RISC-V platform

4.2 強(qiáng)化學(xué)習(xí)算法

強(qiáng)化學(xué)習(xí)在自動(dòng)駕駛、連續(xù)控制等領(lǐng)域的表現(xiàn)甚至可以和人類相媲美[6]。圖4展示了在實(shí)驗(yàn)過程中使用強(qiáng)化學(xué)習(xí)算法解決連續(xù)控制領(lǐng)域的經(jīng)典問題——Cart-Pole模型:木棍在一個(gè)可移動(dòng)的小車上豎立,通過學(xué)習(xí)決定小車的位置,使木棍在小車上豎立的時(shí)間盡量長。本節(jié)在x86平臺上使用PyTorch[21]構(gòu)建深度神經(jīng)網(wǎng)絡(luò)模型,在Gym[22]環(huán)境中模擬Cart-Pole模型的訓(xùn)練,并部署在RISC-V實(shí)驗(yàn)平臺上。基準(zhǔn)測試集中的強(qiáng)化學(xué)習(xí)算法包括:(1)隨機(jī)代理(Random Policy);(2)交叉熵(Cross-entropy);(3)策略梯度(Policy Gradient)[20],疊進(jìn)式設(shè)計(jì)、實(shí)現(xiàn)、測試了多種強(qiáng)化學(xué)習(xí)優(yōu)化算法,完成原型系統(tǒng)的性能評估。

Figure 4 Cart-Pole model

使用隨機(jī)代理訓(xùn)練的模型不會(huì)收斂,只是記錄執(zhí)行一定步數(shù)后的獎(jiǎng)勵(lì)(Reward)總和,木棍會(huì)在小車上作隨機(jī)方向運(yùn)動(dòng),無法在小車上保持豎直。交叉熵算法可以實(shí)現(xiàn)一個(gè)穩(wěn)定收斂的模型,基本思想是:使用當(dāng)前策略(從一些隨機(jī)的初始策略開始)對事件進(jìn)行采樣,并使用本文策略將最成功的樣本的負(fù)面對數(shù)可能性最小化,恰好等于最小化交叉熵。具體做法是:首先,在環(huán)境和模型上運(yùn)行N個(gè)輪次(Episode),每個(gè)輪次都是從開始到結(jié)束執(zhí)行一次算法,計(jì)算每個(gè)輪次的獎(jiǎng)勵(lì)總和并確定一個(gè)獎(jiǎng)勵(lì)邊界(如70%);其次,舍棄所有低于邊界值的輪次;最后,在剩余的輪次中進(jìn)行訓(xùn)練;重復(fù)上述步驟直到對結(jié)果滿意為止?;诓呗蕴荻鹊挠?xùn)練和基于交叉熵的訓(xùn)練相比,在輪次的分割中具有更細(xì)的粒度。策略梯度的基本原理是通過反饋調(diào)整策略:在得到正向獎(jiǎng)勵(lì)時(shí),提高相應(yīng)動(dòng)作的概率;得到負(fù)向獎(jiǎng)勵(lì)時(shí),降低相應(yīng)動(dòng)作的概率。策略梯度具有以下優(yōu)點(diǎn):(1)更好的收斂性;(2)適合高維度或連續(xù)狀態(tài)空間;(3)不必計(jì)算復(fù)雜的價(jià)值函數(shù)。

4.3 實(shí)驗(yàn)結(jié)果

本節(jié)首先進(jìn)行了交叉編譯、Hypervisor虛擬機(jī)和容器化方法的性能比較實(shí)驗(yàn)。圖5展示了隨機(jī)代理、交叉熵和策略梯度算法在3種部署方式下的不同性能表現(xiàn),比較了強(qiáng)化學(xué)習(xí)模型在3種方式下的模型訓(xùn)練時(shí)間。其中,交叉編譯方式運(yùn)行的模型訓(xùn)練時(shí)間最短;Hypervisor虛擬機(jī)方式運(yùn)行模型的時(shí)間最長,和交叉編譯方式相比大約增加了100倍以上的模型訓(xùn)練時(shí)間;容器化方法的模型訓(xùn)練時(shí)間居于二者之間,比交叉編譯方式約增加了10倍以上的模型訓(xùn)練時(shí)間。

Figure 5 Performance comparison of different algorithms under three processes

圖6展示了隨機(jī)代理、交叉熵和策略梯度算法在3種方式下部署模型需要修改的代碼行數(shù)。在所有的算法中,交叉編譯方式除了對模型本身文件進(jìn)行修改外,還需要修改深度學(xué)習(xí)模型依賴庫(如Numpy,Scipy和Gym等)中的函數(shù),修改代碼數(shù)量最多;使用Hypervisor虛擬機(jī)方式只需對模型本身文件進(jìn)行修改,所需修改的代碼量最少;容器化技術(shù)需要將深度學(xué)習(xí)模型文件和所需依賴庫進(jìn)行封裝,無需對庫函數(shù)進(jìn)行修改,和Hypervisor虛擬機(jī)相比增加了約40%的代碼。

Figure 6 Number of code lines to be modified when deploying model

本節(jié)進(jìn)一步對端到端的模型訓(xùn)練和運(yùn)行時(shí)延進(jìn)行了分析,如圖7所示。3種部署流程下建立模型的時(shí)間相同,部署到RISC-V指令架構(gòu)的實(shí)驗(yàn)平臺的過程中,交叉編譯的方式耗費(fèi)時(shí)間最多,Hypervisor虛擬機(jī)方式耗費(fèi)的時(shí)間最少。和虛擬機(jī)方式相比,容器化方式在模型部署過程中多耗費(fèi)了約30%的時(shí)間開銷;和交叉編譯方式相比,減少了約85%的時(shí)間開銷。

Figure 7 Comparing the total time to build the model,deploy the model in RISC-V,and train the model under three workflows

4.4 評估分析

圖8綜合了圖5~圖7的實(shí)驗(yàn)結(jié)果,其中,X軸表示模型部署時(shí)間,Y軸表示模型訓(xùn)練時(shí)間,氣泡大小表示模型部署包括的代碼數(shù)量。從圖8中可以看出,容器化方法在3個(gè)指標(biāo)上均處于中間位置。和交叉編譯的方式相比,容器化方法付出了約10倍的性能代價(jià),減少了85%的模型部署時(shí)間和95%以上的代碼數(shù)量;和虛擬機(jī)的方式相比,僅增加了約30%的模型部署時(shí)間和約40%的代碼數(shù)量,減少了100倍的模型訓(xùn)練時(shí)間,大幅提升了模型性能。

Figure 8 Consolidated experimental

初步的實(shí)驗(yàn)結(jié)果表明,使用交叉編譯方式部署模型雖然可以得到最高的模型性能,但部署周期最長,這是因?yàn)樵谝浦材P偷倪^程中需要對庫中所有特定的機(jī)器源代碼進(jìn)行修改;在設(shè)置完畢虛擬機(jī)環(huán)境后,Hypervisor虛擬機(jī)方式可以大幅減少模型部署時(shí)間的消耗,但每次模型訓(xùn)練都需要運(yùn)行完整的虛擬機(jī),加載工作環(huán)境,和交叉編譯方式相比會(huì)帶來額外的資源占用;容器化方式和傳統(tǒng)RISC-V架構(gòu)下交叉編譯深度神經(jīng)網(wǎng)絡(luò)模型的方法和使用Hypervisor虛擬機(jī)的方式相比,僅付出相對較小的額外性能代價(jià),在近似的部署時(shí)間內(nèi),可實(shí)現(xiàn)更多、更復(fù)雜的深度學(xué)習(xí)軟件框架的快速部署和運(yùn)行。因此,容器化方式及其優(yōu)化方法是解決基于RISC-V架構(gòu)的軟件及學(xué)習(xí)模型快速部署的一種有效方法。

4.5 不足與展望

在容器化的流程中,需將模型文件和依賴的庫函數(shù)一同封裝成鏡像文件,但目前的封裝方式較為粗糙,復(fù)雜模型打包后的鏡像文件占用了GB級別的磁盤空間,我們將逐步完善整體工作流程,對模型實(shí)現(xiàn)更細(xì)粒度的封裝,進(jìn)一步減少資源占用。

強(qiáng)化學(xué)習(xí)的計(jì)算包含大量的循環(huán)過程,通過指令的亂序執(zhí)行可以大幅提高指令的并行性,提高計(jì)算效率。未來會(huì)使用支持亂序執(zhí)行的RISC-V處理器核心對強(qiáng)化學(xué)習(xí)的計(jì)算過程進(jìn)行優(yōu)化。

5 結(jié)束語

使用虛擬化技術(shù)可以解決跨平臺的模型快速部署和運(yùn)行問題。但是,傳統(tǒng)的虛擬化技術(shù),例如虛擬機(jī),對原型系統(tǒng)性能要求高,資源占用多,運(yùn)行響應(yīng)慢,往往不適用于RISC-V架構(gòu)的應(yīng)用場景。

本文首先通過容器化技術(shù)減少上層軟件構(gòu)建虛擬化代價(jià),去除冗余中間件,定制命名空間隔離特定進(jìn)程,有效提升學(xué)習(xí)任務(wù)資源利用率,實(shí)現(xiàn)模型訓(xùn)練快速執(zhí)行;其次,利用RISC-V指令集的特征,進(jìn)一步優(yōu)化上層神經(jīng)網(wǎng)絡(luò)模型,提高強(qiáng)化學(xué)習(xí)效率;最后,實(shí)現(xiàn)整體優(yōu)化和容器化方法系統(tǒng)原型,并通過多種基準(zhǔn)測試集完成系統(tǒng)原型性能評估。容器化技術(shù)和在傳統(tǒng)RISC-V架構(gòu)上交叉編譯深度神經(jīng)網(wǎng)絡(luò)模型的方法相比,僅付出相對較小的額外性能代價(jià),就能快速實(shí)現(xiàn)更多、更復(fù)雜的深度學(xué)習(xí)軟件框架的部署和運(yùn)行;與Hypervisor虛擬機(jī)方式相比,基于RISC-V的模型具有近似的部署時(shí)間,并減少了大量的性能損失。初步實(shí)驗(yàn)結(jié)果表明,容器化方式及其優(yōu)化方法是解決基于RISC-V架構(gòu)的軟件和學(xué)習(xí)模型快速部署的一種有效方法。

目前在RISC-V平臺上對各種虛擬化方案性能方面的研究仍有待進(jìn)一步探索,未來將會(huì)對深度神經(jīng)網(wǎng)絡(luò)模型進(jìn)行量化、減枝等操作,針對特定領(lǐng)域?qū)δP瓦M(jìn)行專門優(yōu)化,形成基于RISC-V架構(gòu)的深度神經(jīng)網(wǎng)絡(luò)模型構(gòu)建、鏡像打包、容器化技術(shù)部署的完整流程。

猜你喜歡
虛擬化交叉容器
容器倒置后壓力壓強(qiáng)如何變
難以置信的事情
“六法”巧解分式方程
基于OpenStack虛擬化網(wǎng)絡(luò)管理平臺的設(shè)計(jì)與實(shí)現(xiàn)
對基于Docker的虛擬化技術(shù)的幾點(diǎn)探討
H3C CAS 云計(jì)算管理平臺上虛擬化安全防護(hù)的實(shí)現(xiàn)
連數(shù)
連一連
存儲(chǔ)虛擬化還有優(yōu)勢嗎?
取米
苍南县| 犍为县| 辽宁省| 乌兰浩特市| 卢湾区| 德江县| 宿迁市| 阿巴嘎旗| 乐山市| 即墨市| 保靖县| 渭源县| 内丘县| 霍州市| 平湖市| 濮阳县| 古田县| 云霄县| 安图县| 兴化市| 河津市| 成安县| 韩城市| 常德市| 南陵县| 福鼎市| 宾川县| 云梦县| 阿拉善盟| 措勤县| 嫩江县| 田林县| 应用必备| 青川县| 娱乐| 宿松县| 贡山| 二连浩特市| 商城县| 灵宝市| 新郑市|