王敏捷 - 深度學習框架這十年!

2021-02-13 Datawhale

王敏捷  ACM'07

紐約大學博士,亞馬遜上海研究院應用科學家

內容概覽 介紹了深度學習框架發展的三個時期:工具包時代(2014年前)、數據流時期(2014-2018)、新時代(2019年後)。強調了深度學習框架的重要性與推動因素,介紹了3位ACM人李沐、陳天奇和他一起將各自的技術Parameter Server、CXXNet、Minerva融合併創造了新的深度學習框架MXNet。敏捷學長也指出了在深度學習新時代,隨著可微分編程、圖神經網絡等新領域的出現以及專用晶片的發展,深度學習框架會迎來更多機遇與挑戰。

深度學習的浪潮其實到現在僅僅發展了十幾年的時間。深度學習的火熱到底是什麼在驅動?

原因主要來自於三個方面:

(1)首先是規模很大的數據。俗話說巧婦難為無米之炊,大數據使得我們在訓練神經網絡的過程中有充分的資源可以利用;

(2)其次,算法也是非常非常重要的突破。比如說卷積神經網絡、residual network、注意力機制這些算法的興起,也是促成深度學習浪潮的重要因素。

(3)最後是算力。算力主要體現在兩個方面:軟體和硬體,其中軟體對應的就是今天要講的深度學習框架。

對於做人工智慧方面的研究或者工業界的人士,或多或少都用過深度學習框架。在過去的幾十年裡,有很多深度學習框架被提出,被使用,但最後銷聲匿跡。我們需要去了解一代又一代的深度學習框架被提出的原因,框架之間的關係及其演變的歷史,也就是今天的主題:深度學習框架這十年。

講深度學習框架之前,可以先了解一下什麼是Rube Goldberg’s Machine。這是一個在美國高中的科創文化中非常流行的概念。它的目的是設計一個複雜、可能有很多機關技巧的機器,但完成的卻是一個非常簡單的工作。比如去年Rube Goldberg’s Machine比賽的題目是設計一個能把一枚硬幣放到儲蓄罐裡的機器。另一個例子是self operating napkin,一個自動遞紙巾的機器。這個機器的工作非常簡單,但是流程卻非常複雜,比如客人把手放下,就要觸發各個機關,最後把紙巾遞到面前。

要理解一個複雜的system,最簡單的方式是看system的上遊和下遊,比如上述的機器,雖然流程很複雜,但觸發條件就是客人放下手,下遊就是把紙巾送嘴邊。

深度學習系統也是類似的思維。對於深度學習框架來說,系統上遊是各種神經網絡模型,系統的下遊是各類硬體,例如GPU、CPU等。理解了上下遊後,深度學習系統的邊界和目的就變得簡單而清晰了。深度學習框架就是使用最精簡的設計,靈活地支持各類神經網絡,並且不同硬體條件下,也能讓神經網絡高效執行

Rube Goldberg’s Machine和深度學習框架兩者的區別在於:Rube Goldberg’s Machine將模型複雜化,而深度學習框架的目的是用最精簡的方完成任務。The simple is the better。從這個角度上,我們可以把十幾年間湧現的大量深度學習框架劃分為三個時代,分別是:工具包時代數據流時代新時代

工具包時代是接觸神經網絡較早的時期,一般指2014年前,代表性的框架有Cuda-ConvNet2Caffe

這個時代的特點是計算機視覺領域的井噴。起源於07年的第一篇深度學習網絡論文在mnist數據集上得到了很好的效果,12年AlexNet誕生也鼓勵了深度學習的浪潮。在這個階段,卷積神經網絡是很多工具包關注的要點。Cuda-ConvNet2或Caffe定義模型的方式也因此是以寫configuration為主,和現在的框架有很大的區別。例如用Caffe寫AlexNet時,要定義 layer和它的name、type、input_param等參數。這樣設計的原因就是卷積神經網絡是深度學習系統上遊的主流,那個時代對這方面的研究也非常火熱。這些框架的interface是完全可以滿足需求的,因為當時的研究只是把不同的卷積層拼接,從而了解不同的神經網絡結構的效果。

工具包時代的系統設計非常簡單

在用戶層,它僅僅是模型配置文件,在硬體層,系統通過手寫GPU和CPU的神經網絡算子來解決硬體問題,例如Cuda能明顯實現神經網絡加速。

隨著網絡和硬體的發展,個人作為單獨的團隊來編寫神經網絡算子變得困難,所以大廠商,包括英偉達、英特爾,會開發專門針對神經網絡的算子庫,比如說CuDNN和MKLDNN,這些算子在現在的神經網絡系統框架  中依然常用。

這就是工具包時代的Cuda-ConvNet2和Caffe成功的原因。

工具包時代的框架也存在一些缺點。

