999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于RISC-V架構的強化學習容器化方法研究 *

2021-03-01 03:33:36徐子晨王玉皞
計算機工程與科學 2021年2期
關鍵詞:深度模型

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

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

1 引言

隨著登納德縮放定律和摩爾定律的終結,標準微處理器性能提升的減速已成為了既定事實,體系結構在新的黃金時代需要尋求新的前進方向[1]。加州大學伯克利分校提出了RISC-V(RISC Five),即第五代RISC架構。RISC-V并非是精簡指令集簡單的版本迭代,和前代相比它最大的優勢在于開源和模塊化,允許用戶基于特定需求添加定制化拓展指令集。RISC-V由于其高度的靈活性在工業界和學術界均受到廣泛關注,推出了一系列支持亂序執行的微處理器,如伯克利彈性亂序處理器BROOM(Berkeley Resilient Out-of-Order Machine)等[2-4],將會應用在可穿戴設備、智能家居、機器人、自動駕駛和工業裝置等領域的計算設備中[5],在邊緣微設備的應用中具有廣闊的前景。

機器學習的研究在近些年來的被關注度越來越高,尤其是在深度學習領域,各種深層網絡模型層出不窮,在計算機視覺、語音識別和自然語言處理等領域的應用也越來越密集。構建一個深度神經網絡的工作流程通常包括以下幾步:(1)收集和準備訓練數據;(2)選擇并優化深度學習算法;(3)訓練并調整模型;(4)在生產環境中部署模型。機器學習可分為監督學習、無監督學習和強化學習,近年來,深度強化學習Deep RL(Deep Reinforcement Learning)在自動駕駛、連續控制等領域的表現優異[6],但深度強化學習中的智能體訓練時間長、計算力需求大,已成為限制深度強化學習進一步發展的瓶頸之一。強化學習的訓練過程中帶有大量的循環,適合在支持亂序執行的RISC-V處理器上進行加速。因此,在基于RISC-V指令架構的平臺上構建深度強化學習模型,探索潛在的計算加速具有十分重要的意義。

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

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

本文針對強化學習這一領域,對基于RISC-V架構的端設備上的強化學習容器化方法進行研究。首先,通過采用容器化技術減少上層軟件構建虛擬化代價,去除冗余中間件,定制命名空間隔離特定進程,有效提升學習任務資源利用率,實現模型訓練快速執行;其次,利用RISC-V指令集的特征進一步優化上層神經網絡模型,優化強化學習效率;最后,實現整體優化和容器化方法系統原型,并通過多種基準測試集完成系統原型性能評估。在原型系統實現里,本文使用QEMU(Quick Emulator)模擬器仿真的RISC-V指令架構作為實驗平臺,疊進式設計、實現和測試多種強化學習優化算法,討論模型在RISC-V平臺上的可移植性和性能表現。

本文的結構如下:第2節討論RISC-V上虛擬化相關的工作;第3節提出了一種RISC-V架構下的容器化方法;第4節對初步的實驗結果進行評估;最后一節總結目前得到的結論以及工作的不足之處。

2 相關工作

2.1 虛擬化技術

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

2.2 基于RISC-V架構的加速和優化

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

在RISC-V平臺上部署模型最簡單的方法是直接在RISC-V上編譯深度神經網絡模型,但由于硬件資源和模型性能存在限制,實際開發中通常采用交叉編譯的方式來部署模型。Kong[16]提出了一個可以在RISC-V硬件平臺(FPGA、QEMU模擬器等)上部署深度神經網絡模型的計算框架RISC-V 人工智能框架AIRV(AI on RISC-V),允許在RISC-V平臺而不是硬件加速器上運行深度神經網絡模型的推理過程。此外還證明了相比于直接在RISC-V平臺上編譯網絡模型,在x86平臺上交叉編譯RISC-V目標架構的深度神經網絡模型具有更高的資源利用率。Louis等人[7]在RISC-V 指令集中的V矢量拓展模塊基礎上增加一層軟件結構,修改了TensorFlow Lite C/C++庫函數,此外還為RISC-V指令集交叉編譯了TensorFlow Lite源碼,并在RISC-V模擬器Spike上進行了驗證。這種方法支持在RISC-V平臺上部署多種網絡模型,實驗結果表明,使用這種方法可以將向處理器提交的指令數減少至直接編譯方法的1/8。Vega等人[17]提出一種RISC-V I/O虛擬化RV-IOV(RISC-V I/O Virtualization)的硬件,解決了部署Rocket內核時的資源限制問題。Rocket Chip是一個開源的System-on-Chip設計生成器,可生成支持RISC-V 指令集的通用處理器核心,并提供有序核心生成器(Rocket)和無序核心生成器(BOOM)[18]。RV-IOV使用I/O虛擬化技術將Rocket內核與主機解耦,從而可以利用ASIC或更大規模的FPGA實現內核。

