0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

深度學(xué)習(xí)模型的部署方法

新機(jī)器視覺 ? 來源:計(jì)算機(jī)視覺研究院專欄 ? 作者:Edison_G ? 2022-12-01 11:30 ? 次閱讀

當(dāng)我們辛苦收集數(shù)據(jù)、數(shù)據(jù)清洗、搭建環(huán)境、訓(xùn)練模型、模型評估測試后,終于可以應(yīng)用到具體場景,但是,突然發(fā)現(xiàn)不知道怎么調(diào)用自己的模型,更不清楚怎么去部署模型! 這也是今天“計(jì)算機(jī)視覺研究院”要和大家分享的內(nèi)容,部署模型需要考慮哪些問題,考慮哪些步驟及現(xiàn)在常用的部署方法! 今天內(nèi)容較多,感興趣的請收藏慢慢閱讀!

1

背景

當(dāng)我們辛苦收集數(shù)據(jù)、數(shù)據(jù)清洗、搭建環(huán)境、訓(xùn)練模型、模型評估測試后,終于可以應(yīng)用到具體場景,但是,突然發(fā)現(xiàn)不知道怎么調(diào)用自己的模型,更不清楚怎么去部署模型!

9a503200-6e58-11ed-8abf-dac502259ad0.png

使用GPU Coder生成整個(gè)端到端應(yīng)用程序的代碼

深度學(xué)習(xí)模型部署到生產(chǎn)環(huán)境面臨兩大挑戰(zhàn):

我們需要支持多種不同的框架和模型,這導(dǎo)致開發(fā)復(fù)雜性,還存在工作流問題。數(shù)據(jù)科學(xué)家開發(fā)基于新算法和新數(shù)據(jù)的新模型,我們需要不斷更新生產(chǎn)環(huán)境

如果我們使用英偉達(dá)GPU提供出眾的推理性能。首先,GPU是強(qiáng)大的計(jì)算資源,每GPU運(yùn)行一個(gè)模型可能效率低下。在單個(gè)GPU上運(yùn)行多個(gè)模型不會(huì)自動(dòng)并發(fā)運(yùn)行這些模型以盡量提高GPU利用率

9a7898c6-6e58-11ed-8abf-dac502259ad0.png

Matlab案例

能從數(shù)據(jù)中學(xué)習(xí),識(shí)別模式并在極少需要人為干預(yù)的情況下做出決策的系統(tǒng)令人興奮。深度學(xué)習(xí)是一種使用神經(jīng)網(wǎng)絡(luò)機(jī)器學(xué)習(xí),正迅速成為解決對象分類到推薦系統(tǒng)等許多不同計(jì)算問題的有效工具。然而,將經(jīng)過訓(xùn)練的神經(jīng)網(wǎng)絡(luò)部署到應(yīng)用程序和服務(wù)中可能會(huì)給基礎(chǔ)設(shè)施經(jīng)理帶來挑戰(zhàn)。多個(gè)框架、未充分利用的基礎(chǔ)設(shè)施和缺乏標(biāo)準(zhǔn)實(shí)施,這些挑戰(zhàn)甚至可能導(dǎo)致AI項(xiàng)目失敗。今天就探討了如何應(yīng)對這些挑戰(zhàn),并在數(shù)據(jù)中心或云端將深度學(xué)習(xí)模型部署到生產(chǎn)環(huán)境。

一般來說,我們應(yīng)用開發(fā)人員與數(shù)據(jù)科學(xué)家和IT部門合作,將AI模型部署到生產(chǎn)環(huán)境。數(shù)據(jù)科學(xué)家使用特定的框架來訓(xùn)練面向眾多使用場景的機(jī)器/深度學(xué)習(xí)模型。我們將經(jīng)過訓(xùn)練的模型整合到為解決業(yè)務(wù)問題而開發(fā)的應(yīng)用程序中。然后,IT運(yùn)營團(tuán)隊(duì)在數(shù)據(jù)中心或云端運(yùn)行和管理已部署的應(yīng)用程序。

2

部署需求

02:24

以下需求講解轉(zhuǎn)自于《知乎-田子宸》

鏈接:https://www.zhihu.com/question/329372124/answer/743251971

需求一:簡單的demo演示,只看看效果

caffe、tf、pytorch等框架隨便選一個(gè),切到test模式,拿python跑一跑就好,順手寫個(gè)簡單的GUI展示結(jié)果;高級一點(diǎn),可以用CPython包一層接口,然后用C++工程去調(diào)用

需求二:要放到服務(wù)器上去跑,不要求吞吐和時(shí)延

