?

基于全國產軟硬件的深度學習平臺設計

2022-02-21 06:04呂昊靳文兵郝志超郭瀟劉瑞澤
科技信息 2022年5期
關鍵詞:目標檢測

呂昊 靳文兵 郝志超 郭瀟 劉瑞澤

摘要:隨著國內外形勢的日益緊張,實現核心技術的自主可控就尤為重要。目前深度學習被應用到生活以及軍事領域中,實現深度學習訓練及推理的國產化具有重要意義。本課題主要設計一種基于全國產軟硬件的深度學習平臺,并打通目標檢測領域模型的訓練和推理,對平臺的實用性進行驗證。

關鍵詞:全國產軟硬件 深度學習平臺 目標檢測

0 引言:

在深度學習的發展研究過程中,數據的訓練是非常重要的組成部分,如何高效的進行對數據的訓練,并提供足夠的計算資源,對深度學習的研究有非常重要的意義。國內外都展開了針對深度學習硬件加速平臺的研發,如NVIDIA公司的GPU以及針對推理端的TX2[1],谷歌的TPU[2]等,以及國內百度推出了XPU[3],寒武紀的加速卡[4]以及華為的昇騰系列AI處理器[4]等。但是這些設備多數是針對推理端的硬件加速平臺,在訓練端,目前主要采用的還是x86體系的CPU+GPU的形式在進行,也有少數采用ARM平臺進行訓練的。在深度學習框架的應用上,目前應用較多的開源深度學習框架有谷歌的tensorflow,臉書的pytorch以及百度的Paddle等。在深度學習的訓練以及推理平臺上,我國進行深度學習訓練的主流平臺主要還是采用x86體系的CPU+GPU的形式,并在該硬件平臺上搭載tensorflow或pytorch的深度學習框架。近年來,隨著國內外形式的日益緊張,美國對我國高新技術的部分企業進行了限制和制裁,并對部分企業的部分設備和器件的采購進行了限制,因此發展基于國產化硬件平臺并且可以實現軟件·框架自主可控的深度學習平臺具有重要意義。由于深度學習在圖像處理,文本識別,數據挖掘以及個性化推薦等領域都取得了很多成果。因此想要直接實現軟硬件自主可控的通用深度學習平臺是不現實的。因此本文設計了針對目標檢測領域,設計一種基于深度學習的全國產平臺下的目標檢測系統,利用軟硬件自主可控平臺,初步完成在目標檢測領域部分模型的訓練與推理的全流程的實現。

1 系統概述:

本文所設計的基于深度學習的全國產平臺下的目標檢測系統包括了在深度學習中訓練+推理的全流程,完成從訓練到推理全過程的硬件模塊及應用軟件的全國產化。其中硬件部分主要由使用FT-2000/64為CPU的硬件電路組成,利用XPU架構AI芯片[3]的算力進行深度學習的訓練過程。軟件部分則是在搭載銀河麒麟操作系統的基礎上,適配國產深度學習框架PaddlePaddle,完成深度學習的模型訓練以及推理驗證。

本文采用的FT-2000/64是飛騰推出的通用計算處理芯片。FT2000/64是基于ARMV8架構的國產服務器CPU,集成64個飛騰自主研發的內核,兼容64位ARMV8指令集并支持ARM64和ARM32兩種執行模式,并且支持單精度和雙精度浮點運算指令,在硬件層面增強了芯片的安全性,滿足復雜應用場景下對性能和安全的需求??梢栽跐M足國產化硬件的需求上,為深度學習的訓練和推理過程提供穩定的運行環境。

根據本文選用的硬件環境,本文要針對ARMV8架構的CPU進行深度學習框架的適配。國產深度學習框架PaddlePaddle是由百度推出的中國國首個自主研發、功能完備并且開源開發的深度學習框架。PaddlePaddle支持在多種硬件設備以及多操作系統下的使用,由高兼容性,高性能的多端部署能力[3]。由于目前在ARM平臺上進行深度學習訓練的應用案例較少,考慮到PaddlePaddle對飛騰處理器的適應性以及支持的模型函數可能有一定不足,我們僅選用YOLOv3作為本系統所選用的模型,進行對系統設計的驗證。

2 硬件方案:

在硬件設計上,本文主要采用了以FT-2000/4為CPU,并掛載百昆侖AI加速卡XPU,實現對深度學習訓練過程的加速。在以FT-2000/4為CPU的主板上,通過PCIE總線搭載百度XPU神經處理器架構k100來實現硬件設計。

