前言本文整理了一些深度學(xué)習(xí)訓(xùn)練推理框架,涉及計(jì)算機(jī)視覺、語音、時(shí)序任務(wù)上的框架,共計(jì)20多種。
1訓(xùn)練框架
Pytorch
PyTorch是由Facebook人工智能研究小組開發(fā)的一種基于Lua編寫的Torch庫的Python實(shí)現(xiàn)的深度學(xué)習(xí)庫,也是目前使用范圍和體驗(yàn)感最好的一款深度學(xué)習(xí)框架。它的底層基于Torch,但實(shí)現(xiàn)與運(yùn)用全部是由python來完成。該框架主要用于人工智能領(lǐng)域的科學(xué)研究與應(yīng)用開發(fā)。PyTroch最主要的功能有兩個(gè),其一是擁有GPU張量,該張量可以通過GPU加速,達(dá)到在短時(shí)間內(nèi)處理大數(shù)據(jù)的要求;其二是支持動(dòng)態(tài)神經(jīng)網(wǎng)絡(luò),可逐層對(duì)神經(jīng)網(wǎng)絡(luò)進(jìn)行修改,并且神經(jīng)網(wǎng)絡(luò)具備自動(dòng)求導(dǎo)的功能。
一些學(xué)習(xí)資料與文檔:
- Awesome-pytorch-list:包含了NLP,CV,常見庫,論文實(shí)現(xiàn)以及Pytorch的其他項(xiàng)目,地址:https://github.com/bharathgs/Awesome-pytorch-list;
- PyTorch官方文檔:官方發(fā)布文檔,地址:https://pytorch.org/docs/stable/index.html;
- Pytorch-handbook:pytorch hand book,地址:https://github.com/zergtant/pytorch-handbook;
- PyTorch官方社區(qū):pytorch開發(fā)者社區(qū),地址:https://discuss.pytorch.org/
MXNet
MXNet 是亞馬遜維護(hù)的深度學(xué)習(xí)庫,它擁有類似于 Theano 和 TensorFlow 的數(shù)據(jù)流圖,為多 GPU 提供了良好的配置。MXNet結(jié)合了高性能、clean的代碼,高級(jí)API訪問和低級(jí)控制,是深度學(xué)習(xí)框架中的佼佼者。
優(yōu)點(diǎn):
- 速度上有較大優(yōu)勢(shì);
- 靈活編程,支持命令式和符號(hào)式編程模型;
- 多平臺(tái)支持:可運(yùn)行于多CPU、多GPU、集群、服務(wù)器、工作站甚至移動(dòng)mobile phone;
- 多語言支持:支持包括C++、Python、R、Scala、Julia、Matlab和JavaScript語言;
- 性能優(yōu)化:使用一個(gè)優(yōu)化的C++后端引擎并行I/O和計(jì)算,無論使用哪種語言都能達(dá)到最佳性能;
- 云端友好;
缺點(diǎn):
- 社區(qū)較小;
- 入門稍微困難些;
Tensorflow
TensorFlow是由谷歌開源并維護(hù),可用于各類深度學(xué)習(xí)相關(guān)的任務(wù)中。TensorFlow = Tensor + Flow,Tensor就是張量,代表N維數(shù)組;Flow即流,代表基于數(shù)據(jù)流圖的計(jì)算,其特性如下:
- 支持Python、JavaScript、C ++、Java、Go、C#、Julia和R等多種編程語言;
- GPU,iOS和Android等移動(dòng)平臺(tái)上都可運(yùn)行;
- 入門學(xué)習(xí)難度大;
- 靜態(tài)圖操作;
Caffe
經(jīng)典的深度學(xué)習(xí)框架,由賈揚(yáng)清在加州大學(xué)伯克利分校讀博期間主導(dǎo)開發(fā),以C++/CUDA為主,需要編譯安裝,有python和matlab接口,支持單機(jī)多卡、多機(jī)多卡訓(xùn)練(目前已推出caffe2),特性如下:
- 以C++/CUDA/Python代碼為主,速度快,性能高;
- 代碼結(jié)構(gòu)清晰,可讀性和可拓展性強(qiáng)。
- 支持命令行、Python和Matlab接口,使用方便;
- CPU和GPU之間切換方便,多GPU訓(xùn)練方便;
- 工具豐富,社區(qū)活躍;
- 代碼修改難度較大,不支持自動(dòng)求導(dǎo);
- 不適合非圖像(結(jié)構(gòu)化)數(shù)據(jù);
CNTK
微軟開源的深度學(xué)習(xí)框架,CNTK具有高度優(yōu)化的內(nèi)置組件,可以處理來自Python,C ++或BrainScript的多維密集或稀疏數(shù)據(jù)。能夠?qū)崿F(xiàn)CNN,DNN,RNN等任務(wù),能夠優(yōu)化海量的數(shù)據(jù)集加載。
主要特性:
- CNTK性能優(yōu)于其他的開源框架;
- 適合做語音任務(wù),CNTK本就是微軟語音團(tuán)隊(duì)開源的,自然更適合做語音任務(wù),便于在使用RNN等模型以及時(shí)空尺度時(shí)進(jìn)行卷積;
學(xué)習(xí)資料與教程:
入門介紹:https://github.com/Microsoft/CNTK/wiki
官方入門教程:https://github.com/Microsoft/CNTK/wiki/Tutorial
官方論壇:https://github.com/Microsoft/CNTK/issues
Keras
一個(gè)小白非常友好的框架,上手簡單,已被集成到Tensorflow中。Keras在高層可以調(diào)用TensorFlow、CNTK、Theano,還有更多優(yōu)秀的庫也在被陸續(xù)支持中。Keras的特點(diǎn)是能夠快速搭建模型,高度模塊化,搭建網(wǎng)絡(luò)非常簡潔,易于添加新模塊,是高效地進(jìn)行科學(xué)研究的關(guān)鍵。
學(xué)習(xí)資料:
- https://tensorflow.rstudio.com/keras/
- https://github.com/rstudio/keras
PaddlePaddle
百度開源框架,支持動(dòng)態(tài)圖和靜態(tài)圖,中文文檔寫的非常清楚,上手比較簡單;
官網(wǎng)鏈接:https://www.paddlepaddle.org.cn/
飛槳針對(duì)不同硬件環(huán)境,提供了豐富的支持方案,生態(tài)較為完善:
- Paddle Inference:飛槳原生推理庫,用于服務(wù)器端模型部署,支持Python、C、C++、Go等語言,將模型融入業(yè)務(wù)系統(tǒng)的首選;
- Paddle Serving:飛槳服務(wù)化部署框架,用于云端服務(wù)化部署,可將模型作為單獨(dú)的Web服務(wù);
- Paddle Lite:飛槳輕量化推理引擎,用于 Mobile 及 IoT 等場(chǎng)景的部署,有著廣泛的硬件支持;
- Paddle.js:使用 JavaScript(Web)語言部署模型,用于在瀏覽器、小程序等環(huán)境快速部署模型;
- PaddleSlim:模型壓縮工具,獲得更小體積的模型和更快的執(zhí)行性能;
- X2 Paddle:輔助工具,將其他框架模型轉(zhuǎn)換成Paddle模型,轉(zhuǎn)換格式后可以方便的使用上述5個(gè)工具;
OneFlow
項(xiàng)目地址:https://github.com/Oneflow-Inc/oneflow
一流科技開源的深度學(xué)習(xí)框架,使用類似PyTorch的API編程模型使用全局視圖API將模型縮放為n維并行/分布式執(zhí)行使用靜態(tài)圖編譯器加速/部署模型。主要有以下優(yōu)勢(shì):
- 分布式性能(高效性)是深度學(xué)習(xí)框架的核心技術(shù)難點(diǎn),OneFlow圍繞性能提升和異構(gòu)分布式擴(kuò)展,采用靜態(tài)編譯和流式并行的核心理念和架構(gòu),解決了集群層面的內(nèi)存墻挑戰(zhàn);
- OneFlow計(jì)算集群內(nèi)部的通信和調(diào)度消耗,提高硬件利用率,加快模型訓(xùn)練速度,訓(xùn)練成本時(shí)間大幅縮減;
- 自動(dòng)支持模型并行與流水并行:OneFlow天生支持?jǐn)?shù)據(jù)并行、模型并行和混合并行,無需定制化開發(fā);
MegEngine
項(xiàng)目地址:https://www.megengine.org.cn/
MegEngine 是曠視完全自主研發(fā)的深度學(xué)習(xí)框架,中文名為“天元”,是曠視 AI 戰(zhàn)略的重要組成部分,負(fù)責(zé) AI 三要素(算法,算力,數(shù)據(jù))中的“算法”。MegEngine 的研發(fā)始于 2014 年,曠視內(nèi)部全員使用。如今,曠視的所有算法均基于 MegEngine 進(jìn)行訓(xùn)練和推理。
MegEngine 特性:
- 訓(xùn)練推理一體化:MegEngine 支持多種硬件平臺(tái)( CPU,GPU,ARM ),不同硬件上的推理框架和 MegEngine 的訓(xùn)練框架無縫銜接;部署時(shí)無需做額外的模型轉(zhuǎn)換,速度/精度和訓(xùn)練保持一致,有效解決了 AI 落地中“部署環(huán)境和訓(xùn)練環(huán)境不同,部署難”的問題。
- 動(dòng)靜合一:動(dòng)態(tài)圖易調(diào)試,靜態(tài)圖好部署。MegEngine 在靜態(tài)圖的基礎(chǔ)上,逐漸加入支持完整動(dòng)態(tài)圖的功能,在動(dòng)態(tài)模式下加速研發(fā)過程,無需改變模型代碼一鍵切換至靜態(tài)模式下的部署,為科研和算法工程師同時(shí)提供便利。
- 兼容并包:MegEngine 的頂層 API 基于 Python,采取了類似于 PyTorch 的風(fēng)格。簡單直接,易于上手,便于現(xiàn)有項(xiàng)目進(jìn)行移植或整合。
- 靈活高效:MegEngine 底層的高性能算子庫對(duì)于不同的硬件架構(gòu)進(jìn)行了深度適配和優(yōu)化,并提供高效的亞線性內(nèi)存優(yōu)化策略,對(duì)于生產(chǎn)環(huán)境繁多的計(jì)算設(shè)備提供了極致的性能保證,高效易用的分布式訓(xùn)練實(shí)現(xiàn)能有效支持富有彈性的大規(guī)模訓(xùn)練。
DeepLearning4j
基于Java的深度學(xué)習(xí)框架,正式誕生于2013年,在2017年加入Eclipse基金會(huì),由美國的Skymind開源并維護(hù)。
項(xiàng)目地址:https://github.com/eclipse/deeplearning4j
- 支持神經(jīng)網(wǎng)絡(luò)模型的構(gòu)建、模型訓(xùn)練和部署;
- 能夠與現(xiàn)有大數(shù)據(jù)生態(tài)進(jìn)行無縫銜接(Hadoop、Spark等),也是可以原生態(tài)支持分布式模型訓(xùn)練的框架之一;
- 支持多線程;
- 跨平臺(tái)(硬件:CUDA GPu,x86,ARM,PowerPC;操作系統(tǒng):Windows/Mac/Linux/Android);
2推理框架
TensorRT
Nvidia自家的推理庫,幾乎是自動(dòng)駕駛邊緣部署領(lǐng)域的標(biāo)配,更新也很頻繁,issue反饋及時(shí),社區(qū)維護(hù)較好;TensorRT的應(yīng)用場(chǎng)景很多,服務(wù)端、嵌入式端、PC端;利用Pytorch、TF或者其他框架訓(xùn)練好的模型,轉(zhuǎn)化為TensorRT的格式,然后利用TensorRT推理引擎去運(yùn)行模型,從而提升模型在英偉達(dá)板子上的運(yùn)行速度,速度提升的比例是比較可觀的。
項(xiàng)目鏈接:https://github.com/NVIDIA/TensorRT
NCNN
騰訊開源的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 帶到你的指尖。
項(xiàng)目鏈接:https://github.com/Tencent/ncnn
TNN
Tencent Youtu Lab開源的高性能、輕量級(jí)神經(jīng)網(wǎng)絡(luò)推理框架。它還具有跨平臺(tái)、高性能、模型壓縮和代碼裁剪等諸多突出優(yōu)勢(shì)。TNN框架在原有Rapidnet和ncnn框架的基礎(chǔ)上進(jìn)一步加強(qiáng)了對(duì)移動(dòng)設(shè)備的支持和性能優(yōu)化。同時(shí),它借鑒了業(yè)界主流開源框架的高性能和良好的可擴(kuò)展性特點(diǎn),并擴(kuò)展了對(duì)X86和NV GPU的支持。在手機(jī)上,TNN已被許多應(yīng)用程序使用。作為騰訊云人工智能的基本加速框架,TNN為許多業(yè)務(wù)的實(shí)施提供了加速支持。
項(xiàng)目鏈接:https://github.com/Tencent/TNN
MNN
MNN是一個(gè)高效、輕量級(jí)的深度學(xué)習(xí)框架。它支持深度學(xué)習(xí)模型的推理和訓(xùn)練,在設(shè)備推理和訓(xùn)練方面具有業(yè)界領(lǐng)先的性能。目前,MNN已整合在淘寶、天貓、優(yōu)酷、鼎語、仙語等30多個(gè)阿里巴巴應(yīng)用中,涵蓋直播、短視頻捕獲、搜索推薦、圖片搜索、互動(dòng)營銷、股權(quán)分銷、安全風(fēng)險(xiǎn)控制等70多個(gè)使用場(chǎng)景。此外,MNN還用于嵌入式設(shè)備,如物聯(lián)網(wǎng)。
項(xiàng)目鏈接:https://github.com/alibaba/MNN
TensorFlow Lite
這是Google在2017年I/O開發(fā)者大會(huì)上開源的將TensorFlow訓(xùn)練好的模型遷移到Android App的框架,地址和一些學(xué)習(xí)資源如下:TensorFlow Lite使用Android Neural Networks API,默認(rèn)調(diào)用CPU,目前最新的版本已經(jīng)支持GPU。
項(xiàng)目地址:https://tensorflow.google.cn/lite/
Core ML
Core ML是2017年Apple公司在WWDC上與iOS11同時(shí)發(fā)布的移動(dòng)端機(jī)器學(xué)習(xí)框架,底層使用Accelerate和Metal分別調(diào)用CPU和GPU。Core ML需要將你訓(xùn)練好的模型轉(zhuǎn)化為Core ML model。
在一年之后,也就是2018年WWDC上,Apple發(fā)布了Core ML 2,主要改進(jìn)就是通過權(quán)重量化等技術(shù)優(yōu)化模型的大小,使用新的Batch Predict API提高模型的預(yù)測(cè)速度,以及容許開發(fā)人員使用MLCustomLayer定制自己的Core ML模型。
項(xiàng)目地址:https://developer.apple.com/documentation/coreml
Paddle-Mobile
Paddle-Mobile是2017年百度PaddlePaddle組織下的移動(dòng)端深度學(xué)習(xí)開源框架,當(dāng)時(shí)叫做mobile-deep-learning(MDL)。支持安卓和ios平臺(tái),CPU和GPU使用,提供量化工具。可以直接使用Paddle Fluid訓(xùn)練好的模型,也可以將Caffe模型進(jìn)行轉(zhuǎn)化,或者使用ONNX格式的模型。
項(xiàng)目地址:https://github.com/PaddlePaddle/paddle-mobile
caffe2
Caffe2是facebook在2017年發(fā)布的一個(gè)跨平臺(tái)、輕量級(jí)、模塊化和可擴(kuò)展的深度學(xué)習(xí)框架。Caffe2以原Caffe為基礎(chǔ),在設(shè)計(jì)時(shí)考慮到了表達(dá)、速度和模塊化。不僅僅支持Windows,Linux,Macos三大桌面系統(tǒng),也支持移動(dòng)端iOS,Android,可以說是集訓(xùn)練和推理于一身。
MACE
MACE是2018年小米在開源中國開源世界高峰論壇中宣布開源的移動(dòng)端框架,以O(shè)penCL和匯編作為底層算子,提供了異構(gòu)加速可以方便在不同的硬件上運(yùn)行模型,同時(shí)支持各種框架的模型轉(zhuǎn)換。
Mobile AI Compute Engine (MACE)是一個(gè)專為移動(dòng)端異構(gòu)計(jì)算平臺(tái)(支持Android, iOS, Linux, Windows)優(yōu)化的神經(jīng)網(wǎng)絡(luò)計(jì)算框架。主要從以下的角度做了專門的優(yōu)化:
- 性能:代碼經(jīng)過NEON指令,OpenCL以及Hexagon HVX專門優(yōu)化,并且采用 Winograd算法來進(jìn)行卷積操作的加速。此外,還對(duì)啟動(dòng)速度進(jìn)行了專門的優(yōu)化。
- 功耗:支持芯片的功耗管理,例如ARM的big.LITTLE調(diào)度,以及高通Adreno GPU功耗選項(xiàng)。
- 系統(tǒng)響應(yīng):支持自動(dòng)拆解長時(shí)間的OpenCL計(jì)算任務(wù),來保證UI渲染任務(wù)能夠做到較好的搶占調(diào)度, 從而保證系統(tǒng)UI的相應(yīng)和用戶體驗(yàn)。
- 內(nèi)存占用:通過運(yùn)用內(nèi)存依賴分析技術(shù),以及內(nèi)存復(fù)用,減少內(nèi)存的占用。另外,保持盡量少的外部 依賴,保證代碼尺寸精簡。
- 模型加密與保護(hù):模型保護(hù)是重要設(shè)計(jì)目標(biāo)之一。支持將模型轉(zhuǎn)換成C++代碼,以及關(guān)鍵常量字符混淆,增加逆向的難度。
- 硬件支持范圍:支持高通,聯(lián)發(fā)科,以及松果等系列芯片的CPU,GPU與DSP(目前僅支持Hexagon)計(jì)算加速。CPU模式支持Android, iOS, Linux等系統(tǒng)。
- 模型格式支持支持TensorFlow, Caffe和ONNX等模型格式。
項(xiàng)目地址:https://github.com/XiaoMi/mace-models
NNIE
NNIE 是 Neural Network Inference Engine 的簡稱,是海思媒體 SoC 中專門針對(duì)神經(jīng)網(wǎng) 絡(luò)特別是深度學(xué)習(xí)卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行加速處理的硬件單元,支持現(xiàn)有大部分的公開網(wǎng) 絡(luò),如 Alexnet、VGG16、Googlenet、Resnet18、Resnet50 等分類網(wǎng)絡(luò),F(xiàn)aster R- CNN、YOLO、SSD、RFCN 等檢測(cè)網(wǎng)絡(luò),以及 SegNet、FCN 等場(chǎng)景分割網(wǎng)絡(luò)。目前 NNIE 配套軟件及工具鏈僅支持以 Caffe 框架,使用其他框架的網(wǎng)絡(luò)模型需要轉(zhuǎn)化 為 Caffe 框架下的模型。該框架在海思系列芯片上性能極佳,很大的缺陷就在于僅限于海思系列芯片。
審核編輯 :李倩
-
人工智能
+關(guān)注
關(guān)注
1791文章
46853瀏覽量
237550 -
深度學(xué)習(xí)
+關(guān)注
關(guān)注
73文章
5492瀏覽量
120975 -
pytorch
+關(guān)注
關(guān)注
2文章
803瀏覽量
13146
原文標(biāo)題:?計(jì)算機(jī)視覺深度學(xué)習(xí)訓(xùn)練推理框架
文章出處:【微信號(hào):vision263com,微信公眾號(hào):新機(jī)器視覺】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論