2.3 深度強化學習

強化學習RL(Reinforce Learning)和監督學習、無監督學習都是機器學習任務的一種,與監督學習和無監督學習任務相比,強化學習強調智能體(Agent)在與環境(Environment)的交互中學習,利用評價性的反饋信號實現決策的優化[19]。強化學習的主要過程為:智能體在環境中學習,根據環境的狀態(State),執行動作(Action),并根據環境的反饋(Reward)做出更好的決策。強化學習的馬爾可夫決策過程可以表示為:

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

(1)

其中,S表示有限狀態集合,s表示某個特定狀態,s∈S;A表示有限動作集合,a表示某個特定動作,a∈A;轉移模型:T(S,a,S′)~Pr(s′|s,a):根據當前狀態s和動作a預測下一個狀態s′,這里的Pr表示從s采取行動a轉移到s′的概率;獎勵R(s,a)=E[Rt+1|s,a]表示Agent采取某個動作后的即時獎勵,它還有R(s,a,s′)和R(s)等表現形式,采用不同的形式,其意義略有不同。

強化學習可以分為基于值函數的強化學習和基于策略的強化學習?;谥岛瘮档膹娀瘜W習算法包括Q-learning和Deep Q-learning等,基于策略的強化學習算法包括策略梯度等[20]。

3 RISC-V容器化方法

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

Figure 1 Architecture of the prototype system

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

Figure 2 Tiny Code Generator translation process

4 性能評估和分析

4.1 實驗設計

實驗設計使用 QEMU 模擬的RISC-V64位指令架構4核處理器,內存為2 GB,主頻為1.7 GHz,安裝Linux系統和QEMU。圖3展示了在RISC-V處理器上部署深度神經網絡模型的流程。本節設置了3組對照實驗:(1)交叉編譯;(2)Hypervisor虛擬機;(3)容器化方法。首先在x86平臺上構建強化學習RL模型,實驗(1)使用交叉編譯的方式[7, 16]部署深度學習網絡模型。部署過程中需要對每個模型單獨配置環境,修改強化學習庫函數,構建交叉編譯工具鏈。實驗(2)使用Hypervisor虛擬機的方式,使用QEMU在RISC-V平臺上進行全系統模擬,在虛擬機上安裝基于x86架構的操作系統,配置強化學習模型訓練環境。實驗(3)采用本文提出的容器化方法,使用QEMU User Mode在容器化的進程中執行基于x86架構的模型,模型文件需將運行所需的依賴庫封裝至二進制可執行文件,實現模型訓練快速執行。

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

4.2 強化學習算法

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

Figure 4 Cart-Pole model

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

4.3 實驗結果

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

Figure 5 Performance comparison of different algorithms under three processes

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

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

本節進一步對端到端的模型訓練和運行時延進行了分析,如圖7所示。3種部署流程下建立模型的時間相同,部署到RISC-V指令架構的實驗平臺的過程中,交叉編譯的方式耗費時間最多,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

4.4 評估分析

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

Figure 8 Consolidated experimental

初步的實驗結果表明,使用交叉編譯方式部署模型雖然可以得到最高的模型性能,但部署周期最長,這是因為在移植模型的過程中需要對庫中所有特定的機器源代碼進行修改;在設置完畢虛擬機環境后,Hypervisor虛擬機方式可以大幅減少模型部署時間的消耗,但每次模型訓練都需要運行完整的虛擬機,加載工作環境,和交叉編譯方式相比會帶來額外的資源占用;容器化方式和傳統RISC-V架構下交叉編譯深度神經網絡模型的方法和使用Hypervisor虛擬機的方式相比,僅付出相對較小的額外性能代價,在近似的部署時間內,可實現更多、更復雜的深度學習軟件框架的快速部署和運行。因此,容器化方式及其優化方法是解決基于RISC-V架構的軟件及學習模型快速部署的一種有效方法。

