呂昊 靳文兵 郝志超 郭瀟 劉瑞澤
摘要:隨著國內(nèi)外形勢的日益緊張,實現(xiàn)核心技術(shù)的自主可控就尤為重要。目前深度學習被應用到生活以及軍事領(lǐng)域中,實現(xiàn)深度學習訓練及推理的國產(chǎn)化具有重要意義。本課題主要設(shè)計一種基于全國產(chǎn)軟硬件的深度學習平臺,并打通目標檢測領(lǐng)域模型的訓練和推理,對平臺的實用性進行驗證。
關(guān)鍵詞:全國產(chǎn)軟硬件 深度學習平臺 目標檢測
0 引言:
在深度學習的發(fā)展研究過程中,數(shù)據(jù)的訓練是非常重要的組成部分,如何高效的進行對數(shù)據(jù)的訓練,并提供足夠的計算資源,對深度學習的研究有非常重要的意義。國內(nèi)外都展開了針對深度學習硬件加速平臺的研發(fā),如NVIDIA公司的GPU以及針對推理端的TX2[1],谷歌的TPU[2]等,以及國內(nèi)百度推出了XPU[3],寒武紀的加速卡[4]以及華為的昇騰系列AI處理器[4]等。但是這些設(shè)備多數(shù)是針對推理端的硬件加速平臺,在訓練端,目前主要采用的還是x86體系的CPU+GPU的形式在進行,也有少數(shù)采用ARM平臺進行訓練的。在深度學習框架的應用上,目前應用較多的開源深度學習框架有谷歌的tensorflow,臉書的pytorch以及百度的Paddle等。在深度學習的訓練以及推理平臺上,我國進行深度學習訓練的主流平臺主要還是采用x86體系的CPU+GPU的形式,并在該硬件平臺上搭載tensorflow或pytorch的深度學習框架。近年來,隨著國內(nèi)外形式的日益緊張,美國對我國高新技術(shù)的部分企業(yè)進行了限制和制裁,并對部分企業(yè)的部分設(shè)備和器件的采購進行了限制,因此發(fā)展基于國產(chǎn)化硬件平臺并且可以實現(xiàn)軟件·框架自主可控的深度學習平臺具有重要意義。由于深度學習在圖像處理,文本識別,數(shù)據(jù)挖掘以及個性化推薦等領(lǐng)域都取得了很多成果。因此想要直接實現(xiàn)軟硬件自主可控的通用深度學習平臺是不現(xiàn)實的。因此本文設(shè)計了針對目標檢測領(lǐng)域,設(shè)計一種基于深度學習的全國產(chǎn)平臺下的目標檢測系統(tǒng),利用軟硬件自主可控平臺,初步完成在目標檢測領(lǐng)域部分模型的訓練與推理的全流程的實現(xiàn)。
1 系統(tǒng)概述:
本文所設(shè)計的基于深度學習的全國產(chǎn)平臺下的目標檢測系統(tǒng)包括了在深度學習中訓練+推理的全流程,完成從訓練到推理全過程的硬件模塊及應用軟件的全國產(chǎn)化。其中硬件部分主要由使用FT-2000/64為CPU的硬件電路組成,利用XPU架構(gòu)AI芯片[3]的算力進行深度學習的訓練過程。軟件部分則是在搭載銀河麒麟操作系統(tǒng)的基礎(chǔ)上,適配國產(chǎn)深度學習框架PaddlePaddle,完成深度學習的模型訓練以及推理驗證。
本文采用的FT-2000/64是飛騰推出的通用計算處理芯片。FT2000/64是基于ARMV8架構(gòu)的國產(chǎn)服務器CPU,集成64個飛騰自主研發(fā)的內(nèi)核,兼容64位ARMV8指令集并支持ARM64和ARM32兩種執(zhí)行模式,并且支持單精度和雙精度浮點運算指令,在硬件層面增強了芯片的安全性,滿足復雜應用場景下對性能和安全的需求??梢栽跐M足國產(chǎn)化硬件的需求上,為深度學習的訓練和推理過程提供穩(wěn)定的運行環(huán)境。
根據(jù)本文選用的硬件環(huán)境,本文要針對ARMV8架構(gòu)的CPU進行深度學習框架的適配。國產(chǎn)深度學習框架PaddlePaddle是由百度推出的中國國首個自主研發(fā)、功能完備并且開源開發(fā)的深度學習框架。PaddlePaddle支持在多種硬件設(shè)備以及多操作系統(tǒng)下的使用,由高兼容性,高性能的多端部署能力[3]。由于目前在ARM平臺上進行深度學習訓練的應用案例較少,考慮到PaddlePaddle對飛騰處理器的適應性以及支持的模型函數(shù)可能有一定不足,我們僅選用YOLOv3作為本系統(tǒng)所選用的模型,進行對系統(tǒng)設(shè)計的驗證。
2 硬件方案:
在硬件設(shè)計上,本文主要采用了以FT-2000/4為CPU,并掛載百昆侖AI加速卡XPU,實現(xiàn)對深度學習訓練過程的加速。在以FT-2000/4為CPU的主板上,通過PCIE總線搭載百度XPU神經(jīng)處理器架構(gòu)k100來實現(xiàn)硬件設(shè)計。
FT-2000/4集成4個飛騰自主研發(fā)的內(nèi)核,兼容64位ARMV8指令集并支持ARM64和ARM32兩種執(zhí)行模式。最高主頻為2.6GHz,擁有2個DDR4接口,2個x16PCIE接口,2路10/100/1000Mbps自適應以太網(wǎng)接口,除此以外,還擁有1個SD2.0、4個UART、32個GPIO、1個LPC以及4個I2C等接口??梢蕴峁└咝暾挠嬎懔鞒讨巍?/p>
XPU的處理器采用14nm工藝,擁有16B HBM高帶寬內(nèi)存,提高最高512GB/s的內(nèi)存帶寬。采用標準的PCIe Gen4接口使加速卡可以被快速安裝到不同類型的設(shè)備上。XPU在著重于計算密集型、基于規(guī)則的任務的同時, 確保效率、性能和靈活性的最大化,并且原生支持深度學習框架PaddlePaddle的推理和訓練任務,并實現(xiàn)對矩陣運算等的性能加速。其中SDNN(Software-defined Neural Network engine),即軟件定義神經(jīng)網(wǎng)絡(luò)引擎是用來處理張量和向量運算??梢砸攒浖问届`活實現(xiàn)卷積,矩陣計算等操作,支持8位及16位的整型運算;Cluster是通用計算核,用來處理標量和向量計算。有良好的通用性和可編程性,可以根據(jù)需求靈活實現(xiàn)多種函數(shù);Shared Memory即片上內(nèi)存,為每個計算單元共享??梢蕴峁┍绕釪DR更低延時和高帶寬的訪問;每個HBM高帶寬內(nèi)存的容量為8GB,采用的PCIe Gen4的總線,兼容3.0/2.0/1.0協(xié)議,提供單向16GB/s,雙向共32GB/s的帶寬,可以滿足高速率的數(shù)據(jù)交互。
3 軟件設(shè)計
在軟件層面,本文選用百度推出的PaddlePaddle作為訓練和推理的深度學習框架。整個PaddlePaddle的生態(tài)主要分為開發(fā)訓練框架,模型以及部署三個部分。開發(fā)訓練框架是Paddle全生態(tài)的最底層。在這部分,Paddle核心框架是Paddle深度學習框架的核心,集成了深度學習所需要利用的基本函數(shù)庫,其余不同的訓練框架是為了適應不同環(huán)境體系下進行訓練而準備的。模型主要作用是方便利用核心框架進行訓練開發(fā)的工具,在這一部分主要根據(jù)應用方向分出來了不同的模型庫,并在這幾個方向,根據(jù)不同的應用領(lǐng)域提供不同的開發(fā)套件。根據(jù)需要,利用模型庫或開發(fā)套件進行訓練開發(fā)。壓縮工具是為了針對訓練完的模型進行壓縮優(yōu)化,方便模型進行更好的部署。PaddleSlim主要目的是對模型進行優(yōu)化,提供剪裁、量化、蒸餾、和模型結(jié)構(gòu)搜索等模型壓縮策略。部署部分主要是將進行推理的部分。Paddle Inference是原生推理庫,主要面向服務器端進行推理預測的部屬;Paddlelite是輕量化的推理引擎,主要用在手機以及嵌入式的硬件設(shè)備上。
本文在利用該框架的過程中,在訓練和推理的過程中采用不同的組件進行開發(fā)。在訓練端,本文采用Paddle核心框架+Paddledetection開發(fā)套件的形式。其中Paddle核心框架提供在深度學習過程中會調(diào)用的基本運算函數(shù)以及提供各種接口函數(shù)。為了便于Paddle能夠調(diào)用足夠的硬件資源,我們在新的硬件環(huán)境,即FT-2000/4+百度XPU的硬件環(huán)境下,對Paddle進行源碼編譯。這使Paddle可以有效調(diào)用XPU以及ARM的硬件資源進行運算。Paddledetection是目標檢測開發(fā)套件,用于目標檢測任務的模型訓練、優(yōu)化工作。通過配置yml參數(shù)文件,通過max_iters對最大迭代次數(shù)進行設(shè)置,通過pretrain_weights指定預訓練模型地址,并通過dataset_dir以及anno_path對標定完成的數(shù)據(jù)集進行定義。完成對yml參數(shù)文件進行配置和修改后,調(diào)用train.py可以進行訓練。通過訓練可以獲得model_final以及xxxxxx_final,之后通過inference.py對訓練結(jié)果進行驗證。在推理端,本文采用Paddlelite推理框架+在訓練過程中獲得的model及參數(shù)文件的形式來進行。Paddlelite重點支持在移動端設(shè)備上的推理預測,相比起一般的推理框架,可以以更輕量級的框架做到更加高性能的推理過程,并已經(jīng)在多種硬件上進行了測試運行。因此本文選用Paddlelite在FT-2000/4上進行推理的部署,為后期將Paddlelite適配到ARM體系下的系統(tǒng)以及其他AI加速芯片提供技術(shù)儲備。在Paddlelite適配過程中,本文針對編譯運行環(huán)境進行配置,包括python3,arm-gcc交叉編譯庫以及cmake等,編譯環(huán)境是進行源碼編譯的基礎(chǔ)。在實際編譯過程中,在確認框架所需要的三方庫并進行安裝配置后,調(diào)用build_linux.sh進行編譯,根據(jù)硬件環(huán)境需要,設(shè)定為ARMV8的體系結(jié)構(gòu),并設(shè)定編譯python版本的Paddlelite庫。在編譯完成后,在生成文件夾build.lite.linux.armv8.gcc中,生成了c++靜態(tài)編譯庫以及動態(tài)編譯庫,以及python的安裝庫。Python版本的Paddlelite庫還負責模型轉(zhuǎn)換工具opt的運用,模型轉(zhuǎn)換工具opt優(yōu)化原始的訓練模型,其中包括量化、子圖融合、混合調(diào)度、Kernel優(yōu)選等方法,將訓練過程中生成的模型及參數(shù)文件轉(zhuǎn)化為在訓練端Paddlelite可以輸入的模型參數(shù)格式。在獲取Paddlelite可以輸入的模型參數(shù)格式后,將模型輸入到推理的腳本,并調(diào)用opencv將預測目標的坐標以及錨框顯示在源圖像中,完成目標檢測的任務。
在具體軟件設(shè)計與驗證的過程中,我們根據(jù)任務性質(zhì)的不同可以將任務分為訓練段和推理端進行。在訓練端,我們主要是通過以Paddle核心框架作為訓練的核心,之后調(diào)用PaddleDetction開發(fā)組件開展訓練任務,之后通過訓練腳本進行具體訓練,在訓練完成后,通過測試腳本對訓練結(jié)果進行測試。在推理端,我們主要通過Paddlelite輕量化推理框架展開推理任務,并利用具體的推理腳本+Opencv繪圖,完成推理,并輸出結(jié)果。根據(jù)任務的走向,首先本文在獲取訓練所需的訓練數(shù)據(jù)以后,在搭載好的訓練平臺上進行訓練,并將訓練好的模型進行優(yōu)化裁剪,之后利用優(yōu)化好后的模型進行推理,并完成驗證。
4 系統(tǒng)驗證
在上述的硬件和軟件設(shè)計中,本文已經(jīng)搭建了基于深度學習的全國產(chǎn)平臺的軟件硬件系統(tǒng)。之后本文選用主干網(wǎng)絡(luò)為SSD_MobileNet_v1模型文件以及公開的預訓練模型參數(shù)進行模型訓練,使用pascalvoc VOC 2007公開數(shù)據(jù)集進行訓練,并通過配置yml文件進行參數(shù)設(shè)置,指定模型及數(shù)據(jù)集路徑,設(shè)定迭代次數(shù)為400000次,之后利用PaddleDetection中的train.py開始訓練,在訓練過程中損失擬合曲線,基本符合訓練要求。訓練完成后,利用test.py針對測試圖片進行驗證,可以對圖片中目標進行檢測,通過導出模型文件,對模型文件進行壓縮優(yōu)化為model.nb文件并運用Paddlelite框架進行推理,如圖7所示,成功實現(xiàn)推理,完成目標檢測任務。
5 結(jié)論
本文針對目標檢測領(lǐng)域,設(shè)計了一種基于深度學習的全國產(chǎn)平臺下的目標檢測系統(tǒng),利用軟硬件自主可控平臺,初步完成在目標檢測領(lǐng)域部分模型的訓練與推理的全流程的實現(xiàn)。經(jīng)過驗證,本文所設(shè)計的基于深度學習的全國產(chǎn)平臺下的目標檢測系統(tǒng)包括了在深度學習中訓練+推理的全流程,完成從訓練到推理全過程的硬件模塊及應用軟件的全國產(chǎn)化設(shè)計。
參考文獻:
[1]齊健.NVIDIA Jetson TX2平臺:加速發(fā)展小型化人工智能終端[J].智能制造,2017(05):20-21.
[2]樂學.谷歌推出定制化機器學習芯片速度是傳統(tǒng)GPU的15到30倍[J].信息與電腦(理論版),2017(08):7-8.
[3]張依依. 7nm昆侖二代量產(chǎn)? 百度芯片直面通用化商用化大考[N]. 中國電子報,2021-08-24(008).DOI:10.28065/n.cnki.ncdzb.2021.001050.
[4]王哲,馮曉輝.AI芯片:加速智能時代的發(fā)動機[J].人工智能,2018(02):20-33.DOI:10.16453/j.cnki.issn2096-5036.2018.02.002.