caffe、tf、pytorch等框架隨便選一個(gè),按照官方的部署教程,老老實(shí)實(shí)用C++部署,例如pytorch模型用工具導(dǎo)到libtorch下跑。這種還是沒有脫離框架,有很多為訓(xùn)練方便保留的特性沒有去除,性能并不是最優(yōu)的。另外,這些框架要么CPU,要么NVIDIA GPU,對硬件平臺(tái)有要求,不靈活;還有,框架是真心大,占內(nèi)存(tf還占顯存),占磁盤。

需求三:放到服務(wù)器上跑,要求吞吐和時(shí)延(重點(diǎn)是吞吐)

這種應(yīng)用在互聯(lián)網(wǎng)企業(yè)居多,一般是互聯(lián)網(wǎng)產(chǎn)品的后端AI計(jì)算,例如人臉驗(yàn)證、語音服務(wù)、應(yīng)用了深度學(xué)習(xí)的智能推薦等。由于一般是大規(guī)模部署,這時(shí)不僅僅要考慮吞吐和時(shí)延,還要考慮功耗和成本。所以除了軟件外,硬件也會(huì)下功夫。

硬件上,比如使用推理專用的NVIDIA P4、寒武紀(jì)MLU100等。這些推理卡比桌面級顯卡功耗低,單位能耗下計(jì)算效率更高,且硬件結(jié)構(gòu)更適合高吞吐量的情況。

軟件上,一般都不會(huì)直接上深度學(xué)習(xí)框架。對于NVIDIA的產(chǎn)品,一般都會(huì)使用TensorRT來加速。TensorRT用了CUDA、CUDNN,而且還有圖優(yōu)化、fp16、int8量化等。

需求四:放在NVIDIA嵌入式平臺(tái)上跑,注重時(shí)延

比如PX2、TX2、Xavier等,參考上面,也就是貴一點(diǎn)。

需求五:放在其他嵌入式平臺(tái)上跑,注重時(shí)延

硬件方面,要根據(jù)模型計(jì)算量和時(shí)延要求,結(jié)合成本和功耗要求,選合適的嵌入式平臺(tái)。

比如模型計(jì)算量大的,可能就要選擇帶GPU的SoC,用opencl/opengl/vulkan編程;也可以試試NPU,不過現(xiàn)在NPU支持的算子不多,一些自定義Op多的網(wǎng)絡(luò)可能部署不上去;

對于小模型,或者幀率要求不高的,可能用CPU就夠了,不過一般需要做點(diǎn)優(yōu)化(剪枝、量化、SIMD、匯編、Winograd等)。在手機(jī)上部署深度學(xué)習(xí)模型也可以歸在此列,只不過硬件沒得選,用戶用什么手機(jī)你就得部署在什么手機(jī)上。

上述部署和優(yōu)化的軟件工作,在一些移動(dòng)端開源框架都有人做掉了,一般拿來改改就可以用了,性能都不錯(cuò)。

需求六:上述部署方案不滿足你的需求

比如開源移動(dòng)端框架速度不夠——自己寫一套。比如像商湯、曠世、Momenta都有自己的前向傳播框架,性能應(yīng)該都比開源框架好。只不過自己寫一套比較費(fèi)時(shí)費(fèi)力,且如果沒有經(jīng)驗(yàn)的話,很有可能費(fèi)半天勁寫不好

粉絲福利:

MATLAB的使用 GPU Coder 將深度學(xué)習(xí)應(yīng)用部署到 NVIDIA GPU上 鏈接:https://ww2.mathworks.cn/videos/implement-deep-learning-applications-for-nvidia-gpus-with-gpu-coder-1512748950189.html NVIDIA Jetson上的目標(biāo)檢測生成和部署CUDA代碼 鏈接:https://ww2.mathworks.cn/videos/generate-and-deploy-cuda-code-for-object-detection-on-nvidia-jetson-1515438160012.html

3

部署舉例

作者:糖心他爸 鏈接:https://www.zhihu.com/question/329372124/answer/809058784

9a992f64-6e58-11ed-8abf-dac502259ad0.png

選擇嵌入式部署的場景來進(jìn)行分析

一般從離線訓(xùn)練到在線部署,我們需要依賴離線訓(xùn)練框架(靜態(tài)圖:tensorflow、caffe,動(dòng)態(tài)圖:pytorch、mxnet等),靜態(tài)圖工業(yè)部署成熟坑少,動(dòng)態(tài)圖靈活便捷、預(yù)研方便,各有各的好處;還需要依賴在線inference的框架(如阿里的MNN、騰訊的NCNN等等,一般不建議你自己去摳neon等simd底層的東西),能大大縮減你的部署周期,畢竟公司里面工期為王!