FT-2000/4集成4個飛騰自主研發的內核,兼容64位ARMV8指令集并支持ARM64和ARM32兩種執行模式。最高主頻為2.6GHz,擁有2個DDR4接口,2個x16PCIE接口,2路10/100/1000Mbps自適應以太網接口,除此以外,還擁有1個SD2.0、4個UART、32個GPIO、1個LPC以及4個I2C等接口??梢蕴峁└咝暾挠嬎懔鞒讨?。

XPU的處理器采用14nm工藝,擁有16B HBM高帶寬內存,提高最高512GB/s的內存帶寬。采用標準的PCIe Gen4接口使加速卡可以被快速安裝到不同類型的設備上。XPU在著重于計算密集型、基于規則的任務的同時, 確保效率、性能和靈活性的最大化,并且原生支持深度學習框架PaddlePaddle的推理和訓練任務,并實現對矩陣運算等的性能加速。其中SDNN(Software-defined Neural Network engine),即軟件定義神經網絡引擎是用來處理張量和向量運算??梢砸攒浖问届`活實現卷積,矩陣計算等操作,支持8位及16位的整型運算;Cluster是通用計算核,用來處理標量和向量計算。有良好的通用性和可編程性,可以根據需求靈活實現多種函數;Shared Memory即片上內存,為每個計算單元共享??梢蕴峁┍绕釪DR更低延時和高帶寬的訪問;每個HBM高帶寬內存的容量為8GB,采用的PCIe Gen4的總線,兼容3.0/2.0/1.0協議,提供單向16GB/s,雙向共32GB/s的帶寬,可以滿足高速率的數據交互。

3 軟件設計

在軟件層面,本文選用百度推出的PaddlePaddle作為訓練和推理的深度學習框架。整個PaddlePaddle的生態主要分為開發訓練框架,模型以及部署三個部分。開發訓練框架是Paddle全生態的最底層。在這部分,Paddle核心框架是Paddle深度學習框架的核心,集成了深度學習所需要利用的基本函數庫,其余不同的訓練框架是為了適應不同環境體系下進行訓練而準備的。模型主要作用是方便利用核心框架進行訓練開發的工具,在這一部分主要根據應用方向分出來了不同的模型庫,并在這幾個方向,根據不同的應用領域提供不同的開發套件。根據需要,利用模型庫或開發套件進行訓練開發。壓縮工具是為了針對訓練完的模型進行壓縮優化,方便模型進行更好的部署。PaddleSlim主要目的是對模型進行優化,提供剪裁、量化、蒸餾、和模型結構搜索等模型壓縮策略。部署部分主要是將進行推理的部分。Paddle Inference是原生推理庫,主要面向服務器端進行推理預測的部屬;Paddlelite是輕量化的推理引擎,主要用在手機以及嵌入式的硬件設備上。

本文在利用該框架的過程中,在訓練和推理的過程中采用不同的組件進行開發。在訓練端,本文采用Paddle核心框架+Paddledetection開發套件的形式。其中Paddle核心框架提供在深度學習過程中會調用的基本運算函數以及提供各種接口函數。為了便于Paddle能夠調用足夠的硬件資源,我們在新的硬件環境,即FT-2000/4+百度XPU的硬件環境下,對Paddle進行源碼編譯。這使Paddle可以有效調用XPU以及ARM的硬件資源進行運算。Paddledetection是目標檢測開發套件,用于目標檢測任務的模型訓練、優化工作。通過配置yml參數文件,通過max_iters對最大迭代次數進行設置,通過pretrain_weights指定預訓練模型地址,并通過dataset_dir以及anno_path對標定完成的數據集進行定義。完成對yml參數文件進行配置和修改后,調用train.py可以進行訓練。通過訓練可以獲得model_final以及xxxxxx_final,之后通過inference.py對訓練結果進行驗證。在推理端,本文采用Paddlelite推理框架+在訓練過程中獲得的model及參數文件的形式來進行。Paddlelite重點支持在移動端設備上的推理預測,相比起一般的推理框架,可以以更輕量級的框架做到更加高性能的推理過程,并已經在多種硬件上進行了測試運行。因此本文選用Paddlelite在FT-2000/4上進行推理的部署,為后期將Paddlelite適配到ARM體系下的系統以及其他AI加速芯片提供技術儲備。在Paddlelite適配過程中,本文針對編譯運行環境進行配置,包括python3,arm-gcc交叉編譯庫以及cmake等,編譯環境是進行源碼編譯的基礎。在實際編譯過程中,在確認框架所需要的三方庫并進行安裝配置后,調用build_linux.sh進行編譯,根據硬件環境需要,設定為ARMV8的體系結構,并設定編譯python版本的Paddlelite庫。在編譯完成后,在生成文件夾build.lite.linux.armv8.gcc中,生成了c++靜態編譯庫以及動態編譯庫,以及python的安裝庫。Python版本的Paddlelite庫還負責模型轉換工具opt的運用,模型轉換工具opt優化原始的訓練模型,其中包括量化、子圖融合、混合調度、Kernel優選等方法,將訓練過程中生成的模型及參數文件轉化為在訓練端Paddlelite可以輸入的模型參數格式。在獲取Paddlelite可以輸入的模型參數格式后,將模型輸入到推理的腳本,并調用opencv將預測目標的坐標以及錨框顯示在源圖像中,完成目標檢測的任務。

在具體軟件設計與驗證的過程中,我們根據任務性質的不同可以將任務分為訓練段和推理端進行。在訓練端,我們主要是通過以Paddle核心框架作為訓練的核心,之后調用PaddleDetction開發組件開展訓練任務,之后通過訓練腳本進行具體訓練,在訓練完成后,通過測試腳本對訓練結果進行測試。在推理端,我們主要通過Paddlelite輕量化推理框架展開推理任務,并利用具體的推理腳本+Opencv繪圖,完成推理,并輸出結果。根據任務的走向,首先本文在獲取訓練所需的訓練數據以后,在搭載好的訓練平臺上進行訓練,并將訓練好的模型進行優化裁剪,之后利用優化好后的模型進行推理,并完成驗證。

4 系統驗證

在上述的硬件和軟件設計中,本文已經搭建了基于深度學習的全國產平臺的軟件硬件系統。之后本文選用主干網絡為SSD_MobileNet_v1模型文件以及公開的預訓練模型參數進行模型訓練,使用pascalvoc VOC 2007公開數據集進行訓練,并通過配置yml文件進行參數設置,指定模型及數據集路徑,設定迭代次數為400000次,之后利用PaddleDetection中的train.py開始訓練,在訓練過程中損失擬合曲線,基本符合訓練要求。訓練完成后,利用test.py針對測試圖片進行驗證,可以對圖片中目標進行檢測,通過導出模型文件,對模型文件進行壓縮優化為model.nb文件并運用Paddlelite框架進行推理,如圖7所示,成功實現推理,完成目標檢測任務。

5 結論

本文針對目標檢測領域,設計了一種基于深度學習的全國產平臺下的目標檢測系統,利用軟硬件自主可控平臺,初步完成在目標檢測領域部分模型的訓練與推理的全流程的實現。經過驗證,本文所設計的基于深度學習的全國產平臺下的目標檢測系統包括了在深度學習中訓練+推理的全流程,完成從訓練到推理全過程的硬件模塊及應用軟件的全國產化設計。

參考文獻:

[1]齊健.NVIDIA Jetson TX2平臺:加速發展小型化人工智能終端[J].智能制造,2017(05):20-21.

[2]樂學.谷歌推出定制化機器學習芯片速度是傳統GPU的15到30倍[J].信息與電腦(理論版),2017(08):7-8.

[3]張依依. 7nm昆侖二代量產? 百度芯片直面通用化商用化大考[N]. 中國電子報,2021-08-24(008).DOI:10.28065/n.cnki.ncdzb.2021.001050.

[4]王哲,馮曉輝.AI芯片:加速智能時代的發動機[J].人工智能,2018(02):20-33.DOI:10.16453/j.cnki.issn2096-5036.2018.02.002.

猜你喜歡
目標檢測
多視角目標檢測與跟蹤技術的研究與實現
視頻中目標檢測算法研究
行為識別中的人體運動目標檢測方法
移動機器人圖像目標識別
基于背景建模法的運動目標檢測
基于P3電位的目標檢測研究
智能視頻技術在電力系統領域的應用
相關K分布雜波中擴展目標積累檢測性能分析
基于連通域標記的目標檢測算法設計與實現
一種改進的峰均功率比判源方法
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合