首先是模型配置文件非常不靈活,很難表達複雜的模型例如RNN,雖然對於計算機視覺的網絡處理比較方便,但是對於變長的數據,例如文本的支持並不理想。

其次,它並不是非常靈活的程式語言,隨著深度學習網絡可學習參數的增多,它難以利用多機和多GPU訓練,因為配置文件很難去表達如何在多機和多GPU的環境下訓練,同時算子庫也無法解決運行時的問題。

最後,隨著模型複雜化,工具包對新出現的算子的支持也非常有限。 

在這個時代如何去解決框架的問題是值得思考的。

2014年在Denver,我、李沐和陳天奇三位ACM班的學生在OSDI開會。李沐實現的是 parameter server,他的專業領域在於多機分布式訓練。陳天奇的項目是CXXNet,包含了高效而豐富的算子庫。我的項目是Minerva核心思想是使用數據流的引擎,令多GPU的訓練加速。我們共同的思想是如何設計更好的深度學習系統,同時我們的項目和專業領域正好互補。於是我們的MXNet應運而生。

接下來的一段時間(2014-2018年),就是數據流時期框架的爆發。主流的框架有MXNet、TensorFlow、PyTorch、Chainer、Caffe2。

隨著深度學習的領域的不斷發展,NLP也進入井噴階段,這是這些框架出現的一大誘因。同時隨著數據的增加,對並行的需求也隨之上升,因此在數據流時期,很多模型如ResNet在ImageNet上訓練只需要一小時,通過在大量機器上並行,甚至在分鐘、秒的量級上可以完成。這都得益於數據流的概念和數據流天然具有的並行性。

數據流時代的模型和工具包時代的區別就是在用戶層和硬體層中間加了一層中間表達:數據流圖。系統分為前端和後端,前端只關注用戶使用方面的問題,而後端負責系統優化。

第二個區別是,前端也放棄模型配置文件了,Python成為了整個深度學習框架的一個標杆,通過Python提供張量運算的接口。隨著Pytorch為典型的用戶友好的框架的出現,NN模型庫,包括動態自動求導成為了整個深度學習框架的標配。後端也逐漸把專用的算子替代成更豐富的張量算子庫,同時增加了參數伺服器,使得整個系統能夠在多機多GPU的環境下訓練。

數據流時代其實就是新時代的開端。雖然通用深度學習框架的設計趨向於穩定,但是新的概念,新的模型不斷湧現,讓系統的設計也有新的一些挑戰。

第一個概念是可微分編程。這是近兩年提出的一個廣大的思路概念。在編寫模型時,程序本身是可微分編程的,很多系統設計的工作在往這個方向邁進。第二點是新領域的出現,例如圖神經網絡,圖神經網絡可以處理原本難以解決的數據,比如知識圖譜,製藥中分子的生物圖,新領域出現,也對系統產生了新的挑戰。第三個概念是AI-chip,神經網絡專用晶片。這是深度學習發展的大趨勢,也是系統無可避免的問題。

在2019年後,系統的趨勢有了明顯的變化。

首先是前端垂直化。開發過程中,不再以通用系統為目標,而是基於通用系統開發面向垂直領域的工具,包括計算機視覺,自然語言處理,圖領域等領域,DGL、AutoGluon、Captum等垂直領域的工具包。

其次,新概念也在慢慢滲透到系統設計中。對於Python,很多人提出Python並不是很好的選擇,也有很多的工作來優化對應的語言的編譯。對於數據流圖,它並不是一種非常強大的程式語言。而實現可微分編程需要更強大的中間表達比如Relay、MLIR。對於張量算子庫,AI chip的出現讓張量算子編譯器應運而生,其代表作有TVM,TC等工作。

深度學習框架雖然非常年輕,但已經經歷了多輪的演變,而每一輪的演變都是由於算法和硬體的新趨勢帶來的新的挑戰。

2019年之後,新挑戰不斷湧現,對於有志於投身這個領域的同學是非常好的時機。我們ACM班人在深度學習框架演變中也起到了非常重要的推動作用,很多的學長學姐在各個領域有非常好的成就,在研究過程中,如果能和同學或者學長產生一些思維的火花,不要猶豫,可能你們要做的工作也能在歷史中留下印記。

「乾貨學習,三連