選定了上述工具鏈以后,剩下的就是我們問題所關(guān)心的如何部署,或者說的是部署流程。

一般流程分為如下幾步:

模型設(shè)計(jì)和訓(xùn)練

針對推斷框架的模型轉(zhuǎn)換

模型部署

雖然把整個(gè)流程分成三步,但三者之間是相互聯(lián)系、相互影響的。首先第一步的模型設(shè)計(jì)需要考慮推斷框架中對Op的支持程度,從而相應(yīng)的對網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行調(diào)整,進(jìn)行修改或者裁剪都是經(jīng)常的事情;模型轉(zhuǎn)換也需要確認(rèn)推斷框架是否能直接解析,或者選取的解析媒介是否支持網(wǎng)絡(luò)結(jié)構(gòu)中的所有Op,如果發(fā)現(xiàn)有不支持的地方,再權(quán)衡進(jìn)行調(diào)整。

下面我給大家推薦幾個(gè)部署案例,很多case在產(chǎn)品部署中都有應(yīng)用, 離線訓(xùn)練框架主要使用tensorflow、mxnet,在線inference框架我主要使用阿里MNN。案例請參考下面鏈接:

靜態(tài)圖的部署流程:

實(shí)戰(zhàn)MNN之Mobilenet SSD部署(含源碼)

https://zhuanlan.zhihu.com/p/70323042

詳解MNN的tf-MobilenetSSD-cpp部署流程

https://zhuanlan.zhihu.com/p/70610865

詳解MNN的tflite-MobilenetSSD-c++部署流程

https://zhuanlan.zhihu.com/p/72247645

基于tensorflow的BlazeFace-lite人臉檢測器

https://zhuanlan.zhihu.com/p/79047443

BlazeFace: 亞毫秒級的人臉檢測器(含代碼)

https://zhuanlan.zhihu.com/p/73741766

動(dòng)態(tài)圖的部署流程:

PFLD-lite:基于MNN和mxnet的嵌入式部署

https://zhuanlan.zhihu.com/p/80051906

整合mxnet和MNN的嵌入式部署流程

https://zhuanlan.zhihu.com/p/75742333

整合Pytorch和MNN的嵌入式部署流程

https://zhuanlan.zhihu.com/p/76605363

4

深度學(xué)習(xí)模型部署方法

出處:智云視圖 鏈接:https://www.zhihu.com/question/329372124/answer/1243127566 主要介紹offline的部署方法

主要分兩個(gè)階段,第一個(gè)階段是訓(xùn)練并得到模型,第二個(gè)階段則是在得到模型后,在移動(dòng)端進(jìn)行部署。本文主要講解的為第二階段。

訓(xùn)練模型

在第一階段訓(xùn)練模型中,已經(jīng)有很成熟的開源框架和算法進(jìn)行實(shí)現(xiàn),但是為了能部署到移動(dòng)端,還需要進(jìn)行壓縮加速。

壓縮網(wǎng)絡(luò)

目前深度學(xué)習(xí)在各個(gè)領(lǐng)域輕松碾壓傳統(tǒng)算法,不過真正用到實(shí)際項(xiàng)目中卻會(huì)有很大的問題:

計(jì)算量非常巨大

模型占用很高內(nèi)存

由于移動(dòng)端系統(tǒng)資源有限,而深度學(xué)習(xí)模型可能會(huì)高達(dá)幾百M(fèi),因此很難將深度學(xué)習(xí)應(yīng)用到移動(dòng)端系統(tǒng)中去。

壓縮方法

綜合現(xiàn)有的深度模型壓縮方法,它們主要分為四類:

基于參數(shù)修剪和共享的方法針對模型參數(shù)的冗余性,試圖去除冗余和不重要的項(xiàng)?;诘椭纫蜃臃纸獾募夹g(shù)使用矩陣/張量分解來估計(jì)深度學(xué)習(xí)模型的信息參數(shù)?;趥鬏?緊湊卷積濾波器的方法設(shè)計(jì)了特殊的結(jié)構(gòu)卷積濾波器來降低存儲(chǔ)和計(jì)算復(fù)雜度。知識(shí)蒸餾方法通過學(xué)習(xí)一個(gè)蒸餾模型,訓(xùn)練一個(gè)更緊湊的神經(jīng)網(wǎng)絡(luò)來重現(xiàn)一個(gè)更大的網(wǎng)絡(luò)的輸出。

