99精品伊人亚洲|最近国产中文炮友|九草在线视频支援|AV网站大全最新|美女黄片免费观看|国产精品资源视频|精彩无码视频一区|91大神在线后入|伊人终合在线播放|久草综合久久中文

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

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

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

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

新機(jī)器視覺(jué) ? 來(lái)源:計(jì)算機(jī)視覺(jué)研究院專(zhuān)欄 ? 作者:Edison_G ? 2022-12-01 11:30 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

1

背景

當(dāng)我們辛苦收集數(shù)據(jù)、數(shù)據(jù)清洗、搭建環(huán)境、訓(xùn)練模型、模型評(píng)估測(cè)試后,終于可以應(yīng)用到具體場(chǎ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)致開(kāi)發(fā)復(fù)雜性,還存在工作流問(wèn)題。數(shù)據(jù)科學(xué)家開(kāi)發(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í),正迅速成為解決對(duì)象分類(lèi)到推薦系統(tǒng)等許多不同計(jì)算問(wèn)題的有效工具。然而,將經(jīng)過(guò)訓(xùn)練的神經(jīng)網(wǎng)絡(luò)部署到應(yīng)用程序和服務(wù)中可能會(huì)給基礎(chǔ)設(shè)施經(jīng)理帶來(lái)挑戰(zhàn)。多個(gè)框架、未充分利用的基礎(chǔ)設(shè)施和缺乏標(biāo)準(zhǔn)實(shí)施,這些挑戰(zhàn)甚至可能導(dǎo)致AI項(xiàng)目失敗。今天就探討了如何應(yīng)對(duì)這些挑戰(zhàn),并在數(shù)據(jù)中心或云端將深度學(xué)習(xí)模型部署到生產(chǎn)環(huán)境。

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

2

部署需求

02:24

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

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

需求一:簡(jiǎn)單的demo演示,只看看效果

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

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

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

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

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

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

軟件上,一般都不會(huì)直接上深度學(xué)習(xí)框架。對(duì)于NVIDIA的產(chǎn)品,一般都會(huì)使用TensorRT來(lái)加速。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,不過(guò)現(xiàn)在NPU支持的算子不多,一些自定義Op多的網(wǎng)絡(luò)可能部署不上去;

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

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

需求六:上述部署方案不滿(mǎn)足你的需求

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

粉絲福利:

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)檢測(cè)生成和部署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

選擇嵌入式部署的場(chǎng)景來(lái)進(jìn)行分析

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

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

一般流程分為如下幾步:

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

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

模型部署

雖然把整個(gè)流程分成三步,但三者之間是相互聯(lián)系、相互影響的。首先第一步的模型設(shè)計(jì)需要考慮推斷框架中對(duì)Op的支持程度,從而相應(yīng)的對(duì)網(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)用, 離線(xiàn)訓(xùn)練框架主要使用tensorflow、mxnet,在線(xiàn)inference框架我主要使用阿里MNN。案例請(qǐng)參考下面鏈接:

靜態(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人臉檢測(cè)器

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

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

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)有很成熟的開(kāi)源框架和算法進(jìn)行實(shí)現(xiàn),但是為了能部署到移動(dòng)端,還需要進(jìn)行壓縮加速。

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

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

計(jì)算量非常巨大

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

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

壓縮方法

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

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

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

移動(dòng)端部署

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

Caffe2

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

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

開(kāi)源地址: facebookarchive/caffe2

TensorFlow Lite

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

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

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

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

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

模塊如下:

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

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

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

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

Core ML

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

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

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

MACE

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

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

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

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

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

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

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

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

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

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

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

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

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

開(kāi)源地址:XiaoMi/mace

MACE Model Zoo

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

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

鏈接: XiaoMi/mace-models

FeatherCNN和NCNN

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

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

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

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

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

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

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

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

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

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

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

FeatherCNN開(kāi)源地址:Tencent/FeatherCNN

