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