一般來說,參數(shù)修剪和共享,低秩分解和知識(shí)蒸餾方法可以用于全連接層和卷積層的CNN,但另一方面,使用轉(zhuǎn)移/緊湊型卷積核的方法僅支持卷積層。低秩因子分解和基于轉(zhuǎn)換/緊湊型卷積核的方法提供了一個(gè)端到端的流水線,可以很容易地在CPU/GPU環(huán)境中實(shí)現(xiàn)。相反參數(shù)修剪和共享使用不同的方法,如矢量量化,二進(jìn)制編碼和稀疏約束來執(zhí)行任務(wù),這導(dǎo)致常需要幾個(gè)步驟才能達(dá)到目標(biāo)。

移動(dòng)端部署

目前,很多公司都推出了開源的移動(dòng)端深度學(xué)習(xí)框架,基本不支持訓(xùn)練,只支持前向推理。這些框架都是 offline 方式,它可確保用戶數(shù)據(jù)的私有性,可不再依賴于因特網(wǎng)連接。

Caffe2

9aba5e50-6e58-11ed-8abf-dac502259ad0.png

2017年4月19日 Facebook在F8開發(fā)者大會(huì)上推出Caffe2。項(xiàng)目是專門為手機(jī)定制的深度框架,是在caffe2 的基礎(chǔ)上進(jìn)行遷移的,目的就是讓最普遍的智能設(shè)備——手機(jī)也能廣泛高效地應(yīng)用深度學(xué)習(xí)算法。

開源地址: facebookarchive/caffe2

TensorFlow Lite

9ad3c958-6e58-11ed-8abf-dac502259ad0.png

2017年5月17日 Goole在I/O大會(huì)推出TensorFlow Lite,是專門為移動(dòng)設(shè)備而優(yōu)化的 TensorFlow 版本。TensorFlow Lite 具備以下三個(gè)重要功能:

輕量級(Lightweight):支持機(jī)器學(xué)習(xí)模型的推理在較小二進(jìn)制數(shù)下進(jìn)行,能快速初始化/啟動(dòng)

跨平臺(tái)(Cross-platform):可以在許多不同的平臺(tái)上運(yùn)行,現(xiàn)在支持 AndroidiOS

快速(Fast):針對移動(dòng)設(shè)備進(jìn)行了優(yōu)化,包括大大減少了模型加載時(shí)間、支持硬件加速

模塊如下:

TensorFlow Model: 存儲(chǔ)在硬盤上已經(jīng)訓(xùn)練好的 TensorFlow 模型

TensorFlow Lite Converter: 將模型轉(zhuǎn)換為 TensorFlow Lite 文件格式的程序

TensorFlow Lite Model File: 基于 FlatBuffers 的模型文件格式,針對速度和大小進(jìn)行了優(yōu)化。

TensorFlow Lite 目前支持很多針對移動(dòng)端訓(xùn)練和優(yōu)化好的模型。

Core ML

9af0f8f2-6e58-11ed-8abf-dac502259ad0.png

2017年6月6日 Apple在WWDC大會(huì)上推出Core ML。對機(jī)器學(xué)習(xí)模型的訓(xùn)練是一項(xiàng)很重的工作,Core ML 所扮演的角色更多的是將已經(jīng)訓(xùn)練好的模型轉(zhuǎn)換為 iOS 可以理解的形式,并且將新的數(shù)據(jù)“喂給”模型,獲取輸出。抽象問題和創(chuàng)建模型雖然并不難,但是對模型的改進(jìn)和訓(xùn)練可以說是值得研究一輩子的事情,這篇文章的讀者可能也不太會(huì)對此感冒。好在 Apple 提供了一系列的工具用來將各類機(jī)器學(xué)習(xí)模型轉(zhuǎn)換為 Core ML 可以理解的形式。籍此,你就可以輕松地在你的 iOS app 里使用前人訓(xùn)練出的模型。這在以前可能會(huì)需要你自己去尋找模型,然后寫一些 C++ 的代碼來跨平臺(tái)調(diào)用,而且難以利用 iOS 設(shè)備的 GPU 性能和 Metal (除非你自己寫一些 shader 來進(jìn)行矩陣運(yùn)算)。Core ML 將使用模型的門檻降低了很多。

Core ML 在背后驅(qū)動(dòng)了 iOS 的視覺識(shí)別的 Vision 框架和 Foundation 中的語義分析相關(guān) API。普通開發(fā)者可以從這些高層的 API 中直接獲益,比如人臉圖片或者文字識(shí)別等。這部分內(nèi)容在以前版本的 SDK 中也存在,不過在 iOS 11 SDK 中它們被集中到了新的框架中,并將一些更具體和底層的控制開放出來。比如你可以使用 Vision 中的高層接口,但是同時(shí)指定底層所使用的模型。這給 iOS 的計(jì)算機(jī)視覺帶來了新的可能。