NCNN開(kāi)源地址: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ò)注冊(cè)等過(guò)程,網(wǎng)絡(luò)管理模塊主要負(fù)責(zé)網(wǎng)絡(luò)中各層 Layer 的初始化及管理工作;MDL 提供了供 Android 端調(diào)用的 JNI 接口層,開(kāi)發(fā)者可以通過(guò)調(diào)用 JNI 接口輕松完成加載及預(yù)測(cè)過(guò)程。

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

開(kāi)源地址:PaddlePaddle/Paddle-Lite

SNPE

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

這是高通驍龍的官方SDK,不開(kāi)源。主要支持自家的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)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • gpu
    gpu
    +關(guān)注

    關(guān)注

    28

    文章

    4948

    瀏覽量

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

    關(guān)注

    73

    文章

    5561

    瀏覽量

    122800

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

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

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    寧暢與與百度文心大模型展開(kāi)深度技術(shù)合作

    近日,百度正式開(kāi)源文心大模型4.5系列模型。作為文心開(kāi)源合作伙伴,寧暢在模型開(kāi)源首日即實(shí)現(xiàn)即刻部署,做到“開(kāi)源即接入、發(fā)布即可用”。據(jù)悉,文心4.5開(kāi)源系列全部基于飛槳
    的頭像 發(fā)表于 07-07 16:26 ?214次閱讀

    模型推理顯存和計(jì)算量估計(jì)方法研究

    方法。 一、引言 大模型推理是指在已知輸入數(shù)據(jù)的情況下,通過(guò)深度學(xué)習(xí)模型進(jìn)行預(yù)測(cè)或分類(lèi)的過(guò)程。然而,大
    發(fā)表于 07-03 19:43

    如何使用Docker部署模型

    隨著深度學(xué)習(xí)和大模型的快速發(fā)展,如何高效地部署這些模型成為了一個(gè)重要的挑戰(zhàn)。Docker 作為一種輕量級(jí)的容器化技術(shù),能夠?qū)?/div>
    的頭像 發(fā)表于 05-24 16:39 ?347次閱讀

    在OpenVINO?工具套件的深度學(xué)習(xí)工作臺(tái)中無(wú)法導(dǎo)出INT8模型怎么解決?

    無(wú)法在 OpenVINO? 工具套件的深度學(xué)習(xí) (DL) 工作臺(tái)中導(dǎo)出 INT8 模型
    發(fā)表于 03-06 07:54

    添越智創(chuàng)基于 RK3588 開(kāi)發(fā)板部署測(cè)試 DeepSeek 模型全攻略

    實(shí)踐筑牢了硬件根基。 DeepSeek 模型部署:兩種路徑,各顯神通 在 RK3588 開(kāi)發(fā)板上部署 DeepSeek 模型,目前主要有兩種實(shí)用且特色鮮明的
    發(fā)表于 02-14 17:42

    【ELF 2學(xué)習(xí)板試用】ELF2開(kāi)發(fā)板(飛凌嵌入式)搭建深度學(xué)習(xí)環(huán)境部署(RKNN環(huán)境部署

    ELF2開(kāi)發(fā)板(飛凌嵌入式)搭建深度學(xué)習(xí)環(huán)境部署(RKNN環(huán)境部署) 本人主要介紹用于elf2的rk3588開(kāi)發(fā)板的深度
    發(fā)表于 02-04 14:15

    Flexus X 實(shí)例 ultralytics 模型 yolov10 深度學(xué)習(xí) AI 部署與應(yīng)用

    模型迭代,讓 AI 智能觸手可及。把握此刻,讓創(chuàng)新不再受限! ???本實(shí)驗(yàn)演示從 0 到 1 部署 YOLOv10 深度學(xué)習(xí) AI 大模型
    的頭像 發(fā)表于 12-24 12:24 ?793次閱讀
    Flexus X 實(shí)例 ultralytics <b class='flag-5'>模型</b> yolov10 <b class='flag-5'>深度</b><b class='flag-5'>學(xué)習(xí)</b> AI <b class='flag-5'>部署</b>與應(yīng)用

    AI模型部署邊緣設(shè)備的奇妙之旅:目標(biāo)檢測(cè)模型

    策略,以提高模型學(xué)習(xí)能力和泛化性能。 硬件友好性: 在驍龍865等硬件平臺(tái)上表現(xiàn)出色,并支持快速導(dǎo)出為 ONNX 格式,使得模型在硬件部署時(shí)更加友好和高效。 在此基礎(chǔ)上,2022年初
    發(fā)表于 12-19 14:33

    AI模型部署邊緣設(shè)備的奇妙之旅:如何實(shí)現(xiàn)手寫(xiě)數(shù)字識(shí)別

    新的數(shù)據(jù)樣本,另一個(gè)是判別器用來(lái)判斷這些樣本的真實(shí)性。兩者相互競(jìng)爭(zhēng),共同進(jìn)化,最終實(shí)現(xiàn)高質(zhì)量的數(shù)據(jù)合成。 2.4 模型優(yōu)化技術(shù) 在將深度學(xué)習(xí)模型部署
    發(fā)表于 12-06 17:20

    深度學(xué)習(xí)模型的魯棒性?xún)?yōu)化

    深度學(xué)習(xí)模型的魯棒性?xún)?yōu)化是一個(gè)復(fù)雜但至關(guān)重要的任務(wù),它涉及多個(gè)方面的技術(shù)和策略。以下是一些關(guān)鍵的優(yōu)化方法: 一、數(shù)據(jù)預(yù)處理與增強(qiáng) 數(shù)據(jù)清洗 :去除數(shù)據(jù)中的噪聲和異常值,這是提高
    的頭像 發(fā)表于 11-11 10:25 ?1205次閱讀

    Pytorch深度學(xué)習(xí)訓(xùn)練的方法

    掌握這 17 種方法,用最省力的方式,加速你的 Pytorch 深度學(xué)習(xí)訓(xùn)練。
    的頭像 發(fā)表于 10-28 14:05 ?661次閱讀
    Pytorch<b class='flag-5'>深度</b><b class='flag-5'>學(xué)習(xí)</b>訓(xùn)練的<b class='flag-5'>方法</b>

    GPU深度學(xué)習(xí)應(yīng)用案例

    GPU在深度學(xué)習(xí)中的應(yīng)用廣泛且重要,以下是一些GPU深度學(xué)習(xí)應(yīng)用案例: 一、圖像識(shí)別 圖像識(shí)別是深度學(xué)習(xí)
    的頭像 發(fā)表于 10-27 11:13 ?1384次閱讀

    FPGA加速深度學(xué)習(xí)模型的案例

    FPGA(現(xiàn)場(chǎng)可編程門(mén)陣列)加速深度學(xué)習(xí)模型是當(dāng)前硬件加速領(lǐng)域的一個(gè)熱門(mén)研究方向。以下是一些FPGA加速深度學(xué)習(xí)
    的頭像 發(fā)表于 10-25 09:22 ?1238次閱讀

    AI大模型深度學(xué)習(xí)的關(guān)系

    AI大模型深度學(xué)習(xí)之間存在著密不可分的關(guān)系,它們互為促進(jìn),相輔相成。以下是對(duì)兩者關(guān)系的介紹: 一、深度學(xué)習(xí)是AI大
    的頭像 發(fā)表于 10-23 15:25 ?2900次閱讀

    FPGA做深度學(xué)習(xí)能走多遠(yuǎn)?

    ,F(xiàn)PGA 也需要不斷適應(yīng)和改進(jìn)。研究人員和開(kāi)發(fā)者將致力于針對(duì) FPGA 的特點(diǎn)對(duì)深度學(xué)習(xí)算法進(jìn)行優(yōu)化,例如探索更高效的模型壓縮方法、量化技術(shù)以及硬件友好的算法結(jié)構(gòu)等,以進(jìn)一步提高 F
    發(fā)表于 09-27 20:53