部署深度學(xué)習(xí)服務(wù)非常困難,,因此簡(jiǎn)單易用的圖形化系統(tǒng)就顯得極為重要,。本文介紹了百度的圖形化深度學(xué)習(xí)系統(tǒng) EasyDL,,用戶(hù)可以不需要機(jī)器學(xué)習(xí)背景知識(shí)而搭建優(yōu)秀的深度學(xué)習(xí)服務(wù)。本文重點(diǎn)討論了 EasyDL 系統(tǒng)的技術(shù)模塊與優(yōu)勢(shì),,它大量采用了遷移學(xué)習(xí)與自動(dòng)模型搜索,,并針對(duì)不同的定制化任務(wù)學(xué)習(xí)不同的深度模型。
隨著機(jī)器學(xué)習(xí),,尤其是深度學(xué)習(xí)在復(fù)雜數(shù)據(jù)上的表現(xiàn)越來(lái)越優(yōu)秀,,很多開(kāi)發(fā)者希望能將其應(yīng)用到自己的服務(wù)或產(chǎn)品中。然而即使是使用預(yù)訓(xùn)練模型或開(kāi)源框架,,對(duì)于很多不太了解機(jī)器學(xué)習(xí)算法工程的開(kāi)發(fā)者而言還是有非常大的挑戰(zhàn),。此外,若機(jī)器學(xué)習(xí)不是產(chǎn)品的核心技術(shù),,額外維護(hù)機(jī)器學(xué)習(xí)算法團(tuán)隊(duì)的成本又非常高,。因此,很多時(shí)候我們需要一種能快速使用高性能深度學(xué)習(xí)的方法,。
從整體而言,,構(gòu)建我們自己的機(jī)器學(xué)習(xí)應(yīng)用首先需要收集數(shù)據(jù),并執(zhí)行復(fù)雜而繁瑣的數(shù)據(jù)預(yù)處理,,隨后如何選擇模型與各種層出不窮的修正結(jié)構(gòu)也非常困難,。在訓(xùn)練中,,需要經(jīng)驗(yàn)的調(diào)參過(guò)程與各種技巧也會(huì)對(duì)模型性能造成影響,更不用說(shuō)需要根據(jù)數(shù)據(jù)情況選擇與修正最優(yōu)化方法了,。因此即使不考慮工程化問(wèn)題,,將機(jī)器學(xué)習(xí)模型部署到客戶(hù)端也有非常大的成本。
其實(shí)目前在 GitHub 上有很多優(yōu)秀的機(jī)器學(xué)習(xí)開(kāi)源項(xiàng)目,,例如各種預(yù)訓(xùn)練深度卷積網(wǎng)絡(luò),、高度封裝的算法以及大量開(kāi)放數(shù)據(jù)集,不過(guò)要想復(fù)現(xiàn)以及根據(jù)實(shí)際情況調(diào)整這些項(xiàng)目,,開(kāi)發(fā)者還是需要一些 ML 領(lǐng)域知識(shí),。此外,很多項(xiàng)目的文檔說(shuō)明與技術(shù)支持都有待提高,,它們需要開(kāi)發(fā)者一點(diǎn)點(diǎn)調(diào)試與試錯(cuò)才能正確搭建,。更重要的是,將訓(xùn)練后的模型部署到移動(dòng)端等平臺(tái)會(huì)遇到非常多的困難,,這主要還是當(dāng)前流行的深度學(xué)習(xí)框架并不能完美支持模型部署,。
所以對(duì)于不太了解 ML 的開(kāi)發(fā)者而言,最好將上述這些過(guò)程都自動(dòng)化,。例如我們只需要收集少量和任務(wù)相關(guān)的數(shù)據(jù),,并直接在平臺(tái)上完成標(biāo)注,然后讓系統(tǒng)幫我們選擇合適模型與超參數(shù)進(jìn)行訓(xùn)練,,最后已訓(xùn)練模型還可以直接部署到云 API 或打包成安裝包,。其實(shí)現(xiàn)在也已經(jīng)有一些平臺(tái)能完成這一些過(guò)程,例如谷歌的 AutoML 和百度的 EasyDL 等,。
EasyDL 主頁(yè):http://ai.baidu.com/easydl/
如下所示為 EasyDL 訓(xùn)練模型的基本流程,,整個(gè)過(guò)程都是圖形化操作,且如果是上傳已經(jīng)處理好的數(shù)據(jù),,那么強(qiáng)大的遷移學(xué)習(xí)系統(tǒng)會(huì)在幾分鐘內(nèi)完成模型的訓(xùn)練,。百度 AI 開(kāi)放平臺(tái)文檔中心對(duì) EasyDL 的建模過(guò)程有詳細(xì)的描述,因?yàn)檫@一圖形化的系統(tǒng)非常簡(jiǎn)明,,所以文檔也通俗易懂,。
如上所示,EasyDL 將整個(gè)服務(wù)精煉為四個(gè)步驟,,并且可以在不需要機(jī)器學(xué)習(xí)背景知識(shí)的情況下開(kāi)發(fā)模型,。創(chuàng)建模型只需要選擇我們?nèi)蝿?wù)所屬的類(lèi)別,例如圖像分類(lèi)或目標(biāo)檢測(cè)等,。訓(xùn)練模型只是選擇我們創(chuàng)建的任務(wù)與數(shù)據(jù),,再點(diǎn)擊訓(xùn)練就行了,系統(tǒng)會(huì)自動(dòng)搜索各種模型架構(gòu)和超參數(shù),。最后上線(xiàn)模型同樣也只需要確定到底是獲取云端 API 還是離線(xiàn) SDK,,整個(gè)過(guò)程不會(huì)涉及到復(fù)雜的算法與工程方面問(wèn)題,。
EasyDL 在 2017 年 11 月初上線(xiàn)了定制化圖像識(shí)別服務(wù),并在業(yè)內(nèi)展開(kāi)公開(kāi)測(cè)試,。在 2018 年 4 月,、5 月和 7 月陸續(xù)發(fā)布了定制化物體檢測(cè)服務(wù)、定制化模型設(shè)備端計(jì)算和定制化聲音識(shí)別等多個(gè)定制化能力方向,,并形成了從訓(xùn)練數(shù)據(jù)到最終定制化服務(wù)的一站式端云一體平臺(tái),。目前 EasyDL 的各項(xiàng)定制能力在業(yè)內(nèi)廣泛應(yīng)用,累計(jì)過(guò)萬(wàn)用戶(hù),,在包括零售、安防,、互聯(lián)網(wǎng)內(nèi)容審核,、工業(yè)質(zhì)檢等等數(shù)十個(gè)行業(yè)都有應(yīng)用落地,并提升了這些行業(yè)的智能化水平和生產(chǎn)效率,。
主要技術(shù)手段
EasyDL 的主要優(yōu)勢(shì)在應(yīng)用案例的累積,、簡(jiǎn)明的產(chǎn)品設(shè)計(jì)與操作流程、支持移動(dòng)端計(jì)算與部署等,,而支持這些優(yōu)勢(shì)的是 EasyDL 背后各種主要技術(shù)手段,。例如 AI Workflow 統(tǒng)一大數(shù)據(jù)工程系統(tǒng)與分布式訓(xùn)練系統(tǒng),為 EasyDL 提供穩(wěn)定的系統(tǒng)和流程支持,;采用 PaddlePaddle 作為基本框架,,為模型的搭建提供基礎(chǔ);采用 Auto Model Search 自動(dòng)搜索模型超參數(shù),,支持獲得更好的訓(xùn)練效果,;采用遷移學(xué)習(xí)訓(xùn)練較小的用戶(hù)數(shù)據(jù)集,從而大大加強(qiáng)訓(xùn)練效率與效果等,。
AI Workflow 與 PaddlePaddle
AI Workflow 是百度對(duì)機(jī)器學(xué)習(xí)從訓(xùn)練到上線(xiàn)構(gòu)建的工作流引擎,,它是一個(gè)將大數(shù)據(jù)成熟的工程系統(tǒng)與人工智能分布式模型訓(xùn)練相結(jié)合的引擎。它覆蓋了從訓(xùn)練數(shù)據(jù)的存儲(chǔ),,ETL(抽取,、交互轉(zhuǎn)換和加載)、模型訓(xùn)練任務(wù)的發(fā)起,、訓(xùn)練集群資源調(diào)度,、訓(xùn)練狀態(tài)監(jiān)控同步、模型自動(dòng)部署,、服務(wù)發(fā)布上線(xiàn)等全部環(huán)節(jié),,并實(shí)現(xiàn)了全自動(dòng)流程。
總體而言,,AI Workflow 的主要流程可以分為四個(gè)階段,。首先第一階段是對(duì)數(shù)據(jù)進(jìn)行預(yù)處理,,例如對(duì)圖像實(shí)現(xiàn)歸一化、大小裁剪與數(shù)據(jù)增強(qiáng)等,。隨后第二階段是模型的訓(xùn)練,,或者說(shuō)是學(xué)習(xí)過(guò)程,這一階段會(huì)基于百度研發(fā)的深度學(xué)習(xí)框架 PaddlePaddle 進(jìn)行分布式訓(xùn)練,。訓(xùn)練完模型后,,第三階段就需要驗(yàn)證模型的效果,也就是說(shuō)用戶(hù)可以上傳小規(guī)模的測(cè)試數(shù)據(jù),,并對(duì)模型的召回率與精度等指標(biāo)進(jìn)行驗(yàn)證,。最后第四階段為服務(wù)的上線(xiàn)或模型的部署,在這個(gè)過(guò)程中我們可以將已訓(xùn)練模型加載到云端并對(duì)外提供服務(wù),,也可以打包為一組移動(dòng)端開(kāi)發(fā)套件,,為進(jìn)一步集成到其它任務(wù)中提供接口。
整個(gè) AI Workflow 在系統(tǒng)層面和服務(wù)層面同樣也會(huì)有一些優(yōu)化,,例如 PaddlePaddle 團(tuán)隊(duì)會(huì)對(duì)模型的訓(xùn)練階段做很多優(yōu)化,,包括 GPU 的內(nèi)核融合和利用 RDMA 優(yōu)化分布式訓(xùn)練等。而 EasyDL 團(tuán)隊(duì)這邊也會(huì)在服務(wù)層面做一些優(yōu)化,,例如在推理階段中,,他們需要優(yōu)化任務(wù)調(diào)度,并加速模型推理速度,。
在 AI Workflow 中,,整個(gè)訓(xùn)練和推理階段都是使用 PaddlePaddle 框架,它包含了許多高性能的模型算法實(shí)現(xiàn), 為最終出色的效果提供了強(qiáng)有力的支撐,。雖然 EasyDL 的用戶(hù)不需要了解與使用 PaddlePaddle,,但其多年的 AI 技術(shù)積累以及大量的業(yè)務(wù)使用驗(yàn)證,使得框架對(duì)于各種任務(wù)都非常安全穩(wěn)定,。
此外針對(duì)于移動(dòng)端部署,,Paddle-Mobile 設(shè)計(jì)之初就對(duì)嵌入式的性能、體積,、能耗,、硬件平臺(tái)覆蓋等方面做了考慮。而 EasyDL 的端計(jì)算版本也是使用該框架設(shè)計(jì)更緊湊與高效的模型,,并將其發(fā)布到移動(dòng)端,。
自動(dòng)模型搜索與遷移學(xué)習(xí)
目前 EasyDL 采用了 Auto Model Search 的算法,即系統(tǒng)會(huì)同時(shí)發(fā)起多個(gè)模型結(jié)構(gòu)和超參數(shù)不同的訓(xùn)練,,并采用對(duì)應(yīng)算法進(jìn)行最終模型的篩選,,從而確保更優(yōu)的模型效果。Auto Model Search 與后文介紹的 AutoDL 在功能上是相近的,,但百度的 AutoDL 是一種神經(jīng)架構(gòu)搜索方法,,它關(guān)注于利用強(qiáng)化學(xué)習(xí)從頭構(gòu)建神經(jīng)網(wǎng)絡(luò),。
Auto Model Search 是指對(duì)于同一方向的定制能力,也就是說(shuō)它會(huì)采用多個(gè)經(jīng)典模型以及不同的超參數(shù)配置,,并分別進(jìn)行訓(xùn)練,。然后再按一些策略挑選出比較好的結(jié)果,并完成模型的上線(xiàn),。其中系統(tǒng)可調(diào)的超參數(shù)包含神經(jīng)網(wǎng)絡(luò)類(lèi)型的選擇,,例如對(duì)于圖像分類(lèi)可以選擇 Inception、ResNet 或者其他,。而對(duì)于每一個(gè)模型,,可選的超參數(shù)包含批量大小、迭代數(shù)量和卷積核大小等,。在確定模型架構(gòu),,并配置完超參數(shù)后,每一個(gè)單獨(dú)的模型都會(huì)并行的訓(xùn)練,,并按一定策略選擇效果最好的模型。
其實(shí) Auto Model Search 是針對(duì)特定用戶(hù)數(shù)據(jù)的,,在用戶(hù)上傳與他們?nèi)蝿?wù)相關(guān)的數(shù)據(jù)后,,EasyDL 會(huì)抽取多個(gè)已訓(xùn)練深度網(wǎng)絡(luò),并采用遷移學(xué)習(xí)和不同的超參配置精調(diào)這些深度網(wǎng)絡(luò),。如下所示在用戶(hù)確定好小型數(shù)據(jù)集后,,EasyDL 可能會(huì)選擇 Inception v3/v4 和 ResNet 等,在固定這幾個(gè)網(wǎng)絡(luò)前面層級(jí)的權(quán)重后,,系統(tǒng)會(huì)根據(jù)用戶(hù)數(shù)據(jù)以及不同的批量大小和學(xué)習(xí)率訓(xùn)練網(wǎng)絡(luò),。
EasyDL 大量采用了遷移學(xué)習(xí)技術(shù),各種基礎(chǔ)模型會(huì)在百度大規(guī)模數(shù)據(jù)集上進(jìn)行預(yù)訓(xùn)練,,并將從中學(xué)習(xí)到的知識(shí)(Knowledge)運(yùn)用到用戶(hù)提交的小規(guī)模訓(xùn)練數(shù)據(jù)集上,,從而實(shí)現(xiàn)出色的模型效果和快速的模型訓(xùn)練。遷移學(xué)習(xí)的主干是非常大的網(wǎng)絡(luò),,而一般我們每一類(lèi)只需要使用 20 到 100 多張圖像就能完成對(duì)后面層級(jí)的訓(xùn)練,,且 EasyDL 也會(huì)采用 Early Stopping 等正則化手段降低模型過(guò)擬合的風(fēng)險(xiǎn)。
圖像的遷移學(xué)習(xí)可能比較好處理,,但 EasyDL 的聲音分類(lèi)并不需要太關(guān)注序列上的長(zhǎng)期依賴(lài)關(guān)系,,因此它也能使用遷移學(xué)習(xí)。聲音分類(lèi)的遷移主要會(huì)采用 MFCC 或加上快速傅立葉變換將音頻的時(shí)域數(shù)據(jù)轉(zhuǎn)換為頻域的圖,,然后再利用與計(jì)算機(jī)視覺(jué)相類(lèi)似的遷移方法傳遞與音頻相關(guān)的知識(shí),。而以后在處理語(yǔ)音識(shí)別等存在長(zhǎng)期依賴(lài)性的數(shù)據(jù)時(shí),主體模型可能會(huì)繼續(xù)用到其它遷移知識(shí)的技術(shù),。
此外對(duì)于圖像方面的遷移學(xué)習(xí),,如果用戶(hù)需要區(qū)分非常精細(xì)的圖片或執(zhí)行細(xì)粒度識(shí)別任務(wù),,那么一般遷移學(xué)習(xí)主要會(huì)獲取圖像的全局信息,它很難抽取精細(xì)特征,。EasyDL 其實(shí)也能處理這些細(xì)粒度識(shí)別任務(wù),,但遷移效果很大程度上會(huì)受到用戶(hù)數(shù)據(jù)的影響。因此訓(xùn)練集圖片需要和實(shí)際場(chǎng)景要識(shí)別的圖片環(huán)境一致,,且對(duì)于細(xì)粒度識(shí)別這種具有很多相似圖像的任務(wù),,用戶(hù)需要增加更多的訓(xùn)練圖像。
最后,,為了提升模型遷移效果,,EasyDL 會(huì)做一些特別的數(shù)據(jù)增強(qiáng)操作,即增加一些圖像以加強(qiáng)模型的遷移效果,。例如假定用戶(hù)希望系統(tǒng)能識(shí)別兩個(gè)類(lèi)別,,并為這兩個(gè)類(lèi)別提供了特定的數(shù)據(jù),那么系統(tǒng)會(huì)自動(dòng)增加其它一些數(shù)據(jù),,并作為第三個(gè)類(lèi)別,。在訓(xùn)練中,系統(tǒng)不僅需要識(shí)別用戶(hù)的數(shù)據(jù),,同時(shí)還需要識(shí)別自動(dòng)添加的數(shù)據(jù)為第三類(lèi)別,。
神經(jīng)架構(gòu)搜索
EasyDL 即將引入百度領(lǐng)先的 AutoDL 技術(shù),這是一種 AutoML 的技術(shù),,它實(shí)現(xiàn)了深度學(xué)習(xí)網(wǎng)絡(luò)結(jié)構(gòu)的自動(dòng)搜索和設(shè)計(jì),。百度的 AutoDL 是工業(yè)界中的一個(gè)項(xiàng)目,因此它主要由三部分組成,,首先第一部分是從頭開(kāi)始搜索神經(jīng)網(wǎng)絡(luò)架構(gòu),,即神經(jīng)架構(gòu)搜索。第二部分是神經(jīng)網(wǎng)絡(luò)的自動(dòng)適配,,也就是說(shuō)根據(jù)不同的任務(wù)目標(biāo)與需要進(jìn)行適配,,比如說(shuō)目標(biāo)是部署模型到移動(dòng)端,那么系統(tǒng)就需要考慮正確率,、參數(shù)量和計(jì)算量等條件來(lái)適配網(wǎng)絡(luò),。第三部分是設(shè)計(jì)網(wǎng)絡(luò)的遷移能力,AutoDL 希望搜索出具有強(qiáng)大遷移能力的一般性神經(jīng)網(wǎng)絡(luò)架構(gòu),。實(shí)際上架構(gòu)搜索與遷移能力是存在相對(duì)關(guān)系的,,系統(tǒng)花大量計(jì)算資源希望搜索到針對(duì)特定數(shù)據(jù)有強(qiáng)大能力的架構(gòu),而可遷移性又希望系統(tǒng)找到的架構(gòu)能推廣到其它更多的數(shù)據(jù),。
在架構(gòu)搜索策略上,,目前比較流行的有進(jìn)化策略、強(qiáng)化學(xué)習(xí)和基于梯度的連續(xù)空間搜索方法。而百度的 AutoDL 主要是基于強(qiáng)化學(xué)習(xí),,其核心思路是希望能搜索到盡可能廣的空間,。為了將神經(jīng)架構(gòu)搜索構(gòu)造為強(qiáng)化學(xué)習(xí)問(wèn)題,神經(jīng)架構(gòu)的生成可以視為智能體對(duì)動(dòng)作的選擇,,動(dòng)作空間也就相當(dāng)于搜索空間,。智能體獲得的獎(jiǎng)勵(lì)會(huì)根據(jù)已訓(xùn)練架構(gòu)在驗(yàn)證數(shù)據(jù)上的性能評(píng)估而定義。
不同的 RL 方法在表示智能體的策略和如何優(yōu)化它們存在差異:Zoph 等研究者使用循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)策略對(duì)一個(gè)字符串進(jìn)行序列采樣,,該字符串反過(guò)來(lái)對(duì)神經(jīng)架構(gòu)進(jìn)行編碼,。Baker 等人利用 Q-learning 訓(xùn)練策略,該策略依次選擇層的類(lèi)型和對(duì)應(yīng)的超參數(shù),。這些研究,,包括谷歌大腦早期提出來(lái)的 NASNet,它們都引入了非常強(qiáng)的先驗(yàn)知識(shí),。
例如 NASNet 規(guī)定了網(wǎng)絡(luò)實(shí)際上有多少單元,,這些單元的搭建方式也是手動(dòng)設(shè)計(jì)的,系統(tǒng)只需要自動(dòng)設(shè)計(jì)單元的具體結(jié)構(gòu),。而設(shè)計(jì)具體的單元結(jié)構(gòu)也會(huì)存在一些先驗(yàn)知識(shí),,例如限制單元必須是兩個(gè)操作輸出一個(gè)結(jié)果等。AutoDL 主要的方向是希望搜索任何有向無(wú)環(huán)圖結(jié)構(gòu),,這樣模型的表達(dá)能力和搜索空間就遠(yuǎn)遠(yuǎn)大于之前的方法,。此外由于降低了搜索的先驗(yàn)知識(shí),因此計(jì)算力會(huì)變得非常大,,這也就對(duì)強(qiáng)化學(xué)習(xí)的采樣效率有非常高的要求。
三階段的層級(jí)架構(gòu)表征,,組成有向無(wú)環(huán)圖,。
除了神經(jīng)架構(gòu)搜索,模型的適配也是非常重要的方向,。AutoDL 會(huì)將很多目標(biāo)添加到強(qiáng)化學(xué)習(xí)的反饋值,,例如我們考慮一些多任務(wù)學(xué)習(xí),模型會(huì)有一套衡量參數(shù)量,、計(jì)算量與正確率的方法,,并最終反饋到強(qiáng)化學(xué)習(xí),從而修正搜索方向,。
AutoDL 采用的是一種 Hierarchical RL,,它同樣也是基于 on policy。因?yàn)?AutoDL 的搜索空間非常大,,系統(tǒng)需要一些結(jié)構(gòu)性的探索,,因此搜索空間的探索才回更有效率一些。NASNet 之前第一個(gè)版本是基于策略梯度(PG),,第二版本是基于近端策略?xún)?yōu)化(PPO),,雖然它們的抽樣效率比較低,,但它們確實(shí)展示了強(qiáng)化學(xué)習(xí)在這一方面的能力。所以總體而言,,AutoDL 主要還是沿著 NASNet 所開(kāi)辟的方法,,并利用其它技術(shù)與技巧提高采樣效率。
模型部署與設(shè)備端計(jì)算
目前 EasyDL 有兩種發(fā)布服務(wù)的方式,,即生成在線(xiàn) API 和離線(xiàn) SDK,。從應(yīng)用場(chǎng)景來(lái)說(shuō),在線(xiàn) API 能讓開(kāi)發(fā)者更方便地與業(yè)務(wù)系統(tǒng)整合,,因?yàn)樵诰€(xiàn) API 畢竟是 HTTP 層面的接口,。而離線(xiàn) SDK 有更低的調(diào)用延遲,對(duì)互聯(lián)網(wǎng)的依賴(lài)性也沒(méi)有那么強(qiáng),,它可以利用本地計(jì)算資源實(shí)現(xiàn)更安全與穩(wěn)定的計(jì)算,。而從技術(shù)實(shí)現(xiàn)來(lái)看,在線(xiàn) API 是云計(jì)算的形式,,離線(xiàn) SDK 是端計(jì)算的形式,,它們主要的差別在于是不是需要對(duì)性能與能耗做權(quán)衡。
目前可以實(shí)現(xiàn)在 Android,、iOS 等系統(tǒng)的 GPU,、NPU 等芯片上對(duì)定制模型預(yù)測(cè)階段計(jì)算的加速。
在線(xiàn) API 的能耗主要出現(xiàn)在服務(wù)端,,系統(tǒng)不需要做太多的量化或者模型剪枝等優(yōu)化,,模型也不需要做特定的壓縮。此外,,在線(xiàn) API 對(duì)于芯片端的優(yōu)化也只需要考慮各種云端 GPU 來(lái)做一系列的推理加速,。但是移動(dòng)端的話(huà)選擇非常豐富,例如可以是針對(duì)高通系列的芯片,、也可以針對(duì)神經(jīng)網(wǎng)絡(luò) NPU 或者針對(duì)可插拔的 Intel Movidius 加速卡進(jìn)行優(yōu)化,。因此離線(xiàn) SDK 的技術(shù)實(shí)現(xiàn)相對(duì)而言要難一些。
一般對(duì)于機(jī)器學(xué)習(xí)開(kāi)發(fā)者而言,,在云端訓(xùn)練一個(gè)模型,,并部署為一個(gè)服務(wù)已經(jīng)比較成熟。但將模型遷移到設(shè)備端仍然會(huì)面臨很多困難,,開(kāi)發(fā)者需要考慮硬件兼容,、能耗與性能等非常具體的問(wèn)題。EasyDL 在發(fā)布離線(xiàn) SDK 的過(guò)程中就已經(jīng)自動(dòng)做了很多工程優(yōu)化,,包括對(duì)輕量模型的選擇和對(duì)計(jì)算階段的量化等,。其中選擇輕量架構(gòu)可以大幅度降低模型大小,量化可以大量降低包體大小,它們都能加速應(yīng)用在內(nèi)存中的加載,。
總的而言對(duì)于設(shè)備端計(jì)算加速,,首先 EasyDL 會(huì)選擇 MobileNet 和 ShuffleNet 等輕量級(jí)的模型,例如在目標(biāo)檢測(cè)中,,系統(tǒng)可能會(huì)使用 MobileNet 代替 SSD 中的主干網(wǎng)絡(luò),,因而獲得更高能效比。第二點(diǎn)是系統(tǒng)會(huì)通過(guò)模型剪枝將不太重要的網(wǎng)絡(luò)參數(shù)去掉,,例如去掉 CNN 中權(quán)重小于某個(gè)閾值的連接或直接去掉不太重要的卷積核,。第三點(diǎn)會(huì)采用量化操作加速推理階段的計(jì)算,其主要思想是降低卷積運(yùn)算中數(shù)值的精度,,從而降低整體的計(jì)算量與參數(shù)存儲(chǔ)空間,。
設(shè)備端加速第四點(diǎn)會(huì)采用很多指令集,包括 ARM 和 Neon 等,,其中 Neon 是一種單指令多數(shù)據(jù)的指令集,,系統(tǒng)可以通過(guò)一條指令加速多條數(shù)據(jù),這些都是硬件層面的加速,。最后設(shè)備端還能從計(jì)算單元的角度進(jìn)行加速,,例如 GPU 和 NPU 等。