MACE

9b0c77e4-6e58-11ed-8abf-dac502259ad0.png

小米開源了深度學(xué)習(xí)框架MACE,有幾個(gè)特點(diǎn):異構(gòu)加速、匯編級優(yōu)化、支持各種框架的模型轉(zhuǎn)換。

有了異構(gòu),就可以在CPU、GPU和DSP上跑不同的模型,實(shí)現(xiàn)真正的生產(chǎn)部署,比如人臉檢測、人臉識(shí)別和人臉跟蹤,可以同時(shí)跑在不同的硬件上。小米支持的GPU不限于高通,這點(diǎn)很通用,很好,比如瑞芯微的RK3299就可以同時(shí)發(fā)揮出cpu和GPU的好處來。

9b1e9424-6e58-11ed-8abf-dac502259ad0.png

MACE 是專門為移動(dòng)設(shè)備優(yōu)化的深度學(xué)習(xí)模型預(yù)測框架,MACE 從設(shè)計(jì)之初,便針對移動(dòng)設(shè)備的特點(diǎn)進(jìn)行了專門的優(yōu)化:

速度:對于放在移動(dòng)端進(jìn)行計(jì)算的模型,一般對整體的預(yù)測延遲有著非常高的要求。在框架底層,針對ARM CPU進(jìn)行了NEON指令級優(yōu)化,針對移動(dòng)端GPU,實(shí)現(xiàn)了高效的OpenCL內(nèi)核代碼。針對高通DSP,集成了nnlib計(jì)算庫進(jìn)行HVX加速。同時(shí)在算法層面,采用Winograd算法對卷積進(jìn)行加速。

功耗:移動(dòng)端對功耗非常敏感,框架針對ARM處理器的big.LITTLE架構(gòu),提供了高性能,低功耗等多種組合配置。針對Adreno GPU,提供了不同的功耗性能選項(xiàng),使得開發(fā)者能夠?qū)π阅芎凸倪M(jìn)行靈活的調(diào)整。

系統(tǒng)響應(yīng):對于GPU計(jì)算模式,框架底層對OpenCL內(nèi)核自適應(yīng)的進(jìn)行分拆調(diào)度,保證GPU渲染任務(wù)能夠更好的進(jìn)行搶占調(diào)度,從而保證系統(tǒng)的流暢度。

初始化延遲:在實(shí)際項(xiàng)目中,初始化時(shí)間對用戶體驗(yàn)至關(guān)重要,框架對此進(jìn)行了針對性的優(yōu)化。

內(nèi)存占用:通過對模型的算子進(jìn)行依賴分析,引入內(nèi)存復(fù)用技術(shù),大大減少了內(nèi)存的占用。

模型保護(hù):對于移動(dòng)端模型,知識(shí)產(chǎn)權(quán)的保護(hù)往往非常重要,MACE支持將模型轉(zhuǎn)換成C++代碼,大大提高了逆向工程的難度。

此外,MACE 支持 TensorFlow 和 Caffe 模型,提供轉(zhuǎn)換工具,可以將訓(xùn)練好的模型轉(zhuǎn)換成專有的模型數(shù)據(jù)文件,同時(shí)還可以選擇將模型轉(zhuǎn)換成C++代碼,支持生成動(dòng)態(tài)庫或者靜態(tài)庫,提高模型保密性。

目前MACE已經(jīng)在小米手機(jī)上的多個(gè)應(yīng)用場景得到了應(yīng)用,其中包括相機(jī)的人像模式,場景識(shí)別,圖像超分辨率,離線翻譯(即將實(shí)現(xiàn))等。

開源地址:XiaoMi/mace

MACE Model Zoo

9b31a03c-6e58-11ed-8abf-dac502259ad0.png

隨著MACE一起開源的還有MACE Model Zoo項(xiàng)目,目前包含了物體識(shí)別,場景語義分割,圖像風(fēng)格化等多個(gè)公開模型。

鏈接: XiaoMi/mace-models

FeatherCNN和NCNN

9b473f0a-6e58-11ed-8abf-dac502259ad0.png

FeatherCNN 由騰訊 AI 平臺(tái)部研發(fā),基于 ARM 架構(gòu)開發(fā)的高效神經(jīng)網(wǎng)絡(luò)前向計(jì)算庫,核心算法已申請專利。該計(jì)算庫支持 caffe 模型,具有無依賴,速度快,輕量級三大特性。該庫具有以下特性:

無依賴:該計(jì)算庫無第三方組件,靜態(tài)庫或者源碼可輕松部署于 ARM 服務(wù)器,和嵌入式終端,安卓,蘋果手機(jī)等移動(dòng)智能設(shè)備。

速度快:該計(jì)算庫是當(dāng)前性能最好的開源前向計(jì)算庫之一,在 64 核 ARM 眾核芯片上比 Caffe 和 Caffe2 快 6 倍和 12 倍,在 iPhone7 上比 Tensorflow lite 快 2.5 倍。

輕量級:該計(jì)算庫編譯后的后端 Linux 靜態(tài)庫僅 115KB , 前端 Linux 靜態(tài)庫 575KB , 可執(zhí)行文件僅 246KB 。

FeatherCNN 采用 TensorGEMM 加速的 Winograd 變種算法,以 ARM 指令集極致提升 CPU 效率,為移動(dòng)端提供強(qiáng)大的 AI 計(jì)算能力。使用該計(jì)算庫可接近甚至達(dá)到專業(yè)神經(jīng)網(wǎng)絡(luò)芯片或 GPU 的性能,并保護(hù)用戶已有硬件投資。

9b80ae48-6e58-11ed-8abf-dac502259ad0.png

NCNN 是一個(gè)為手機(jī)端極致優(yōu)化的高性能神經(jīng)網(wǎng)絡(luò)前向計(jì)算框架。ncnn 從設(shè)計(jì)之初深刻考慮手機(jī)端的部署和使用。無第三方依賴,跨平臺(tái),手機(jī)端 cpu 的速度快于目前所有已知的開源框架?;?ncnn,開發(fā)者能夠?qū)⑸疃葘W(xué)習(xí)算法輕松移植到手機(jī)端高效執(zhí)行,開發(fā)出人工智能 APP,將 AI 帶到你的指尖。ncnn 目前已在騰訊多款應(yīng)用中使用,如QQ,Qzone,微信,天天P圖等。

這兩個(gè)框架都是騰訊公司出品,F(xiàn)eatherCNN來自騰訊AI平臺(tái)部,NCNN來自騰訊優(yōu)圖。

重點(diǎn)是:都開源,都只支持cpu

NCNN開源早點(diǎn),性能較好,用戶較多。FeatherCNN開源晚,底子很好。

FeatherCNN開源地址:Tencent/FeatherCNN

NCNN開源地址:Tencent/ncnn

MDL

9bbae9aa-6e58-11ed-8abf-dac502259ad0.png

百度的mobile-deep-learning,MDL 框架主要包括模型轉(zhuǎn)換模塊(MDL Converter)、模型加載模塊(Loader)、網(wǎng)絡(luò)管理模塊(Net)、矩陣運(yùn)算模塊(Gemmers)及供 Android 端調(diào)用的 JNI 接口層(JNI Interfaces)。其中,模型轉(zhuǎn)換模塊主要負(fù)責(zé)將 Caffe 模型轉(zhuǎn)為 MDL 模型,同時(shí)支持將 32bit 浮點(diǎn)型參數(shù)量化為 8bit 參數(shù),從而極大地壓縮模型體積;模型加載模塊主要完成模型的反量化及加載校驗(yàn)、網(wǎng)絡(luò)注冊等過程,網(wǎng)絡(luò)管理模塊主要負(fù)責(zé)網(wǎng)絡(luò)中各層 Layer 的初始化及管理工作;MDL 提供了供 Android 端調(diào)用的 JNI 接口層,開發(fā)者可以通過調(diào)用 JNI 接口輕松完成加載及預(yù)測過程。

作為一款移動(dòng)端深度學(xué)習(xí)框架,需要充分考慮到移動(dòng)應(yīng)用自身及運(yùn)行環(huán)境的特點(diǎn),在速度、體積、資源占用率等方面有嚴(yán)格的要求。同時(shí),可擴(kuò)展性、魯棒性、兼容性也是需要考慮的。為了保證框架的可擴(kuò)展性,MDL對 layer 層進(jìn)行了抽象,方便框架使用者根據(jù)模型的需要,自定義實(shí)現(xiàn)特定類型的層,使用 MDL 通過添加不同類型的層實(shí)現(xiàn)對更多網(wǎng)絡(luò)模型的支持,而不需要改動(dòng)其他位置的代碼。為了保證框架的魯棒性,MDL 通過反射機(jī)制,將 C++ 底層異常拋到應(yīng)用層,應(yīng)用層通過捕獲異常對異常進(jìn)行相應(yīng)處理,如通過日志收集異常信息、保證軟件可持續(xù)優(yōu)化等。目前行業(yè)內(nèi)各種深度學(xué)習(xí)訓(xùn)練框架種類繁多,而 MDL 不支持模型訓(xùn)練能力,為了保證框架的兼容性,MDL提供 Caffe 模型轉(zhuǎn) MDL 的工具腳本,使用者通過一行命令就可以完成模型的轉(zhuǎn)換及量化過程。

