嵌入式部署方式具有實(shí)時(shí)響應(yīng)、網(wǎng)絡(luò)開銷低、隱私保護(hù)、能耗比高等優(yōu)勢(shì);但同時(shí),由于邊緣設(shè)備種類繁多,適配部署難度較高。
在一項(xiàng)百度和波士頓咨詢公司的聯(lián)合調(diào)研中,我們發(fā)現(xiàn)在有定制業(yè)務(wù)模型需求的客戶中,超過(guò)35%的場(chǎng)景有離線邊緣計(jì)算的需求。而如上文所述,端計(jì)算由于設(shè)備的多樣性,研發(fā)和部署成本相比云部署更高,且往往實(shí)際業(yè)務(wù)場(chǎng)景對(duì)在端上運(yùn)行的模型的時(shí)延和穩(wěn)定性也會(huì)有極高的要求。因此,如何將定制好的模型部署到各類端設(shè)備上是一個(gè)技術(shù)難題。
為了滿足開發(fā)者對(duì)部署形式多樣化的需求,一站式零門檻AI開發(fā)平臺(tái)EasyDL支持多種部署方式,包括公有云部署、本地服務(wù)器部署、設(shè)備端SDK和軟硬一體解決方案。EasyDL是基于飛槳推出的面向企業(yè)打造的一站式零門檻AI開發(fā)平臺(tái),提供智能標(biāo)注、模型訓(xùn)練、服務(wù)部署等全流程功能,內(nèi)置豐富的預(yù)訓(xùn)練模型,全面支持飛槳Master模式,面向不同人群與需求提供經(jīng)典版、專業(yè)版、零售版三個(gè)版本。
EasyDL支持的多種部署方式,適用于各類業(yè)務(wù)場(chǎng)景與運(yùn)行環(huán)境,便于開發(fā)者根據(jù)需求靈活選擇,其支持的設(shè)備也非常豐富,從最常見的x86、ARM、Nvidia-GPU,到NPU、FPGA,支持超過(guò)10類硬件。由于百度飛槳深度學(xué)習(xí)平臺(tái)相關(guān)功能的支持,EasyDL具備強(qiáng)大的端計(jì)算部署能力,在生成端計(jì)算模型時(shí),會(huì)經(jīng)過(guò)一些列的優(yōu)化、加速、壓縮功能。
對(duì)于這一系列能力的講解,可以從網(wǎng)絡(luò)結(jié)構(gòu)層面和芯片能力兩方面入手。
在網(wǎng)絡(luò)結(jié)構(gòu)層面,會(huì)進(jìn)行op融合(如conv-add-relu,conv-bn等)、fp16/int8量化、模型裁剪等優(yōu)化。
以近期上線的ARM定點(diǎn)量化為例,其優(yōu)點(diǎn)包括低內(nèi)存帶寬、低功耗、低計(jì)算資源占用。在一些網(wǎng)絡(luò)中,可以帶來(lái)4倍的模型壓縮、4倍的內(nèi)存帶寬提升,以及更高效的cache利用。在很多場(chǎng)景中,定點(diǎn)量化不會(huì)對(duì)網(wǎng)絡(luò)精度造成額外損失。量化主要分為兩大類:Post Training Quantization和Quantization Aware Training,前者是使用KL散度等方法確定量化參數(shù)且不需要重新訓(xùn)練的定點(diǎn)量化方法,后者是對(duì)訓(xùn)練好的模型做再訓(xùn)練,建模來(lái)確定量化參數(shù)。在量化訓(xùn)練過(guò)程中,前向傳播的工作流可以表示為如下方式:
基于模擬量化訓(xùn)練前向過(guò)程的等價(jià)工作流
在訓(xùn)練量化的過(guò)程中,會(huì)在原有網(wǎng)絡(luò)算子前后插入連續(xù)的量化op和反量化op,并改變相應(yīng)的反向算子的輸入,評(píng)估階段,將量化算子參數(shù)變?yōu)榱炕蟮闹?,最終通過(guò)PaddleLite的工具改變模型文件中的參數(shù)數(shù)據(jù)類型為int8的na?ve buffer形式。
在后續(xù)的版本升級(jí)中,EasyDL會(huì)繼續(xù)上線模型裁剪優(yōu)化?;诿舾卸冗x擇最優(yōu)的裁剪率組合來(lái)進(jìn)行部分的卷積和裁剪,可以達(dá)到一倍以上模型體積的減少和低于1%的精度損失的優(yōu)化效果。結(jié)合定點(diǎn)量化以及后續(xù)的蒸餾策略,模型的體積和推理速度會(huì)得到更進(jìn)一步的全面優(yōu)化。
在芯片層面,EasyDL會(huì)根據(jù)具體的硬件類型進(jìn)行特屬優(yōu)化。比如在ARM64上如果芯片支持NEON,會(huì)充分利用其16個(gè)128位寄存器進(jìn)行浮點(diǎn)數(shù)計(jì)算的優(yōu)化;在英偉達(dá)GPU設(shè)備上,EasyDL會(huì)利用TensorRT庫(kù)進(jìn)行子圖的計(jì)算和加速;在蘋果手機(jī)上,會(huì)利用CoreML引擎進(jìn)行推理加速;在華為手機(jī)上,如果支持DDK,會(huì)調(diào)用華為HiAI引擎進(jìn)行推理。此外,EasyDL還支持英特爾的 MKL OpenVino, 高通的SNPE等推理引擎。在一些平臺(tái)上,能夠根據(jù)具體的深度學(xué)習(xí)網(wǎng)絡(luò)、芯片類型進(jìn)行合理的自動(dòng)選擇,在保證精度的同時(shí)最大化利用芯片能力,極大地提升推理速度。經(jīng)過(guò)網(wǎng)絡(luò)、硬件等各層面的優(yōu)化之后,模型在體積、內(nèi)存占用、推理速度上都會(huì)有更優(yōu)的表現(xiàn),部分模型的推理速度可以提升數(shù)倍以上。
近期EasyDL新上線了華為Atlas 200、Atlas300加速卡的支持,能夠支持最新DaVinci架構(gòu)的昇騰310AI處理器,同時(shí)兼顧開發(fā)板及服務(wù)器的場(chǎng)景。結(jié)合EasyDL現(xiàn)有的優(yōu)化技術(shù),在EasyDL的高性能模型上,可以達(dá)到6ms的性能。開啟多Batch優(yōu)化后,單張300加速卡可以一秒處理高達(dá)1000張圖片。
在EasyDL平臺(tái)上,模型加速優(yōu)化的全過(guò)程都會(huì)在系統(tǒng)中自動(dòng)完成,用戶只需根據(jù)自己的場(chǎng)景需要,選擇具體的硬件,即可自動(dòng)生成適配對(duì)應(yīng)硬件的端計(jì)算部署包。現(xiàn)在,在發(fā)布模型的時(shí)候,用戶只需要勾選“同時(shí)獲取加速版”,EasyDL后臺(tái)便會(huì)自動(dòng)為用戶生成具備量化、壓縮等優(yōu)化能力的加速版模型和SDK,用戶可以直接下載使用,使用的流程也基本一致。總的來(lái)看,EasyDL的嵌入式模型部署整體使用流程非常快速便捷,用戶無(wú)需關(guān)注復(fù)雜的深度學(xué)習(xí)邊緣計(jì)算算法、具體硬件適配等底層邏輯,只需關(guān)注實(shí)際的業(yè)務(wù)需求,通過(guò)SDK輸入圖片即可獲得模型輸出的識(shí)別結(jié)果。
目前,已有多家企業(yè)根據(jù)具體業(yè)務(wù)場(chǎng)景,通過(guò)EasyDL平臺(tái)僅用少量業(yè)務(wù)數(shù)據(jù)訓(xùn)練高精度AI模型,并根據(jù)使用場(chǎng)景和運(yùn)行環(huán)境選擇適配的部署方式。使用門檻低、方便快捷的加速版SDK具備的量化壓縮等能力,正在越來(lái)越多的業(yè)務(wù)場(chǎng)景中發(fā)揮作用,快速解決業(yè)務(wù)需求。
立即嘗試EasyDL:https://ai.baidu.com/easydl/
來(lái)源:IT時(shí)代網(wǎng)