相關焦點

  • 深度學習框架簡史:TF和PyTorch雙頭壟斷,未來十年迎來黃金時期
    過去十年,機器學習(尤其是深度學習)領域湧現了大量算法和應用。在這些深度學習算法和應用湧現的背後,是各種各樣的深度學習工具和框架。在此期間,深度學習框架空間有兩種趨勢。首先是大型模型訓練。隨著 BERT[3] 的誕生,以及它的近親 GPT-3[4] 的誕生,訓練大型模型的能力成為了深度學習框架的理想特性。這就要求深度學習框架能夠在數百臺(如果不是數千臺的話)設備的規模下有效地進行訓練。第二個趨勢是可用性。這一時期的深度學習框架都採用命令式編程風格,語義靈活,調試方便。
  • 2016深度學習統治人工智慧?深度學習十大框架
    深度學習,或者更寬泛地說——使用聯結主義架構的機器學習算法,可能會讓機器學習算法變成過去時,因為深度學習算法還遠遠不是飽和狀態。在未來的幾年裡,很有可能會出現一些訓練深度神經網絡的方法,讓它們能夠顯著提升性能。在優化方法、激活功能、聯結結構以及初始化步驟之間,還有一些突破出現的空間。這很可能讓很多機器學習算法接近出局的邊緣。
  • 深度學習——你需要了解的八大開源框架
    作為當下最熱門的話題,Google、Facebook、Microsoft等巨頭都圍繞深度學習重點投資了一系列新興項目,他們也一直在支持一些開源深度學習框架。目前研究人員正在使用的深度學習框架不盡相同,有 TensorFlow、Torch 、Caffe、Theano、Deeplearning4j等,這些深度學習框架被應用於計算機視覺、語音識別、自然語言處理與生物信息學等領域,並獲取了極好的效果。
  • 百度CTO王海峰:深度學習的核心東西是深度學習框架
    王海峰指出,深度學習已經廣泛應用,它的核心的東西是深度學習框架,可以說深度學習框架是智能時代的作業系統,它向下會對接晶片,晶片會針對深度學習框架裡面的這些運算來進行優化,向上是支撐各種應用,核心的部分有訓練框架,有了很多數據,跟應用相關的數據,然後進行訓練,訓練得到模型。然後預測框架會基於已經訓練好的模型,針對應用與應用相結合,最後實現真正的應用。
  • 11種深度學習框架影響力對比
    編者按:Jeff Hale根據網上招聘、調研報告、網絡搜索、論文、教程、GitHub等數據,評估了11種深度學習框架的影響力。 現在數據科學領域最熱門的方向仍舊是深度學習。相應地,深度學習框架也處於飛速變革之中。現在最流行的框架,除Theano外,5年前都不存在。
  • 深度學習10大框架對比分析
    為什麼要做這一個盤點呢?他寫道:「我常聽到人們談論深度學習——我該從哪裡開始呢?TensorFlow 是現在最流行的吧?我聽說 Caffe 很常用,但會不會太難了?在 BEEVA Labs,我們常常需要應對許多不同的深度學習庫,所以我希望能夠將我們的發現和感想分享出來,幫助那些剛剛進入深度學習這一美麗世界的人。
  • 深度學習框架太抽象?其實不外乎這五大核心組件
    為了更好地認識深度學習框架,也為了給一些想要自己親手搭建深度學習框架的朋友提供一些基礎性的指導,日前來自蘇黎世聯邦理工學院計算機科學系的碩士研究生Gokula Krishnan Santhanam在博客上撰文,概括了大部分深度學習框架都會包含的五大核心組件,為我們詳細剖析了深度學習框架一般性的內部組織結構。以下由雷鋒網編譯。
  • 微軟打造深度學習開源框架「自動翻譯機」:不同框架輕鬆切換
    【新智元導讀】微軟Cortana智能和機器學習小組的數據科學家最新在Giuhub開源項目,對各個深度學習框架進行了基準測試,提供了很多有參考價值的數據以及GPU優化代碼。眾多的深度學習框架,就像世界上各種不同的語言一樣,但是,不會「外語」並不可怕,他們希望構建一個深度學習框架的羅塞塔石碑,讓開發人員和研究者能在這個眾多框架並存的環境中,好好生存。
  • 創造屬於你自己的深度學習框架,就在這2天時間
    作為其中最主要的深度學習算法,將是一種效率和理念的改革。隨著深度學習的應用,我們可以發現,當數據量增加的時候,系統的性能在快速提升。而科技企業都想要加入這場陣營,對人才的需求也日益趨向競爭。而要想在這場競爭中獲勝,需要的已經不是簡單的能夠調用接口的應用型人才,更需要能夠掌握底層原理的核心人才。
  • 如果AI框架工具被禁用,中國深度學習框架能崛起麼?
    2021年,發展深度學習技術,需要十分重視的就是深度學習框架。 01深度學習框架受到高度重視 隨著技術的不斷前進和應用的大規模增長,產業開發者們面臨的挑戰,也是日漸地突出。而作為人工智慧實現跨越發展的重要突破口,深度學習框架引起了科技界、產業界的高度重視。 在整個人工智慧產業版圖中,算法框架是連通硬體、軟體、應用場景的「樞紐式」存在。
  • Keras vs PyTorch:誰是第一深度學習框架?
    是要將深度學習應用到業務中,還是用深度學習開展副業,抑或只是為了得到一些適合市場需求的技能?無論目標是什麼,選擇合適的深度學習框架是達到目標的第一步。  我們強烈建議你選擇 Keras 或 PyTorch。它們都是非常強大的工具,且不管是學習還是實驗都很有樂趣。我們是從教師和學生的角度考慮的。本文作者 Piotr 在企業舉辦過 Keras 和 PyTorch 研討會,Rafa?
  • 一種深度學習框架的介紹及總結
    目前TensorFlow、Keras等深度學習框架被廣泛使用,所以,我今天要介紹另一個框架 Deeplearning4J。它是一個基於純Java的深度學習框架,同時也是Java的第一大深度學習框架,目前在Github上已經有9k多顆星了。它運行在純Java環境,能夠很好的應用在生產環境中,且能夠較好的兼容TensorFlow、Keras等主流框架訓練的模型。
  • 深度學習框架比較,我該選擇哪一個?
    使用深度學習框架完成模型構建有如下兩個優勢: 節省編寫大量底層代碼的精力:屏蔽底層實現,用戶只需關注模型的邏輯結構。同時,深度學習工具簡化了計算,降低了深度學習入門門檻。
  • 大神擼個暗黑系統深度學習框架...
    要想在一眾競爭者之間脫穎而出,必須讓公司看到你對AI核心技術——深度學習框架乃至整個CV/NLP領域的理解,甚至是程序自主設計能力,後一點絕對是加分項,因為這意味著你有解決實際業務問題的能力。為了改變AI新人浮於表面、缺乏進階方向的學習現狀,開課吧邀請到高民權老師聯手打造了《用純python從零創造自己的深度學習框架 》這個訓練營,還原了深度學習框架的構成與演化過程,讓大家對深度學習不再一知半解,並能靈活設計並創造出自己所需的框架!
  • 大神擼了個暗黑系深度學習框架...
    深度學習神經網絡正步入成熟,而深度學習框架目前眾多,大都可以在圖像識別、手寫識別、視頻識別、語音識別、目標識別和自然語言處理等諸多領域大顯身手。深度學習框架平臺佔據人工智慧產業生態的核心地位,具有統領產業進步節奏、帶動終端場景與雲端服務協同發展的重要作用,處於承上啟下的關鍵地位,其意義媲美移動網際網路作業系統。隨著深度學習框架的不斷演進,以深度學習為代表的人工智慧將大放異彩。
  • 阿里巴巴深度學習框架X-Deep Learning,要開源了
    、推薦、搜索等高維稀疏數據場景,以填補TensorFlow、PyTorch等現有開源深度學習框架主要面向圖像、語音等低維稠密數據的不足。 阿里巴巴內部透露將開源內部深度學習框架 X-DeepLearning的計劃,這是業界首個面向廣告、推薦、搜索等高維稀疏數據場景的深度學習開源框架,可以與TensorFlow、PyTorch 和 MXNet 等現有框架形成互補。
  • 機器學習者必知的5種深度學習框架
    它通常包含具有許多節點的神經網絡,並且每個節點都有許多需要在學習過程中必須不斷更新的連接。換句話說,神經網絡的每一層都有成百上千個相同的人工神經元在執行相同的計算。因此,神經網絡的結構適用於GPU(圖形處理單元)可以高效執行的計算類型(GPU是專門為並行計算相同指令而設計的)。隨著深度學習和人工智慧在過去幾年的迅速發展,我們也看到了許多深度學習框架的引入。
  • 深度學習框架哪家強?國產框架OneFlow做了一份測評報告
    機器之心報導機器之心編輯部近日,國產深度學習框架 OneFlow 發布了人工智慧方向深度學習領域的 DLPerf 測評報告。數據顯示,OneFlow 在 4 機 32 卡下的 ResNet50-v1.5 和 BERT-base 兩個模型中,無論是 Float32 類型還是自動混合精度,在同樣的算法和硬體條件下,吞吐率及加速比均優於其他深度學習框架。
  • 16個GitHub值得收藏的深度學習框架
    16個GitHub值得收藏的深度學習框架 工程師3 發表於 2018-05-10 12:13:00 深度學習是一種基於對數據進行表證學習的機器學習方法,近些年不斷發展並廣受歡迎
  • 機器學習和深度學習的最佳框架大比拼
    如果把網撒得大些,可能還會覆蓋其他幾個流行的框架,包括Theano(一個10年之久的Python深度學習和機器學習框架),Keras(一個Theano和TensorFlow深度學習的前端),DeepLearning4j(Java和Scala在Hadoop和Spark之上的深度學習軟體)。如果你有興趣使用機器學習和神經網絡,你從來沒有像現在這樣多的選擇。