4.5 不足與展望

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

強化學習的計算包含大量的循環過程,通過指令的亂序執行可以大幅提高指令的并行性,提高計算效率。未來會使用支持亂序執行的RISC-V處理器核心對強化學習的計算過程進行優化。

5 結束語

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

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

目前在RISC-V平臺上對各種虛擬化方案性能方面的研究仍有待進一步探索,未來將會對深度神經網絡模型進行量化、減枝等操作,針對特定領域對模型進行專門優化,形成基于RISC-V架構的深度神經網絡模型構建、鏡像打包、容器化技術部署的完整流程。

猜你喜歡
深度模型
一半模型
深度理解一元一次方程
重要模型『一線三等角』
重尾非線性自回歸模型自加權M-估計的漸近分布
深度觀察
深度觀察
深度觀察
深度觀察
3D打印中的模型分割與打包
FLUKA幾何模型到CAD幾何模型轉換方法初步研究
主站蜘蛛池模板: 国内丰满少妇猛烈精品播 | 亚洲资源站av无码网址| 熟女日韩精品2区| 久久青草视频| AV片亚洲国产男人的天堂| 亚洲制服中文字幕一区二区| 看av免费毛片手机播放| 国产小视频网站| 免费AV在线播放观看18禁强制| 亚洲av无码片一区二区三区| 国产亚洲欧美在线中文bt天堂 | 欧美一级高清视频在线播放| 青青热久免费精品视频6| 国产精品99久久久久久董美香| 亚亚洲乱码一二三四区| 久久久久久高潮白浆| 欧美精品v欧洲精品| 国产乱人免费视频| 啪啪免费视频一区二区| 国产精品思思热在线| 亚洲男人天堂2018| 思思热精品在线8| 欧美不卡视频在线| 性视频一区| 亚洲系列中文字幕一区二区| 久久婷婷国产综合尤物精品| 午夜免费小视频| 免费无码AV片在线观看国产| 久久影院一区二区h| 伊人久久久大香线蕉综合直播| 亚洲精品va| 中文字幕人成乱码熟女免费| 69视频国产| 亚洲日韩AV无码一区二区三区人| 国产在线无码av完整版在线观看| 久久香蕉国产线| 亚洲无码高清一区二区| 亚洲啪啪网| 一本久道久久综合多人| 亚洲 欧美 偷自乱 图片 | 五月婷婷综合色| 日韩国产一区二区三区无码| 亚洲三级网站| 久久视精品| 一级毛片免费的| 永久免费AⅤ无码网站在线观看| 成人中文在线| 精品午夜国产福利观看| 天天激情综合| 人妻一区二区三区无码精品一区| 国产亚洲男人的天堂在线观看| 无码区日韩专区免费系列 | 波多野结衣无码AV在线| 国产呦精品一区二区三区网站| 99热国产这里只有精品无卡顿"| 久青草网站| 最新国语自产精品视频在| 夜夜拍夜夜爽| 欧美成人A视频| 婷婷五月在线| 久久久精品无码一区二区三区| 亚洲二区视频| 久久精品人人做人人综合试看 | 欧美高清三区| 波多野结衣中文字幕久久| 园内精品自拍视频在线播放| 日韩不卡免费视频| 亚洲色图欧美在线| 国产精品七七在线播放| 一级毛片免费观看久| 国产黄色视频综合| 在线中文字幕日韩| 日本三级欧美三级| 欧美日韩中文字幕二区三区| 国产精品三区四区| 国产一区二区网站| 久久天天躁狠狠躁夜夜躁| 日韩精品一区二区三区免费在线观看| 永久免费无码日韩视频| 亚洲成A人V欧美综合| 亚洲国产av无码综合原创国产| 狠狠色狠狠综合久久|