近年來(lái),深度學(xué)習(xí)在很多機(jī)器學(xué)習(xí)領(lǐng)域都有著非常出色的表現(xiàn),在圖像識(shí)別、語(yǔ)音識(shí)別、自然語(yǔ)言處理、機(jī)器人、網(wǎng)絡(luò)廣告投放、醫(yī)學(xué)自動(dòng)診斷和金融等領(lǐng)域有著廣泛應(yīng)用。面對(duì)繁多的應(yīng)用場(chǎng)景,深度學(xué)習(xí)框架有助于建模者節(jié)省大量而繁瑣的外圍工作,更聚焦業(yè)務(wù)場(chǎng)景和模型設(shè)計(jì)本身。
使用深度學(xué)習(xí)框架完成模型構(gòu)建有如下兩個(gè)優(yōu)勢(shì):
節(jié)省編寫大量底層代碼的精力:屏蔽底層實(shí)現(xiàn),用戶只需關(guān)注模型的邏輯結(jié)構(gòu)。同時(shí),深度學(xué)習(xí)工具簡(jiǎn)化了計(jì)算,降低了深度學(xué)習(xí)入門門檻。
省去了部署和適配環(huán)境的煩惱:具備靈活的移植性,可將代碼部署到CPU/GPU/移動(dòng)端上,選擇具有分布式性能的深度學(xué)習(xí)工具會(huì)使模型訓(xùn)練更高效。
因此,在開始深度學(xué)習(xí)項(xiàng)目之前,選擇一個(gè)合適的框架是非常重要的。目前,全世界最為流行的深度學(xué)習(xí)框架有PaddlePaddle、Tensorflow、Caffe、Theano、MXNet、Torch和PyTorch等。下面我們就來(lái)介紹一下目前主流的、以及一些剛開源但表現(xiàn)非常優(yōu)秀的深度學(xué)習(xí)框架的各自特點(diǎn),希望能夠幫助大家在學(xué)習(xí)工作時(shí)作出合適的選擇。
Theano
作為深度學(xué)習(xí)框架的祖師爺,Theano 的誕生為人類叩開了新時(shí)代人工智能的大門。Theano 的開發(fā)始于 2007 年的蒙特利爾大學(xué),早期雛形由兩位傳奇人物 Yoshua Bengio 和 Ian Goodfellow 共同打造,并于開源社區(qū)中逐漸壯大。
Theano 基于 Python,是一個(gè)擅長(zhǎng)處理多維數(shù)組的庫(kù),十分適合與其它深度學(xué)習(xí)庫(kù)結(jié)合起來(lái)進(jìn)行數(shù)據(jù)探索。它設(shè)計(jì)的初衷是為了執(zhí)行深度學(xué)習(xí)中大規(guī)模神經(jīng)網(wǎng)絡(luò)算法的運(yùn)算。其實(shí),Theano 可以被更好地理解為一個(gè)數(shù)學(xué)表達(dá)式的編譯器:用符號(hào)式語(yǔ)言定義你想要的結(jié)果,該框架會(huì)對(duì)你的程序進(jìn)行編譯,在 GPU 或 CPU 中高效運(yùn)行。
Theano 的出現(xiàn)為人工智能在新時(shí)代的發(fā)展打下了強(qiáng)大的基礎(chǔ),在過(guò)去的很長(zhǎng)一段時(shí)間內(nèi),Theano 都是深度學(xué)習(xí)開發(fā)與研究的行業(yè)標(biāo)準(zhǔn)。往后也有大量基于 Theano 的開源深度學(xué)習(xí)庫(kù)被開發(fā)出來(lái),包括 Keras、Lasagne 和 Blocks,甚至后來(lái)火遍全球的 TensorFlow 也有很多與 Theano 類似的功能。
隨著更多優(yōu)秀的深度學(xué)習(xí)開源框架陸續(xù)涌現(xiàn),Theano 逐漸淡出了人們的視野。2013 年,Theano 創(chuàng)始者之一 Ian Goodfellow 加入 Google 開發(fā) TensorFlow,標(biāo)志著 Theano 正式退出歷史舞臺(tái)。目前僅有部分研究領(lǐng)域的學(xué)者會(huì)使用 Theano 進(jìn)行一些學(xué)術(shù)研究。
Caffe&Caffe2
Caffe 是一個(gè)優(yōu)先考慮表達(dá)、速度和模塊化來(lái)設(shè)計(jì)的框架,它由賈揚(yáng)清和伯克利人工智能實(shí)驗(yàn)室研究開發(fā)。支持 C、C++、Python等接口以及命令行接口。它以速度和可轉(zhuǎn)性以及在卷積神經(jīng)網(wǎng)絡(luò)建模中的適用性而聞名。Caffe可以每天處理超過(guò)六千萬(wàn)張圖像,只需單個(gè)NVIDIA K40 GPU,其中 1毫秒/圖像用于推理,4毫秒/圖像用于學(xué)習(xí)。
使用Caffe庫(kù)的好處是從深度網(wǎng)絡(luò)存儲(chǔ)庫(kù)“Caffe 模型Zoo”訪問(wèn)可用網(wǎng)絡(luò),這些網(wǎng)絡(luò)經(jīng)過(guò)預(yù)先培訓(xùn),可以立即使用。通過(guò)Caffe Model Zoo框架可訪問(wèn)用于解決深度學(xué)習(xí)問(wèn)題的預(yù)訓(xùn)練網(wǎng)絡(luò)、模型和權(quán)重。這些模型可完成簡(jiǎn)單的遞歸、大規(guī)模視覺(jué)分類、用于圖像相似性的SiameSE網(wǎng)絡(luò)、語(yǔ)音和機(jī)器人應(yīng)用等。
不過(guò),Caffe 不支持精細(xì)粒度網(wǎng)絡(luò)層,給定體系結(jié)構(gòu),對(duì)循環(huán)網(wǎng)絡(luò)和語(yǔ)言建模的總體支持相當(dāng)差,必須用低級(jí)語(yǔ)言建立復(fù)雜的層類型,使用門檻很高。Caffe2是由Facebook組織開發(fā)的深度學(xué)習(xí)模型,雖然使用門檻不像Caffe那樣高,但仍然讓不那么看重性能的開發(fā)者望而卻步。另外,Caffe2繼承了Caffe的優(yōu)點(diǎn),在速度上令人印象深刻。Facebook 人工智能實(shí)驗(yàn)室與應(yīng)用機(jī)器學(xué)習(xí)團(tuán)隊(duì)合作,利用Caffe2大幅加速機(jī)器視覺(jué)任務(wù)的模型訓(xùn)練過(guò)程,僅需 1 小時(shí)就訓(xùn)練完ImageNet 這樣超大規(guī)模的數(shù)據(jù)集。2018 年 3 月底,F(xiàn)acebook 將 Caffe2 并入 PyTorch,一度引起轟動(dòng)。
Tensorflow
TensorFlow 是 Google 于 2015 年開源的深度學(xué)習(xí)框架。TensorFlow前身是谷歌的神經(jīng)網(wǎng)絡(luò)算法庫(kù) DistBelief,由谷歌人工智能團(tuán)隊(duì)谷歌大腦(Google Brain)開發(fā)和維護(hù),擁有包括 TensorFlow Hub、TensorFlow Lite、TensorFlow Research Cloud 在內(nèi)的多個(gè)項(xiàng)目以及各類應(yīng)用程序接口。
TensorFlow 讓用戶可以快速設(shè)計(jì)深度學(xué)習(xí)網(wǎng)絡(luò),將底層細(xì)節(jié)進(jìn)行抽象,而不用耗費(fèi)大量時(shí)間編寫底層 CUDA 或 C++ 代碼。TensorFlow 在很多方面擁有優(yōu)異的表現(xiàn),比如設(shè)計(jì)神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)的代碼的簡(jiǎn)潔度,分布式深度學(xué)習(xí)算法的執(zhí)行效率,還有部署的便利性(能夠全面地支持各種硬件和操作系統(tǒng))。
TensorFlow在很大程度上可以看作是Theano的后繼者,不僅因?yàn)樗鼈冇泻艽笠慌餐拈_發(fā)者,而且它們還擁有相近的設(shè)計(jì)理念,都是基于計(jì)算圖實(shí)現(xiàn)自動(dòng)微分系統(tǒng)。TensorFlow 使用數(shù)據(jù)流圖進(jìn)行數(shù)值計(jì)算,圖中的節(jié)點(diǎn)代表數(shù)學(xué)運(yùn)算,而圖中的邊則代表在這些節(jié)點(diǎn)之間傳遞的多維數(shù)組(張量)。
TensorFlow編程接口支持Python、C++、Java、Go、R和Haskell API的alpha版本。此外,TensorFlow還可在GoogleCloud和AWS中運(yùn)行。TensorFlow還支持 Windows 7、Windows 10和Windows Server 2016。由于TensorFlow使用C++ Eigen庫(kù),所以庫(kù)可在ARM架構(gòu)上編譯和優(yōu)化。這也就意味著用戶可以在各種服務(wù)器和移動(dòng)設(shè)備上部署自己的訓(xùn)練模型,無(wú)須執(zhí)行單獨(dú)的模型解碼器或者加載Python解釋器。
TensorFlow構(gòu)建了活躍的社區(qū),完善的文檔體系,大大降低了我們的學(xué)習(xí)成本,不過(guò)社區(qū)和文檔主要以英文為主,中文支持有待加強(qiáng)。另外,TensorFlow有很直觀的計(jì)算圖可視化呈現(xiàn)。模型能夠快速的部署在各種硬件機(jī)器上,從高性能的計(jì)算機(jī)到移動(dòng)設(shè)備,再到更小的更輕量的智能終端。
不過(guò),對(duì)于深度學(xué)習(xí)的初學(xué)者而言,TensorFlow的學(xué)習(xí)曲線太過(guò)陡峭,需要不斷練習(xí)、探索社區(qū)并繼續(xù)閱讀文章來(lái)掌握TensorFlow的訣竅。
Keras
Keras用Python編寫,可以在TensorFlow(以及CNTK和Theano)之上運(yùn)行。TensorFlow的接口具備挑戰(zhàn)性,因?yàn)樗且粋€(gè)低級(jí)庫(kù),新用戶可能會(huì)很難理解某些實(shí)現(xiàn)。而Keras是一個(gè)高層的API,它為快速實(shí)驗(yàn)而開發(fā)。因此,如果希望獲得快速結(jié)果,Keras會(huì)自動(dòng)處理核心任務(wù)并生成輸出。Keras支持卷積神經(jīng)網(wǎng)絡(luò)和遞歸神經(jīng)網(wǎng)絡(luò),可以在CPU和GPU上無(wú)縫運(yùn)行。
深度學(xué)習(xí)的初學(xué)者經(jīng)常會(huì)抱怨:無(wú)法正確理解復(fù)雜的模型。如果你是這樣的用戶,Keras便是你的正確選擇。它的目標(biāo)是最小化用戶操作,并使其模型真正容易理解。Keras的出現(xiàn)大大降低了深度學(xué)習(xí)應(yīng)用的門檻,通過(guò)Keras的API可以通過(guò)數(shù)行代碼就構(gòu)建一個(gè)網(wǎng)絡(luò)模型,曾幾何時(shí),Keras+Theano,Keras+CNTK的模式深得開發(fā)者喜愛(ài)。目前Keras整套架構(gòu)已經(jīng)封裝進(jìn)了TensorFlow,在TF.keras上可以完成Keras的所有事情。
如果你熟悉Python,并且沒(méi)有進(jìn)行一些高級(jí)研究或開發(fā)某種特殊的神經(jīng)網(wǎng)絡(luò),那么Keras適合你。Keras的重點(diǎn)更多地放在取得成果上,而不是被模型的復(fù)雜之處所困擾。因此,如果有一個(gè)與圖像分類或序列模型相關(guān)的項(xiàng)目,可以從Keras開始,很快便可以構(gòu)建出一個(gè)工作模型。Keras也集成在TensorFlow中,因此也可以使用Tf.keras構(gòu)建模型。
Pytorch
2017年1月,F(xiàn)acebook人工智能研究院(FAIR)團(tuán)隊(duì)在GitHub上開源了PyTorch,并迅速占領(lǐng)GitHub熱度榜榜首。PyTorch的歷史可追溯到2002年就誕生于紐約大學(xué)的Torch。Torch使用了一種不是很大眾的語(yǔ)言Lua作為接口。Lua簡(jiǎn)潔高效,但由于其過(guò)于小眾,用的人不是很多。在2017年,Torch的幕后團(tuán)隊(duì)推出了PyTorch。PyTorch不是簡(jiǎn)單地封裝Lua Torch提供Python接口,而是對(duì)Tensor之上的所有模塊進(jìn)行了重構(gòu),并新增了最先進(jìn)的自動(dòng)求導(dǎo)系統(tǒng),成為當(dāng)下最流行的動(dòng)態(tài)圖框架。
Pytorch官網(wǎng)的標(biāo)題語(yǔ)簡(jiǎn)明地描述了Pytorch的特點(diǎn)以及將要發(fā)力的方向。Pytorch在學(xué)術(shù)界優(yōu)勢(shì)很大,關(guān)于用到深度學(xué)習(xí)模型的文章,除了Google的,其他大部分都是通過(guò)Pytorch進(jìn)行實(shí)驗(yàn)的,究其原因,一是Pytorch庫(kù)足夠簡(jiǎn)單,跟NumPy,SciPy等可以無(wú)縫連接,而且基于tensor的GPU加速非常給力,二是訓(xùn)練網(wǎng)絡(luò)迭代的核心——梯度的計(jì)算,Autograd架構(gòu)(借鑒于Chainer),基于Pytorch,我們可以動(dòng)態(tài)地設(shè)計(jì)網(wǎng)絡(luò),而無(wú)需笨拙地定義靜態(tài)網(wǎng)絡(luò)圖,才能去進(jìn)行計(jì)算,想要對(duì)網(wǎng)絡(luò)有任務(wù)修改,都要從頭開始構(gòu)建靜態(tài)圖?;诤?jiǎn)單,靈活的設(shè)計(jì),Pytorch快速成為了學(xué)術(shù)界的主流深度學(xué)習(xí)框架。
Pytorch的缺點(diǎn)則是前期缺乏對(duì)移動(dòng)端的支持,因此在商用領(lǐng)域的普及度不及 TensorFlow 。在 2019 年,F(xiàn)acebook 推出 PyTorch Mobile 框架,彌補(bǔ)了 PyTorch 在移動(dòng)端的不足,使得其在商用領(lǐng)域的發(fā)展有望趕超 TensorFlow 。不過(guò)現(xiàn)在,如果稍微深入了解TensorFlow和Pytorch,就會(huì)發(fā)現(xiàn)他們?cè)絹?lái)越像,TF加入了動(dòng)態(tài)圖架構(gòu),Pytorch致力于其在工業(yè)界更加易用。打開各自的官網(wǎng),你也會(huì)發(fā)現(xiàn)文檔風(fēng)格也越發(fā)的相似。
PyTorch Lightning
PyTorch非常易于使用,可以構(gòu)建復(fù)雜的AI模型。但是一旦研究變得復(fù)雜,并且將諸如多GPU訓(xùn)練,16位精度和TPU訓(xùn)練之類的東西混在一起,用戶很可能會(huì)引入錯(cuò)誤。PyTorch Lightning就可以完全解決這個(gè)問(wèn)題。Lightning會(huì)構(gòu)建你的PyTorch代碼,以便可以抽象出訓(xùn)練的細(xì)節(jié)。這使得AI研究可擴(kuò)展且可快速迭代。這個(gè)項(xiàng)目在GitHub上斬獲了6.6k星。
Lightning將DL/ML代碼分為三種類型:研究代碼、工程代碼、非必要代碼。使用Lightning就只需要專注于研究代碼,不需要寫一大堆的 .cuda() 和 .to(device),Lightning會(huì)幫你自動(dòng)處理。如果要新建一個(gè)tensor,可以使用type_as來(lái)使得新tensor處于相同的處理器上。此外,它會(huì)將工程代碼參數(shù)化,減少這部分代碼會(huì)使得研究代碼更加清晰,整體也更加簡(jiǎn)潔。
PyTorch Lightning 的創(chuàng)建者WilliamFalcon,現(xiàn)在在紐約大學(xué)的人工智能專業(yè)攻讀博士學(xué)位,并在《福布斯》擔(dān)任AI特約作者。他表示,PyTorch Lightning是為從事AI研究的專業(yè)研究人員和博士生創(chuàng)建的。該框架被設(shè)計(jì)為具有極強(qiáng)的可擴(kuò)展性,同時(shí)又使最先進(jìn)的AI研究技術(shù)(例如TPU訓(xùn)練)變得微不足道。
PaddlePaddle
PaddlePaddle 的前身是百度于 2013 年自主研發(fā)的深度學(xué)習(xí)平臺(tái)Paddle,且一直為百度內(nèi)部工程師研發(fā)使用。PaddlePaddle 在深度學(xué)習(xí)框架方面,覆蓋了搜索、圖像識(shí)別、語(yǔ)音語(yǔ)義識(shí)別理解、情感分析、機(jī)器翻譯、用戶畫像推薦等多領(lǐng)域的業(yè)務(wù)和技術(shù)。在 2016 年的百度世界大會(huì)上,前百度首席科學(xué)家 Andrew Ng首次宣布將百度深度學(xué)習(xí)平臺(tái)對(duì)外開放,命名 PaddlePaddle,中文譯名“飛槳”。
PaddlePaddle同時(shí)支持稠密參數(shù)和稀疏參數(shù)場(chǎng)景的超大規(guī)模深度學(xué)習(xí)并行訓(xùn)練,支持千億規(guī)模參數(shù)、數(shù)百個(gè)幾點(diǎn)的高效并行訓(xùn)練,也是最早提供如此強(qiáng)大的深度學(xué)習(xí)并行技術(shù)的深度學(xué)習(xí)框架。PaddlePaddle擁有強(qiáng)大的多端部署能力,支持服務(wù)器端、移動(dòng)端等多種異構(gòu)硬件設(shè)備的高速推理,預(yù)測(cè)性能有顯著優(yōu)勢(shì)。PaddlePaddle已經(jīng)實(shí)現(xiàn)了API的穩(wěn)定和向后兼容,具有完善的中英雙語(yǔ)使用文檔,形成了易學(xué)易用、簡(jiǎn)潔高效的技術(shù)特色。
2019 年,百度還推出了多平臺(tái)高性能深度學(xué)習(xí)引擎Paddle Lite(Paddle Mobile 的升級(jí)版),為 PaddlePaddle 生態(tài)完善了移動(dòng)端的支持。
Deeplearning4j
DL4J 是由來(lái)自舊金山和東京的一群開源貢獻(xiàn)者協(xié)作開發(fā)的。2014 年末,他們將其發(fā)布為 Apache 2.0 許可證下的開源框架。主要是作為一種平臺(tái)來(lái)使用,通過(guò)這種平臺(tái)來(lái)部署商用深度學(xué)習(xí)算法。創(chuàng)立于 2014 年的 Skymind 是 DL4J 的商業(yè)支持機(jī)構(gòu)。2017 年 10 月,Skymind 加入了 Eclipse 基金會(huì),并且將 DL4J 貢獻(xiàn)給開源 Java Enterprise Edition 庫(kù)生態(tài)系統(tǒng)。
DL4J是為java和jvm編寫的開源深度學(xué)習(xí)庫(kù),支持各種深度學(xué)習(xí)模型。它具有為 Java 和 Scala 語(yǔ)言編寫的分布式深度學(xué)習(xí)庫(kù),并且內(nèi)置集成了 Apache Hadoop 和 Spark。Deeplearning4j 有助于彌合使用Python 語(yǔ)言的數(shù)據(jù)科學(xué)家和使用 Java 語(yǔ)言的企業(yè)開發(fā)人員之間的鴻溝,從而簡(jiǎn)化了在企業(yè)大數(shù)據(jù)應(yīng)用程序中部署深度學(xué)習(xí)的過(guò)程。
DL4J主要有三大優(yōu)勢(shì):
1. Python 可與 Java、Scala、Clojure 和 Kotlin 實(shí)現(xiàn)互操作性。Python為數(shù)據(jù)科學(xué)家所廣泛采用,而大數(shù)據(jù)編程人員則在 Hadoop 和 Spark 上使用 Java 或 Scala 來(lái)開展工作。DL4J 填補(bǔ)了之間的鴻溝,開發(fā)人員因而能夠在 Python 與 JVM 語(yǔ)言(例如,Java、Scala、Clojure 和 Kotlin)之間遷移。通過(guò)使用 Keras API,DL4J 支持從其他框架(例如,TensorFlow、Caffe、Theano 和 CNTK)遷移深度學(xué)習(xí)模型。甚至有人建議將 DL4J 作為 Keras 官方貢獻(xiàn)的后端之一。
2. 分布式處理。DL4J 可在最新分布式計(jì)算平臺(tái)(例如,Hadoop 和 Spark)上運(yùn)行,并且可使用分布式 CPU 或 GPU 實(shí)現(xiàn)加速。通過(guò)使用多個(gè) GPU,DL4J 可以實(shí)現(xiàn)與 Caffe 相媲美的性能。DL4J 也可以在許多云計(jì)算平臺(tái)上運(yùn)行。
3. 并行處理。DL4J 包含單線程選項(xiàng)和分布式多線程選項(xiàng)。這種減少迭代次數(shù)的方法可在集群中并行訓(xùn)練多個(gè)神經(jīng)網(wǎng)絡(luò)。因此,DL4J 非常適合使用微服務(wù)架構(gòu)來(lái)設(shè)計(jì)應(yīng)用程序。
CNTK
2015年8月,微軟公司在CodePlex上宣布由微軟研究院開發(fā)的計(jì)算網(wǎng)絡(luò)工具集CNTK將開源。5個(gè)月后,2016年1月25日,微軟公司在他們的GitHub倉(cāng)庫(kù)上正式開源了CNTK。早在2014年,在微軟公司內(nèi)部,黃學(xué)東博士和他的團(tuán)隊(duì)正在對(duì)計(jì)算機(jī)能夠理解語(yǔ)音的能力進(jìn)行改進(jìn),但當(dāng)時(shí)使用的工具顯然拖慢了他們的進(jìn)度。于是,一組由志愿者組成的開發(fā)團(tuán)隊(duì)構(gòu)想設(shè)計(jì)了他們自己的解決方案,最終誕生了CNTK。
根據(jù)微軟開發(fā)者的描述,CNTK的性能比Caffe、Theano、TensoFlow等主流工具都要強(qiáng)。CNTK支持CPU和GPU模式,和TensorFlow/Theano一樣,它把神經(jīng)網(wǎng)絡(luò)描述成一個(gè)計(jì)算圖的結(jié)構(gòu),葉子節(jié)點(diǎn)代表輸入或者網(wǎng)絡(luò)參數(shù),其他節(jié)點(diǎn)代表計(jì)算步驟。CNTK 是一個(gè)非常強(qiáng)大的命令行系統(tǒng),可以創(chuàng)建神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)系統(tǒng)。
CNTK 最初是出于在 Microsoft 內(nèi)部使用的目的而開發(fā)的,一開始甚至沒(méi)有Python接口,而是使用了一種幾乎沒(méi)什么人用的語(yǔ)言開發(fā)的,而且文檔有些晦澀難懂,推廣不是很給力,導(dǎo)致現(xiàn)在用戶比較少。但就框架本身的質(zhì)量而言,CNTK表現(xiàn)得比較均衡,沒(méi)有明顯的短板,并且在語(yǔ)音領(lǐng)域效果比較突出。
MindSpore
MindSpore是華為在今年3月召開的開發(fā)者大會(huì)上正式開源,MindSpore是一款支持端邊云全場(chǎng)景的深度學(xué)習(xí)訓(xùn)練推理框架,當(dāng)前主要應(yīng)用于計(jì)算機(jī)視覺(jué)、自然語(yǔ)言處理等AI領(lǐng)域,旨在為數(shù)據(jù)科學(xué)家和算法工程師提供設(shè)計(jì)友好、運(yùn)行高效的開發(fā)體驗(yàn),提供昇騰AI處理器原生支持及軟硬件協(xié)同優(yōu)化。
MindSpore的特性是可以顯著減少訓(xùn)練時(shí)間和成本(開發(fā)態(tài))、以較少的資源和最高能效比運(yùn)行(運(yùn)行態(tài)),同時(shí)適應(yīng)包括端、邊緣與云的全場(chǎng)景(部署態(tài)),強(qiáng)調(diào)了軟硬件協(xié)調(diào)及全場(chǎng)景部署的能力。因此,使用MindSpore的優(yōu)勢(shì)可以總結(jié)為四點(diǎn):
簡(jiǎn)單的開發(fā)體驗(yàn)。幫助開發(fā)者實(shí)現(xiàn)網(wǎng)絡(luò)自動(dòng)切分,只需串行表達(dá)就能實(shí)現(xiàn)并行訓(xùn)練,降低門檻,簡(jiǎn)化開發(fā)流程;
靈活的調(diào)試模式。具備訓(xùn)練過(guò)程靜態(tài)執(zhí)行和動(dòng)態(tài)調(diào)試能力,開發(fā)者通過(guò)變更一行代碼即可切換模式,快速在線定位問(wèn)題;
充分發(fā)揮硬件潛能。最佳匹配昇騰處理器,最大程度地發(fā)揮硬件能力,幫助開發(fā)者縮短訓(xùn)練時(shí)間,提升推理性能;
全場(chǎng)景快速部署。支持云、邊緣和手機(jī)上的快速部署,實(shí)現(xiàn)更好的資源利用和隱私保護(hù),讓開發(fā)者專注于AI應(yīng)用的創(chuàng)造。
MegEngine(天元)
MegEngine(天元)是今年3月正式開源的工業(yè)級(jí)深度學(xué)習(xí)框架,曠世也成為國(guó)內(nèi)第一家開源AI框架的AI企業(yè)。天元可幫助開發(fā)者用戶借助友好的編程接口,進(jìn)行大規(guī)模深度學(xué)習(xí)模型訓(xùn)練和部署。架構(gòu)上天元具體分為計(jì)算接口、圖表示、優(yōu)化與編譯、運(yùn)行時(shí)管理和計(jì)算內(nèi)核五層,可極大簡(jiǎn)化算法開發(fā)流程,實(shí)現(xiàn)了模型訓(xùn)練速度和精度的無(wú)損遷移,支持動(dòng)靜態(tài)的混合編程和模型導(dǎo)入,內(nèi)置高性能計(jì)算機(jī)視覺(jué)算子,尤其適用于大模型算法訓(xùn)練。
若說(shuō)谷歌TensorFlow采用利于部署的靜態(tài)圖更適用于工業(yè)界,而Facebook PyTorch采用靈活且方便調(diào)試的動(dòng)態(tài)圖更適合學(xué)術(shù)科研。那么曠視的天元?jiǎng)t在兼具了雙方特性的過(guò)程中,找到了一個(gè)的平衡點(diǎn)。天元是一個(gè)訓(xùn)練和推理在同一個(gè)框架、同一個(gè)體系內(nèi)完整支持的設(shè)計(jì)?;谶@些創(chuàng)新性的框架設(shè)計(jì),天元深度學(xué)習(xí)框架擁有推理訓(xùn)練一體化、動(dòng)靜合一、兼容并包和靈活高效四大優(yōu)勢(shì):
訓(xùn)練推理:一體化天元既能夠支持開發(fā)者進(jìn)行算法訓(xùn)練,同時(shí)其訓(xùn)練得到的模型,還可以直接用于產(chǎn)品的推理和封裝,無(wú)需進(jìn)行多余的模型轉(zhuǎn)換。這極大地簡(jiǎn)化了算法開發(fā)流程,實(shí)現(xiàn)速度和精度的無(wú)損遷移。與此同時(shí),天元在模型部署時(shí)還能夠自動(dòng)優(yōu)化模型,自動(dòng)幫助開發(fā)者刪除冗余代碼。
動(dòng)靜合一:天元將動(dòng)態(tài)圖的簡(jiǎn)單靈活,與靜態(tài)圖的高性能優(yōu)勢(shì)進(jìn)行整合,能在充分利用動(dòng)態(tài)圖模型訓(xùn)練優(yōu)勢(shì)的同時(shí),通過(guò)動(dòng)靜態(tài)一鍵轉(zhuǎn)換功能,以靜態(tài)圖的形式完成生產(chǎn)和部署。此外,天元還支持動(dòng)靜態(tài)的混合編程,進(jìn)一步提高其靈活性。
兼容并包:天元部署了Pythonic的API和PyTorchModule功能,支持模型直接導(dǎo)入,進(jìn)一步降低框架遷移的入門門檻和學(xué)習(xí)成本。同時(shí),它內(nèi)置高性能計(jì)算機(jī)視覺(jué)算子和算法,能夠深度優(yōu)化計(jì)算機(jī)視覺(jué)相關(guān)模型訓(xùn)練和應(yīng)用。
靈活高效:在部署方面,天元擁有多平臺(tái)多設(shè)備適應(yīng)能力,其內(nèi)置算子能夠在推理或生產(chǎn)環(huán)境中充分利用多核優(yōu)勢(shì),靈活調(diào)用設(shè)備算力,十分適用于大模型算法訓(xùn)練。
3月,曠視推出的天元是Alpha版本,其中包括曠視前期整理的代碼和關(guān)鍵步驟。今年6月曠視推出了Beta版本,添加對(duì)ARM系列CPU的支持,以及更多加速芯片的支持。而天元的正式版本將于今年9月發(fā)布,除了添加對(duì)主流計(jì)算設(shè)備的支持外,還將升級(jí)其動(dòng)態(tài)計(jì)算能力,進(jìn)一步優(yōu)化訓(xùn)練推理全流程的使用體驗(yàn)。與此同時(shí),曠視天元已在GitHub和國(guó)內(nèi)新一代人工智能開源開放社區(qū)OpenI上同步開源。
Jittor(計(jì)圖)
Jittor 出自清華大學(xué),開發(fā)團(tuán)隊(duì)來(lái)自清華大學(xué)計(jì)算機(jī)系圖形學(xué)實(shí)驗(yàn)室,牽頭者是清華大學(xué)計(jì)算機(jī)系胡事民教授。Jittor 是國(guó)內(nèi)第一個(gè)由高校開源的深度學(xué)習(xí)框架,同時(shí)也是繼 Theano、Caffe 之后,又一個(gè)由高校主導(dǎo)的框架。
與主流的深度學(xué)習(xí)框架TensorFlow、Pytorch不同,Jittor是一個(gè)完全基于動(dòng)態(tài)編譯(Just-in-time)、使用元算子和統(tǒng)一計(jì)算圖的深度學(xué)習(xí)框架。Jittor 前端語(yǔ)言為 Python,使用了模塊化的設(shè)計(jì),類似于 PyTorch、Keras;后端則使用高性能語(yǔ)言編寫,如 CUDA、C++。元算子和 Numpy 一樣易于使用,而統(tǒng)一計(jì)算圖則是融合了靜態(tài)計(jì)算圖和動(dòng)態(tài)計(jì)算圖的諸多優(yōu)點(diǎn),在易于使用的同時(shí),提供高性能的優(yōu)化?;谠阕娱_發(fā)的深度學(xué)習(xí)模型,可以被計(jì)圖實(shí)時(shí)地自動(dòng)優(yōu)化并且運(yùn)行在指定的硬件上,如 CPU、GPU。
Jittor開發(fā)團(tuán)隊(duì)提供了實(shí)驗(yàn)數(shù)據(jù)。在ImageNet數(shù)據(jù)集上,使用Resnet50模型,GPU圖像分類任務(wù)性能比PyTorch相比,提升32%;CPU圖像分類任務(wù)提升11%。在CelebA數(shù)據(jù)集上,使用LSGAN模型,使用GPU處理圖像生成任務(wù),Jittor比PyTorch性能提升達(dá)51%。
此外,為了方便更多人上手Jittor,開發(fā)團(tuán)隊(duì)采用了和PyTorch較為相似的模塊化接口,并提供輔助轉(zhuǎn)換腳本,可以將PyTorch的模型自動(dòng)轉(zhuǎn)換成Jittor的模型。他們介紹稱,在參數(shù)保存和數(shù)據(jù)傳輸上,Jittor使用和PyTorch一樣的 Numpy+pickle 協(xié)議,所以Jittor和PyTorch的模型可以相互加載和調(diào)用。
當(dāng)然, Jittor作為一個(gè)新興深度學(xué)習(xí)框架,在一些功能上,仍舊需要持續(xù)迭代完善。比如生態(tài)的建設(shè),以及更大范圍的推廣,仍舊需要很多的努力。Jittor開發(fā)團(tuán)隊(duì)介紹稱,就目前來(lái)看,Jittor框架的模型支持還待完善,分布式功能待完善。這也是他們下一階段研發(fā)的重點(diǎn)。
總的來(lái)說(shuō),各家的深度學(xué)習(xí)框架各有千秋,重要的是找到適合自己團(tuán)隊(duì)的,能夠快速匹配團(tuán)隊(duì)的技術(shù)棧,快速試驗(yàn)以期發(fā)揮深度學(xué)習(xí)技術(shù)應(yīng)用落地的商業(yè)價(jià)值。
編輯:hfy
評(píng)論
查看更多