適配難?難適配!AI嵌入式設(shè)備部署如何搞?秘訣在此!
從科研、金融、零售到工業(yè)、農(nóng)業(yè)等越來(lái)越多的行業(yè)與業(yè)務(wù)場(chǎng)景正在應(yīng)用人工智能提升效率,降低成本。人工智能在產(chǎn)業(yè)升級(jí)、改善人類(lèi)生活等方面發(fā)揮著越來(lái)越重要的作用。當(dāng)在實(shí)際業(yè)務(wù)場(chǎng)景中部署AI模型時(shí),會(huì)面臨一個(gè)部署方案設(shè)計(jì)的問(wèn)題:不同的使用場(chǎng)景和業(yè)務(wù)問(wèn)題中對(duì)模型的部署方式要求也有所差異。
AI模型有著多樣化的部署方式,常見(jiàn)的模型部署形態(tài)分為兩種:服務(wù)器部署和嵌入式部署。服務(wù)器部署指的是將模型部署在CPU/GPU上,形成可調(diào)用的API接口,根據(jù)需要可選擇云服務(wù)器部署和本地服務(wù)器部署;嵌入式部署指的是將模型部署到邊緣側(cè)或端側(cè)的嵌入式設(shè)備中,進(jìn)行單機(jī)離線運(yùn)行。下表對(duì)比了這兩種部署方式的特性。當(dāng)用戶(hù)的模型應(yīng)用場(chǎng)景沒(méi)有網(wǎng)絡(luò)覆蓋,或是業(yè)務(wù)數(shù)據(jù)較為機(jī)密,或是對(duì)預(yù)測(cè)延時(shí)要求較高時(shí),往往會(huì)選擇嵌入式部署方式。
特性 |
AI云計(jì)算 AI Cloud Computing |
AI邊緣計(jì)算 AI Edge Computing |
算力 |
算力強(qiáng)大 ( TFLOPS, 并行可擴(kuò)展 ) 適合訓(xùn)練和推理階段計(jì)算 |
算力有限, 水平擴(kuò)展性差, 更適合推理階段前向計(jì)算 |
時(shí)延 |
網(wǎng)絡(luò)時(shí)延+計(jì)算開(kāi)銷(xiāo) |
本地計(jì)算無(wú)網(wǎng)絡(luò)開(kāi)銷(xiāo)或很低, 實(shí)時(shí)響應(yīng) |
網(wǎng)絡(luò)依賴(lài) |
強(qiáng)依賴(lài) |
弱依賴(lài);隱私保護(hù) |
能耗 |
高 (幾百瓦) |
低 (幾到幾十瓦, 能耗比高) |
系統(tǒng)架構(gòu) |
開(kāi)放, 高度集中 |
封閉, 比較分散 |
多樣性 |
標(biāo)準(zhǔn)化程度高, CPU, GPU等 |
多樣的芯片架構(gòu), 傳感器等 |
研發(fā)成本 |
低 (配套完善, 可移植性極高) |
高 (配套不完善, 可移植弱) |
嵌入式部署方式具有實(shí)時(shí)響應(yīng)、網(wǎng)絡(luò)開(kāi)銷(xiāo)低、隱私保護(hù)、能耗比高等優(yōu)勢(shì);
但同時(shí),由于邊緣設(shè)備種類(lèi)繁多,適配部署難度較高。
在一項(xiàng)百度和波士頓咨詢(xún)公司的聯(lián)合調(diào)研中,我們發(fā)現(xiàn)在有定制業(yè)務(wù)模型需求的客戶(hù)中,超過(guò)35%的場(chǎng)景有離線邊緣計(jì)算的需求。而如上文所述,端計(jì)算由于設(shè)備的多樣性,研發(fā)和部署成本相比云部署更高,且往往實(shí)際業(yè)務(wù)場(chǎng)景對(duì)在端上運(yùn)行的模型的時(shí)延和穩(wěn)定性也會(huì)有極高的要求。因此,如何將定制好的模型部署適配到端設(shè)備,并兼顧識(shí)別效果、性能和內(nèi)存消耗,是一個(gè)需要耗費(fèi)大量研發(fā)工作的技術(shù)難題。
正式為了應(yīng)對(duì)AI模型多樣化的部署需求,百度零門(mén)檻AI開(kāi)發(fā)平臺(tái)EasyDL提供了多種部署方式,包括公有云部署、本地服務(wù)器部署、設(shè)備端SDK和軟硬一體解決方案,適用于各類(lèi)業(yè)務(wù)場(chǎng)景與運(yùn)行環(huán)境,便于開(kāi)發(fā)者根據(jù)需求靈活選擇。特別是在嵌入式部署方面,EasyDL的設(shè)備端SDK,支持的硬件類(lèi)型也非常豐富,從最常見(jiàn)的x86、ARM、Nvidia-GPU,到NPU、FPGA,支持超過(guò)10類(lèi)硬件。同時(shí),依托于百度飛槳深度學(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ò)精度造成額外損失。量化主要分為兩大類(lèi):Post Training Quantization和QuantizationAware Training,前者是使用KL散度等方法確定量化參數(shù)且不需要重新訓(xùn)練的定點(diǎn)量化方法,后者是對(duì)訓(xùn)練好的模型做再訓(xùn)練,建模來(lái)確定量化參數(shù)。
在訓(xùn)練量化的過(guò)程中,會(huì)在原有網(wǎng)絡(luò)算子前后插入連續(xù)的量化op和反量化op,并改變相應(yīng)的反向算子的輸入,評(píng)估階段,將量化算子參數(shù)變?yōu)榱炕蟮闹?,最終通過(guò)PaddleLite的工具改變模型文件中的參數(shù)數(shù)據(jù)類(lèi)型為int8的na?ve buffer形式。
在后續(xù)的版本升級(jí)中,EasyDL會(huì)繼續(xù)上線模型裁剪優(yōu)化。基于敏感度選擇最優(yōu)的裁剪率組合來(lái)進(jìn)行部分的卷積和裁剪,可以達(dá)到一倍以上模型體積的減少和低于1%的精度損失的優(yōu)化效果。結(jié)合定點(diǎn)量化以及后續(xù)的蒸餾策略,模型的體積和推理速度會(huì)得到更進(jìn)一步的全面優(yōu)化。
在芯片層面,EasyDL會(huì)根據(jù)具體的硬件類(lèi)型進(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ì)算和加速;在蘋(píng)果手機(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ò)、芯片類(lèi)型進(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í)兼顧開(kāi)發(fā)板及服務(wù)器的場(chǎng)景。結(jié)合EasyDL現(xiàn)有的優(yōu)化技術(shù),在EasyDL的高性能模型上,可以達(dá)到6ms的性能。開(kāi)啟多Batch優(yōu)化后,單張300加速卡可以一秒處理高達(dá)1000張圖片。
在EasyDL平臺(tái)上,模型加速優(yōu)化的全過(guò)程都會(huì)在系統(tǒng)中自動(dòng)完成,用戶(hù)只需根據(jù)自己的場(chǎng)景需要,選擇具體的硬件,即可自動(dòng)生成適配對(duì)應(yīng)硬件的端計(jì)算部署包。現(xiàn)在,在發(fā)布模型的時(shí)候,用戶(hù)只需要勾選“同時(shí)獲取加速版”,EasyDL后臺(tái)便會(huì)自動(dòng)為用戶(hù)生成具備量化、壓縮等優(yōu)化能力的加速版SDK和模型,用戶(hù)可以直接下載使用,且使用的流程也基本一致。且部署包的使用十分快速簡(jiǎn)便,用戶(hù)無(wú)需關(guān)注深度學(xué)習(xí)、具體硬件等底層邏輯,只需關(guān)注輸入圖片和輸出的識(shí)別結(jié)果即可。
EasyDL面向企業(yè)開(kāi)發(fā)者提供零門(mén)檻AI開(kāi)發(fā)平臺(tái),一站式支持智能標(biāo)注、模型訓(xùn)練、服務(wù)部署等全流程功能,內(nèi)置豐富的預(yù)訓(xùn)練模型,支持圖像分類(lèi)、物體檢測(cè)、文本分類(lèi)、音視頻分類(lèi)等多類(lèi)模型,支持公有云/私有化/設(shè)備端等靈活部署方式。目前,已有數(shù)萬(wàn)家企業(yè)根據(jù)具體業(yè)務(wù)場(chǎng)景,通過(guò)EasyDL平臺(tái)僅用少量業(yè)務(wù)數(shù)據(jù)訓(xùn)練高精度AI模型,并根據(jù)使用場(chǎng)景和運(yùn)行環(huán)境選擇適配的部署方式。使用門(mén)檻低、方便快捷的加速版SDK具備的量化壓縮等能力,正在越來(lái)越多的業(yè)務(wù)場(chǎng)景中發(fā)揮作用,快速解決業(yè)務(wù)需求。
立即嘗試EasyDL:https://ai.baidu.com/easydl/
免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。文章僅代表作者個(gè)人觀點(diǎn),不代表本平臺(tái)立場(chǎng),如有問(wèn)題,請(qǐng)聯(lián)系我們,謝謝!