當前,各式各樣深度學(xué)習框架的發(fā)展充分賦能機器學(xué)習,尤其是深度學(xué)習領(lǐng)域,為開(kāi)發(fā)者提供了極致便利。在本文中,Waymo 軟件工程師 Lin Yuan 細數了二十一世紀以來(lái)深度學(xué)習框架的發(fā)展歷程,并劃分為了石器、青銅、鐵器、羅馬和工業(yè)化時(shí)代。
過(guò)去十年,機器學(xué)習(尤其是深度學(xué)習)領(lǐng)域涌現了大量算法和應用。在這些深度學(xué)習算法和應用涌現的背后,是各種各樣的深度學(xué)習工具和框架。它們是機器學(xué)習革命的腳手架:TensorFlow 和 PyTorch 等深度學(xué)習框架的廣泛使用,使得許多 ML 從業(yè)者能夠使用適合的領(lǐng)域特定的編程語(yǔ)言和豐富的構建模塊更容易地組裝模型。
回顧深度學(xué)習框架的演變,我們可以清楚地看到深度學(xué)習框架和深度學(xué)習算法之間的緊密耦合關(guān)系。這種相互依賴(lài)的良性循環(huán)推動(dòng)了深度學(xué)習框架和工具的快速發(fā)展。
By Nationalmuseet, CC BY-SA 3.0,
https://commons.wikimedia.org/w/index.php?curid=90400464
石器時(shí)代(21 世紀初)
神經(jīng)網(wǎng)絡(luò )的概念已經(jīng)出現一段時(shí)間了。在 21 世紀初之前,有一些工具可以用來(lái)描述和開(kāi)發(fā)神經(jīng)網(wǎng)絡(luò )。這些工具包括 MATLAB、OpenNN、Torch 等,它們要么不是專(zhuān)門(mén)為神經(jīng)網(wǎng)絡(luò )模型開(kāi)發(fā)定制的,要么擁有復雜的用戶(hù) api,缺乏 GPU 支持。在此期間,ML 實(shí)踐者在使用這些原始的深度學(xué)習框架時(shí)不得不做很多繁重的工作。
By Nationalmuseet, CC BY-SA 3.0,
https://commons.wikimedia.org/w/index.php?curid=90400464
青銅時(shí)代(~2012 年)
2012 年,多倫多大學(xué)的 Alex Krizhevsky 等人提出了一種深度神經(jīng)網(wǎng)絡(luò )架構,后來(lái)被稱(chēng)為 AlexNet[1],該架構在 ImageNet 數據集上達到了 SOTA 精度,并大大超過(guò)了第二名的選手。這一出色的結果引發(fā)了深度神經(jīng)網(wǎng)絡(luò )的熱潮,此后各種深度神經(jīng)網(wǎng)絡(luò )模型在 ImageNet 數據集的準確性上不斷創(chuàng )下新高。
大約在這個(gè)時(shí)候,一些早期的深度學(xué)習框架,如 Caffe、Chainer 和Theano 應運而生。使用這些框架,用戶(hù)可以方便地建立復雜的深度神經(jīng)網(wǎng)絡(luò )模型,如 CNN、RNN、LSTM 等。此外,這些框架還支持多 GPU 訓練,這大大減少了對這些模型的訓練時(shí)間,并且能夠對以前無(wú)法裝入單一 GPU 內存的大型模型進(jìn)行訓練。在這些框架中,Caffe 和 Theano 使用聲明式編程風(fēng)格,而 Chainer 采用命令式編程風(fēng)格。這兩種不同的編程風(fēng)格也為即將到來(lái)的深度學(xué)習框架設定了兩條不同的開(kāi)發(fā)路徑。
Nordisk familjebok — Nordisk familjebok (1910), vol.13, Till art. J?rn?ldern. https://commons.wikimedia.org/w/index.php?curid=109777
鐵器時(shí)代(2015 ~ 2016)
AlexNet 的成功引起了計算機視覺(jué)領(lǐng)域的高度關(guān)注,并重新點(diǎn)燃了神經(jīng)網(wǎng)絡(luò )的希望,大型科技公司加入了開(kāi)發(fā)深度學(xué)習框架的行列。其中,谷歌開(kāi)源了著(zhù)名的 TensorFlow 框架,它至今仍是 ML 領(lǐng)域最流行的深度學(xué)習框架。Caffe 的發(fā)明者加入了 Facebook 并發(fā)布了 Caffe2;與此同時(shí),Facebook AI 研究(FAIR)團隊也發(fā)布了另一個(gè)流行的框架 PyTorch,它基于 Torch 框架,但使用了更流行的 Python api。微軟研究院開(kāi)發(fā)了 CNTK 框架。亞馬遜采用了 MXNet,這是華盛頓大學(xué)、CMU 和其他機構的聯(lián)合學(xué)術(shù)項目。TensorFlow 和 CNTK 借鑒了 Theano 的聲明式編程風(fēng)格,而 PyTorch 則繼承了 Torch 的直觀(guān)和用戶(hù)友好的命令式編程風(fēng)格。命令式編程風(fēng)格更加靈活(比如定義一個(gè) While 循環(huán)等)并且容易跟蹤,而聲明式編程風(fēng)格通常為內存和基于計算圖的運行時(shí)優(yōu)化提供了更多的空間。另一方面,被稱(chēng)為「mix」-net 的 MXNet 同時(shí)支持一組符號(聲明性)api 和一組命令式 api,并通過(guò)一種稱(chēng)為雜交(hybridization)的方法優(yōu)化了使用命令式 api 描述的模型的性能,從而享受了這兩個(gè)領(lǐng)域的好處。 2015 年,何凱明等人提出了 ResNet[2],再次突破了圖像分類(lèi)的邊界,在 ImageNet 的準確率上再創(chuàng )新高。業(yè)界和學(xué)界已經(jīng)達成共識,深度學(xué)習將成為下一個(gè)重大技術(shù)趨勢,解決各種領(lǐng)域的挑戰,這些挑戰在過(guò)去被認為是不可能的。在此期間,所有深度學(xué)習框架都對多 GPU 訓練和分布式訓練進(jìn)行了優(yōu)化,提供了更加用戶(hù)直觀(guān)的 api,并衍生出了專(zhuān)門(mén)針對計算機視覺(jué)、自然語(yǔ)言處理等特定任務(wù)的 model zoo 和工具包。還值得注意的是,Francois Chollet 幾乎是獨自開(kāi)發(fā)了 Keras 框架,該框架在現有框架(如 TensorFlow 和 MXNet)之上提供了神經(jīng)網(wǎng)絡(luò )和構建塊的更直觀(guān)的高級抽象。從今天開(kāi)始,這種抽象成為 TensorFlow 中模型層面事實(shí)上的 api。
By User Lamré on sv.wikipedia
https://commons.wikimedia.org/w/index.php?curid=801434
羅馬時(shí)代(2019 ~ 2020)
正如人類(lèi)歷史的發(fā)展一樣,深度學(xué)習框架經(jīng)過(guò)一輪激烈的競爭,最終形成了兩大「帝國」:TensorFlow 和 PyTorch 的雙頭壟斷,這兩大「帝國」代表了深度學(xué)習框架研發(fā)和生產(chǎn)中 95% 以上的用例。2019 年,Chainer 團隊_將他們的開(kāi)發(fā)工作轉移到 PyTorch;類(lèi)似地,微軟_停止了 CNTK 框架的積極開(kāi)發(fā),部分團隊成員轉而支持 Windows 和 ONNX 運行時(shí)上的 PyTorch。Keras 被 TensorFlow 收編,并在 TensorFlow 2.0 版本中成為其高級 api 之一。在深度學(xué)習框架領(lǐng)域,MXNet 仍然位居第三。
在此期間,深度學(xué)習框架空間有兩種趨勢。首先是大型模型訓練。隨著(zhù) BERT[3] 的誕生,以及它的近親 GPT-3[4] 的誕生,訓練大型模型的能力成為了深度學(xué)習框架的理想特性。這就要求深度學(xué)習框架能夠在數百臺(如果不是數千臺的話(huà))設備的規模下有效地進(jìn)行訓練。第二個(gè)趨勢是可用性。這一時(shí)期的深度學(xué)習框架都采用命令式編程風(fēng)格,語(yǔ)義靈活,調試方便。同時(shí),這些框架還提供了用戶(hù)級的裝飾器或 api,以通過(guò)一些 JIT(即時(shí))編譯器技術(shù)實(shí)現高性能。
By Tharunbr77 — Own work, CC BY-SA 4.0,
https://commons.wikimedia.org/w/index.php?curid=86866550
工業(yè)時(shí)代(2021+)
深度學(xué)習在自動(dòng)駕駛、個(gè)性化推薦、自然語(yǔ)言理解到醫療保健等廣泛領(lǐng)域取得了巨大成功,帶來(lái)了前所未有的用戶(hù)、開(kāi)發(fā)者和投資者浪潮。這也是未來(lái)十年開(kāi)發(fā)深度學(xué)習工具和框架的黃金時(shí)期。盡管深度學(xué)習框架從一開(kāi)始就有了長(cháng)足的發(fā)展,但它們之于深度學(xué)習的地位還遠遠不如編程語(yǔ)言 JAVA/ c++ 之于互聯(lián)網(wǎng)應用那樣的成熟。還有很多令人興奮的機會(huì )和工作有待探索和完成。 展望未來(lái),有幾個(gè)技術(shù)趨勢有望成為下一代深度學(xué)習框架的主流:
基于編譯器的算子(operator)優(yōu)化。
如今,許多操作符內核都是通過(guò)手動(dòng)或第三方庫實(shí)現的,比如 BLAS、CuDNN、OneDNN 等,這些庫針對特定的硬件平臺。當模型被訓練或部署在不同的硬件平臺上時(shí),這會(huì )造成很大的開(kāi)銷(xiāo)。此外,新的深度學(xué)習算法的增長(cháng)速度往往比這些庫的迭代速度快得多,這使得這些庫常常不支持新的算子。深度學(xué)習編譯器,如 Apache TVM、MLIR、Facebook Glow 等,已經(jīng)提出了在任何硬件后端上有效優(yōu)化和運行計算的建議。它們可以作為深度學(xué)習框架的整個(gè)后端。
統一的 API 標準。
許多深度學(xué)習框架共享類(lèi)似但略有不同的用戶(hù) api。這給用戶(hù)從一個(gè)框架切換到另一個(gè)框架帶來(lái)了困難和不必要的學(xué)習曲線(xiàn)。雖然大多數機器學(xué)習從業(yè)者和數據科學(xué)家都熟悉 NumPy庫,但在新的深度學(xué)習框架中,NumPy API 自然會(huì )成為 tenor 操作 API 的標準。我們已經(jīng)看到快速發(fā)展的框架 JAX 受到了用戶(hù)的熱烈歡迎,它的 api 完全與 NumPy 兼容。
數據搬運作為一等公民。
多節點(diǎn)或多設備訓練正在成為深度神經(jīng)網(wǎng)絡(luò )訓練的規范。最近開(kāi)發(fā)的深度學(xué)習框架,如 OneFlow,從設計的第一天起就將這一觀(guān)點(diǎn)納入設計考慮,并將數據通信視為模型訓練的整體計算圖的一部分。這為性能優(yōu)化打開(kāi)了更多的機會(huì ),而且由于它不需要像以前的深度學(xué)習框架那樣維護多種訓練策略(單設備 vs 分布式訓練),因此除了提供更好的性能之外,它還可以提供更簡(jiǎn)單的用戶(hù)界面。
總結
我們正處于一場(chǎng)人工智能革命的黎明。人工智能領(lǐng)域的新研究和新應用正在以前所未有的速度涌現。八年前,AlexNet 網(wǎng)絡(luò )包含 6000 萬(wàn)個(gè)參數,最新的 GPT-3 網(wǎng)絡(luò )包含 1750 億參數,網(wǎng)絡(luò )規模在 8 年內增加了 3000 倍!另一方面,人類(lèi)的大腦包含大約 100 萬(wàn)億個(gè)參數(即突觸)。這表明,如果有可能的話(huà),神經(jīng)網(wǎng)絡(luò )要達到人類(lèi)的智能水平還有很大的差距。
這種難以接受的網(wǎng)絡(luò )規模對模型訓練和推理的硬件和軟件計算效率都提出了很大的挑戰。未來(lái)的深度學(xué)習框架很可能是算法、高性能計算、硬件加速器和分布式系統的跨學(xué)科成果。
責任編輯:lq
-
機器學(xué)習
+關(guān)注
關(guān)注
66文章
8179瀏覽量
131130 -
深度學(xué)習
+關(guān)注
關(guān)注
73文章
5261瀏覽量
120118 -
pytorch
+關(guān)注
關(guān)注
2文章
766瀏覽量
12894
原文標題:深度學(xué)習框架簡(jiǎn)史:TF和PyTorch雙頭壟斷,未來(lái)十年迎來(lái)黃金時(shí)期
文章出處:【微信號:Imgtec,微信公眾號:Imagination Tech】歡迎添加關(guān)注!文章轉載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論