開源地址:PaddlePaddle/Paddle-Lite

SNPE

9be2085a-6e58-11ed-8abf-dac502259ad0.png

這是高通驍龍的官方SDK,不開源。主要支持自家的DSP、GPU和CPU。模型訓(xùn)練在流行的深度學(xué)習(xí)框架上進(jìn)行(SNPE支持Caffe,Caffe2,ONNX和TensorFlow模型。)訓(xùn)練完成后,訓(xùn)練的模型將轉(zhuǎn)換為可加載到SNPE運(yùn)行時(shí)的DLC文件。然后,可以使用此DLC文件使用其中一個(gè)Snapdragon加速計(jì)算核心執(zhí)行前向推斷傳遞。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • gpu
    gpu
    +關(guān)注

    關(guān)注

    27

    文章

    4603

    瀏覽量

    128191
  • 深度學(xué)習(xí)
    +關(guān)注

    關(guān)注

    73

    文章

    5424

    瀏覽量

    120621

原文標(biāo)題:深度學(xué)習(xí)模型原來這樣部署的?。ǜ韶洕M滿,收藏慢慢看

文章出處:【微信號:vision263com,微信公眾號:新機(jī)器視覺】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    深度學(xué)習(xí)模型有哪些應(yīng)用場景

    深度學(xué)習(xí)模型作為人工智能領(lǐng)域的重要分支,已經(jīng)在多個(gè)應(yīng)用場景中展現(xiàn)出其巨大的潛力和價(jià)值。這些應(yīng)用不僅改變了我們的日常生活,還推動(dòng)了科技進(jìn)步和產(chǎn)業(yè)升級。以下將詳細(xì)探討深度
    的頭像 發(fā)表于 07-16 18:25 ?776次閱讀

    深度神經(jīng)網(wǎng)絡(luò)模型量化的基本方法

    盡量保持模型的性能。這一技術(shù)通過降低模型參數(shù)的位數(shù)來顯著減小模型的大小,加速推理過程,并降低能耗,從而有助于將深度學(xué)習(xí)
    的頭像 發(fā)表于 07-15 11:26 ?462次閱讀

    深度學(xué)習(xí)模型量化方法

    深度學(xué)習(xí)模型量化是一種重要的模型輕量化技術(shù),旨在通過減少網(wǎng)絡(luò)參數(shù)的比特寬度來減小模型大小和加速推理過程,同時(shí)盡量保持
    的頭像 發(fā)表于 07-15 11:01 ?353次閱讀
    <b class='flag-5'>深度</b><b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>模型</b>量化<b class='flag-5'>方法</b>

    深度學(xué)習(xí)算法在嵌入式平臺(tái)上的部署

    隨著人工智能技術(shù)的飛速發(fā)展,深度學(xué)習(xí)算法在各個(gè)領(lǐng)域的應(yīng)用日益廣泛。然而,將深度學(xué)習(xí)算法部署到資源受限的嵌入式平臺(tái)上,仍然是一個(gè)具有挑戰(zhàn)性的任
    的頭像 發(fā)表于 07-15 10:03 ?796次閱讀

    基于Python的深度學(xué)習(xí)人臉識(shí)別方法

    基于Python的深度學(xué)習(xí)人臉識(shí)別方法是一個(gè)涉及多個(gè)技術(shù)領(lǐng)域的復(fù)雜話題,包括計(jì)算機(jī)視覺、深度學(xué)習(xí)、以及圖像處理等。在這里,我將概述一個(gè)基本的
    的頭像 發(fā)表于 07-14 11:52 ?970次閱讀

    深度學(xué)習(xí)模型中的過擬合與正則化

    深度學(xué)習(xí)的廣闊領(lǐng)域中,模型訓(xùn)練的核心目標(biāo)之一是實(shí)現(xiàn)對未知數(shù)據(jù)的準(zhǔn)確預(yù)測。然而,在實(shí)際應(yīng)用中,我們經(jīng)常會(huì)遇到一個(gè)問題——過擬合(Overfitting)。過擬合是指模型在訓(xùn)練數(shù)據(jù)上表現(xiàn)
    的頭像 發(fā)表于 07-09 15:56 ?423次閱讀

    深度學(xué)習(xí)中的時(shí)間序列分類方法

    的發(fā)展,基于深度學(xué)習(xí)的TSC方法逐漸展現(xiàn)出其強(qiáng)大的自動(dòng)特征提取和分類能力。本文將從多個(gè)角度對深度學(xué)習(xí)在時(shí)間序列分類中的應(yīng)用進(jìn)行綜述,探討常用
    的頭像 發(fā)表于 07-09 15:54 ?409次閱讀

    深度學(xué)習(xí)中的無監(jiān)督學(xué)習(xí)方法綜述

    深度學(xué)習(xí)作為機(jī)器學(xué)習(xí)領(lǐng)域的一個(gè)重要分支,近年來在多個(gè)領(lǐng)域取得了顯著的成果,特別是在圖像識(shí)別、語音識(shí)別、自然語言處理等領(lǐng)域。然而,深度學(xué)習(xí)
    的頭像 發(fā)表于 07-09 10:50 ?223次閱讀

    深度學(xué)習(xí)中的模型權(quán)重

    深度學(xué)習(xí)這一充滿無限可能性的領(lǐng)域中,模型權(quán)重(Weights)作為其核心組成部分,扮演著至關(guān)重要的角色。它們不僅是模型學(xué)習(xí)的基石,更是
    的頭像 發(fā)表于 07-04 11:49 ?450次閱讀

    深度學(xué)習(xí)模型訓(xùn)練過程詳解

    深度學(xué)習(xí)模型訓(xùn)練是一個(gè)復(fù)雜且關(guān)鍵的過程,它涉及大量的數(shù)據(jù)、計(jì)算資源和精心設(shè)計(jì)的算法。訓(xùn)練一個(gè)深度學(xué)習(xí)模型
    的頭像 發(fā)表于 07-01 16:13 ?562次閱讀

    深度學(xué)習(xí)模型優(yōu)化與調(diào)試方法

    深度學(xué)習(xí)模型在訓(xùn)練過程中,往往會(huì)遇到各種問題和挑戰(zhàn),如過擬合、欠擬合、梯度消失或爆炸等。因此,對深度學(xué)習(xí)
    的頭像 發(fā)表于 07-01 11:41 ?488次閱讀

    一種利用光電容積描記(PPG)信號和深度學(xué)習(xí)模型對高血壓分類的新方法

    學(xué)習(xí)方法來對高血壓的四個(gè)階段進(jìn)行分類。這里采用的分類方法是:Alexnet、Resnet -50、VGG-16和新的模型:AvgPool_VGG-16。使用這些算法時(shí)要考慮到數(shù)據(jù)集的數(shù)量和多樣性。所
    發(fā)表于 05-11 20:01

    深度學(xué)習(xí)如何訓(xùn)練出好的模型

    算法工程、數(shù)據(jù)派THU深度學(xué)習(xí)在近年來得到了廣泛的應(yīng)用,從圖像識(shí)別、語音識(shí)別到自然語言處理等領(lǐng)域都有了卓越的表現(xiàn)。但是,要訓(xùn)練出一個(gè)高效準(zhǔn)確的深度學(xué)習(xí)
    的頭像 發(fā)表于 12-07 12:38 ?962次閱讀
    <b class='flag-5'>深度</b><b class='flag-5'>學(xué)習(xí)</b>如何訓(xùn)練出好的<b class='flag-5'>模型</b>

    基于深度學(xué)習(xí)的情感語音識(shí)別模型優(yōu)化策略

    基于深度學(xué)習(xí)的情感語音識(shí)別模型的優(yōu)化策略,包括數(shù)據(jù)預(yù)處理、模型結(jié)構(gòu)優(yōu)化、損失函數(shù)改進(jìn)、訓(xùn)練策略調(diào)整以及集成學(xué)習(xí)等方面的內(nèi)容。
    的頭像 發(fā)表于 11-09 16:34 ?512次閱讀

    深度學(xué)習(xí)的由來 深度學(xué)習(xí)的經(jīng)典算法有哪些

    深度學(xué)習(xí)作為機(jī)器學(xué)習(xí)的一個(gè)分支,其學(xué)習(xí)方法可以分為監(jiān)督學(xué)習(xí)和無監(jiān)督學(xué)習(xí)。兩種
    發(fā)表于 10-09 10:23 ?487次閱讀
    <b class='flag-5'>深度</b><b class='flag-5'>學(xué)習(xí)</b>的由來 <b class='flag-5'>深度</b><b class='flag-5'>學(xué)習(xí)</b>的經(jīng)典算法有哪些