主流 AI 框架,總有一款適合你

衆所周知,AI 技術很可能帶來第四次科技革命。因此全世界很多組織機構都在爭相研發自己的 AI 基礎設施,本文會依次進行重點介紹。不過在開始正文前,我們還是老規矩,先向自己發出靈魂二連問。

讀者朋友們可帶着上述疑問進行閱讀,嘗試給出自己的初步想法(也可直接跳到文末看答案☺),我在文末會給出建議供大家參考交流。接下來切入正題,爲了描述方便,我把主流 AI 框架分爲國外篇、國內篇、其他三塊分別進行介紹。

一、國外主流 AI 框架

TensorFlow

發行公司:2015 年 11 月由 Google 設計研發並開源,目前已更新至 v2.4.1。

發展歷程:TF1 主要基於 session 構建靜態圖,運行效率高,但 debug 代碼不友好,主流編程範式是基於 Estimator 進行模型搭建與訓練。TF2 默認開啓 eager 模式,用戶 debug 代碼方便,官方推薦基於 Keras 進行模型搭建與訓練,從 TF v2.2 開始支持第二代性能分析工具 Profiler。

優點不足:優點是比較適用於工業生產環境,模型訓練與部署有完備的解決方案。不足是有多種不同風格的 API,對新手極不友好,同時個人感覺其分佈式訓練的迭代思路不太清晰(看不出來重點支持 Estimator 還是 Keras,目前對兩者的原生支持都算不上優秀)。

TensorFlow 架構圖

PyTorch

發行公司:2017 年 1 月由 Facebook 人工智能研究院基於 Torch 推出。

發展歷程:自 2017 年開源以來,陸續推出了 Tensor 與 Numpy 互轉、與 Caffe2 的融合、支持 Windows 系統、ONNX 轉換、FastAI 的發佈、支持 Tensorboard、分佈式訓練等功能。

優點不足:PyTorch 的編程 API 風格簡約,直觀易懂。因爲其基於動態計算圖構建深度學習模型,當運行出錯時用戶可根據堆棧信息快速定位問題。不足之處是部署生態尚處成長階段,比如 TensorRT 對 PyTorch 已訓模型的支持問題較多 (部分操作不支持、模型轉 onnx 有 bug)。

PyTorch 架構圖

MXNet

發行公司:2016 年 5 月由 Amazon 設計研發並開源。

發展歷程:MXNet 的迭代由李沐團隊主導,發展至今先後支持了 Keras、Gluon 接口、JIT 編譯技術、分佈式訓練與梯度壓縮、ONNX、MKL-DNN、profiler、支持自定義算子與 TVM 生成算子。

優點不足:MXNet 的優點較多,它支持命令式與符號式混合編程,兼具效率與靈活性。支持多語言編程,後端由深度優化的 C++ 引擎支撐。具有較強的多端可移植性,同時與 S3、Azure 集成方便。相較 TensorFlow 和 PyTorch 代碼量較少,同時由於其輕量級特性和優秀的架構設計,一般作爲研製深度學習框架的重要原型參考。不足是:據沐神說 Amazon 在 MXNet 上的投入並不多,因此無法做到快速迭代與大規模宣傳,相應的社區活躍度稍顯遜色。

MXNet 架構圖

CNTK

發行公司:2016 年 1 月由微軟在 github 上開源。

發展歷程:CNTK(Microsoft Cognitive Toolkit)叫微軟認知工具集,最初研發動力是提升語音算法的迭代改進速度,目前已更新至 v2.7。先後支持了全平臺可運行、1bit-SGD、onnx、Python API 等。

優點不足:CNTK 的優點是在 Azure GPU 上可以達到最高效的分佈式計算性能。不足之處 CNTK 是領域強相關的 AI 框架,相較 TensorFlow、PyTorch、MXNet 的通用性不強,且使用 CNTK 框架的文檔資料大多使用 BrainScript,有一定學習成本。

CNTK 架構圖

二、國內主流 AI 框架

PaddlePaddle

發行公司:2016 年 8 月由百度進行開源,是國內 AI 框架最早的探索與踐行者。

發展歷程:PaddlePaddle 的迭代節奏很快,我們簡要說下重點。v0.14 提供全流程能力支持、Paddle Fluid v1.0 發佈、v1.1 支持大規模異步分佈式訓練、PaddlePaddle3.0 提供 Suite(VisualDL、PARL、AutoDL、EasyDL、AIStudio)。

優點不足:Paddle 的優點是社區比較活躍、生態鏈比較完整、且官網提供了大量的經典模型實現和大量雙語用戶手冊,同時依靠百度雲的加持,對國內用戶應用還是很友好的。目前國內廠商還沒有大面積部署 Paddle(個人開發者居多),所以大家對它的學習熱情還是有所保留,個人感覺他對 TensorFlow 的感情有一點既生瑜何生亮的情懷。當然百度也投入了肉眼可見的技術投入和宣傳推廣,個人對 Paddle 還是很看好的。

PaddlePaddle 架構圖

MindSpore

發行公司:2019 年 8 月由華爲推出的新一代全場景 AI 計算框架,於 2020 年 3 月 28 日開源。

發展歷程:雖然誕生時間不長,但是其設計理念很先進。先後支持加強版可視化功能、差分隱私、二階優化算法、圖神經網絡、量化訓練、混合異構、MindSpore Serving、PS 分佈式訓練、MindIR、調試器等。

優點不足:MindSpore 採用底層編譯優化手段,使得計算圖的運行效率很高。支持多種平臺自然不在話下,更重要的是倡導軟硬協同設計,其分佈式訓練支持多種模式。不足之處是社區目前較小,測試時經常出現 bug,好在反饋比較及時。本人認爲大家可把這個看作重要學習機會,在 MindSpore 的成長期與其攜手並進。

MindSpore 架構圖

三、其他 AI 框架

OneFlow

OneFlow 是北京一流科技有限公司開發的深度學習框架,於 2020 年 7 月在 github 開源。OneFlow 圍繞性能提升和異構分佈式擴展,堅持靜態編譯與流式並行的設計理念,解決了集羣中諸多挑戰。國產新星當有它一席之地。

OneFlow 架構圖

Jittor

Jittor 是清華大學自研的即時編譯深度學習框架,於 2020 年 3 月 20 日開源,中文名爲計圖。整體來講,他們的工作還是相當給力的。它的核心理念:易用且可定製、實現與優化分離、即時編譯。國產新星亦可算它一枚。

Jittor 架構圖

Angel、BytePS、TensorNet

以上三者均是基於 Parameter Server 架構開發的高性能分佈式 AI 框架,分別由騰訊、字節跳動、360 開源。其中前兩者在業內有一定知名度,TensorNet 則一般,尤其是對從事分佈式訓練的 AI 工程師來說感受尤爲深刻。今天先不展開,後面會安排一個專題講解。

ModelArts、PAI

阿里的 PAI 與華爲的 ModelArts 是國內面向 AI 從業者的優秀產品化解決方案。他們兩者均集成各 AI 框架於一體,並提供可視化拖拉拽建模、Notebook 交互式建模、雲原生訓練平臺、在線推理服務等功能。準確地講,這兩者已不屬於 AI 框架的範疇,是基於 AI 框架但又高於 AI 框架,優點是對不同專業水平的用戶使用比較友好。

四、我的建議

回想一下開頭提到的兩個問題是什麼(忘了不要緊,我們再問一次)

下面我根據自己多年的 AI 從業經驗,給出參考答案供大家借鑑交流。

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/lIJFGB4VMh2id1LjBOoraw