AI 從業者該如何選擇深度學習開源框架丨雷鋒網公開課

2021-01-15 雷鋒網

編者按:本文內容來自微軟美國總部機器學習科學家彭河森博士在雷鋒網(公眾號:雷鋒網)硬創公開課的分享,並由彭河森博士親自整理成文。

正如程序語言一樣,深度學習開源框架同樣各有優劣和適用的場景,那麼 AI 從業者該如何有針對性地選擇這些平臺來玩轉深度學習?

本期公開課特邀了先後在谷歌、亞馬遜、微軟供職的機器學習科學家彭河森博士為大家講述《MXNet火了,AI從業者該如何選擇深度學習開源框架》。彭河森博士親眼見證並深入參與了這三家巨頭布局深度學習的過程。

嘉賓介紹

彭河森,埃默裡大學統計學博士。現擔任微軟美國總部的機器學習科學家、微軟必應廣告部應用資深研究員,當前主要研究方向是自然語言處理和機器學習在廣告和推薦系統中的應用。此外,彭河森博士曾是亞馬遜最年輕的機器學習研究員,之前還供職於谷歌計量經濟學部和中科院。

深度學習是一個非常熱門的領域,現在市面上也有很多非常優秀的平臺,相信大家在入行之初都在想,這麼多平臺應該怎麼選擇?

我先提兩點,可能是一般測評沒有考慮到的東西:

這兩點對於初學者和從業人員都非常重要,我在後面詳細講述。

首先要恭喜 MXNet 近日獲得了亞馬遜的背書,MXNet 平臺本身非常優秀,具有很多優良的性質:例如多節點模型訓練,目前是我知道最全面的多語言支持。此外,也有評測說 MXNet 性能方面可以高出同行平臺很多,我們將會在後面的討論中提到。現在進入正題,我們該如何選擇深度學習開源平臺,參考標準應該是什麼樣的?

一、深度學習開源平臺的 5 大參考標準

今天主要探討的平臺(或者軟體)包括:Caffe, Torch, MXNet, CNTK, Theano, TensorFlow, Keras。

如何選擇一個深度學習平臺?我總結出了下面的這些考量標準。因人而異,因項目而異。可能你是做圖像處理,也可能是自然語言處理,或是數量金融,根據你不同的需求,對平臺做出的選擇可能會不同。

標準1:與現有編程平臺、技能整合的難易程度

無論是學術研究還是工程開發,在上馬深度學習課題之前一般都已積累不少開發經驗和資源。可能你最喜歡的程式語言已經確立,或者你的數據已經以一定的形式儲存完畢,或者對模型的要求(如延遲等)也不一樣。標準1 考量的是深度學習平臺與現有資源整合的難易程度。這裡我們將回答下面的問題:

是否需要專門為此學習一種新語言?

是否能與當前已有的程式語言結合?

標準 2: 和相關機器學習、數據處理生態整合的緊密程度

我們做深度學習研究最後總離不開各種數據處理、可視化、統計推斷等軟體包。這裡我們要回答問題:

標準 3:通過此平臺做深度學習之外,還能做什麼?

上面我們提到的不少平臺是專門為深度學習研究和應用進行開發的,不少平臺對分布式計算、GPU 等構架都有強大的優化,能否用這些平臺/軟體做其他事情?

比如有些深度學習軟體是可以用來求解二次型優化;有些深度學習平臺很容易被擴展,被運用在強化學習的應用中。哪些平臺具備這樣的特點?

這個問題可以涉及到現今深度學習平臺的一個方面,就是圖像計算和自動化求導。

標準 4:對數據量、硬體的要求和支持

當然,深度學習在不同應用場景的數據量是不一樣的,這也就導致我們可能需要考慮分布式計算、多 GPU 計算的問題。例如,對計算機圖像處理研究的人員往往需要將圖像文件和計算任務分部到多臺計算機節點上進行執行。

當下每個深度學習平臺都在快速發展,每個平臺對分布式計算等場景的支持也在不斷演進。今天提到的部分內容可能在幾個月後就不再適用。

標準 5:深度學習平臺的成熟程度

成熟程度的考量是一個比較主觀的考量因素,我個人考量的因素包括:社區的活躍程度;是否容易和開發人員進行交流;當前應用的勢頭。

講了 5 個參考標準後,接下來我們用上面的這些標準對各個深度學習平臺進行評價:

二、深度學習平臺評價評判1:與現有編程平臺、技能整合的難易程度

標準1 考量的是深度學習平臺與現有資源整合的難易程度。這裡我們將回答下面的問題:是否需要專門為此學習一種新語言?是否能與當前已有的程式語言結合?

這一個問題的乾貨在下面這個表格。這裡我們按照每個深度學習平臺的底層語言和用戶語言進行總結,可以得到下表。

其中 Keras 通過 Theano, TensorFlow 作為底層進行建模。

我們可以看到這樣的趨勢:

深度學習底層語言多是 C++ / C 這樣可以達到高運行效率的語言。

操作語言往往會切近實際,我們大致可以斷定 Python 是未來深度學習的操作平臺語言,微軟在 CNTK 2.0 加入了對 Python 的支持。

當然,還有不少平臺可以通過腳本的方式配置網絡並且訓練模型。

從格局上來說,Python 作為深度學習建模的基本語言是可以確定的。如果你最喜歡程式語言是 Python,恭喜您,大多數平臺都可以和你的技術無縫銜接。如果是 Java 也不用擔心,不少平臺也具有 Java 支持,Deeplearning4J 還是一個原生的 Java 深度學習平臺。

標準 2: 和相關機器學習、數據處理生態整合的緊密程度

這裡我們要提一下現在主要的數據處理工具,比較全面的數據分析工具包括 R 及其相關生態,Python 及其相關生態,小眾一點的還包括 Julia 及其相關生態。

完成深度學習建模等任務之後,和生態的整合也尤為重要。

我們可以發現,上面和 Python, R, 整合較為緊密,這裡 Keras 生態(TensorFlow, Theano), CNTK, MXNet, Caffe 等佔有大量優勢。

同時 Caffe 具有大量圖像處理包,對數據觀察也具有非常大的優勢。

標準 3:通過此平臺做深度學習之外,還能做什麼?

下圖是本次公開課的核心:

其實深度學習平臺在創造和設計時的側重點有所不同,我們按照功能可以將深度學習平臺分為上面六個方面:

 CPU+GPU控制,通信:這一個最低的層次是深度學習計算的基本層面。

         ○     包含各種激發函數(activation function),例如 sigmoid, ReLU 等。

         ○     同時也包含求導模塊

眾多機器學習平臺在功能側重上是不一樣的,我將他們分成了四大類:

1.    第一類是以 Caffe, Torch, MXNet, CNTK 為主的深度學習功能性平臺。這類平臺提供了非常完備的基本模塊,可以讓開發人員快速創建深度神經網絡模型並且開始訓練,可以解決現今深度學習中的大多數問題。但是這些模塊很少將底層運算功能直接暴露給用戶。

2.    第二類是以 Keras 為主的深度學習抽象化平臺。Keras 本身並不具有底層運算協調的能力,Keras 依託於 TensorFlow 或者 Theano 進行底層運算,而 Keras 自身提供神經網絡模塊抽象化和訓練中的流程優化。可以讓用戶享受快速建模的同時,具有很方便的二次開發能力,加入自身喜歡的模塊。

3.    第三類是 TensorFlow。TensorFlow 吸取了已有平臺的長處,既能讓用戶觸碰底層數據,又具有現成的神經網絡模塊,可以讓用戶非常快速的實現建模。TensorFlow 是非常優秀的跨界平臺。

4.    第四類是 Theano, Theano 是深度學習界最早的平臺軟體,專注底層基本的運算。 

所以對平臺選擇可以對照上圖按照自己的需求選用:

如果任務目標非常確定,只需要短平快出結果,那麼第 1 類平臺會適合你。

如果您需要進行一些底層開發,又不想失去現有模塊的方便,那麼第 2、3 類平臺會適合你。

如果你有統計、計算數學等背景,想利用已有工具進行一些計算性開發,那麼第 3, 4 類會適合你。

這裡我介紹下深度學習的一些副產品,其中一個比較重要的功能就是符號求導。

圖計算和符號求導:深度學習對開源社區的巨大貢獻

大家可能會有疑問:我能訓練出來深度學習模型就蠻好的了,為什麼需要接觸底層呢?

這裡我先介紹下深度學習的一些副產品,其中一個比較重要的功能就是符號求導。符號求導英文是 Symbolic Differentiation,現在有很多有關的文獻和教程可以使用。

符號求導是什麼意思?

以前我們做機器學習等研究,如果要求導往往需要手動把目標函數的導數求出來。最近一些深度學習工具,如 Theano, 推出了自動化符號求導功能,這大大減少了開發人員的工作量。

當然,商業軟體如 MatLab, Mathematica 在多年前就已具有符號計算的功能,但鑑於其商業軟體的限制,符號計算並沒有在機器學習應用中被大量採用。

深度學習由於其網絡的複雜性,必須採用符號求導的方法才能解決目標函數過於複雜的問題。另外一些非深度學習問題,例如:二次型優化等問題,也都可以用這些深度學習工具來求解了。

更為優秀的是,Theano 符號求導結果可以直接通過 C程序編譯,成為底層語言,高效運行。

這裡我們給一個 Theano 的例子:

>>> import numpy
>>> import theano
>>> import theano.tensor as T
>>> from theano import pp
>>> x = T.dscalar('x')
>>> y = x ** 2
>>> gy = T.grad(y, x)
>>> f = theano.function([x], gy)
>>> f(4)

8

上面我們通過符號求導的方法,很容易的求出 y 關於 x 的導數在 4 這個點的數值。

標準 4:對數據量、硬體的要求和支持

對於多 GPU 支持和多伺服器支持,我們上面提到的所有平臺都聲稱自己能夠完成任務。同時也有大量文獻說某個平臺的效果更為優秀。我們這裡把具體平臺的選擇留給在座各位,提供下面這些信息:

首先想想你想要幹什麼。現在深度學習應用中,需要運用到多伺服器訓練模型的場景往往只有圖像處理一個,如果是自然語言處理,其工作往往可以在一臺配置優秀的伺服器上面完成。如果數據量大,往往可以通過 hadoop 等工具進行數據預處理,將其縮小到單機可以處理的範圍內。

本人是比較傳統的人,從小就開始自己折騰各種科學計算軟體的編譯。現在主流的文獻看到的結果是,單機使用 GPU 能比 CPU 效率提高數十倍左右。

但是其實有些問題,在 Linux 環境下,編譯 Numpy 的時候將線性函數包換為 Intel MLK 往往也可以得到類似的提高。

當然現在很多評測,往往在不同硬體環境、網絡配置情況下,都會得到不一樣的結果。

就算在亞馬遜雲平臺上面進行測試,也可能因為網絡環境、配置等原因,造成完全不同的結果。所以對於各種測評,基於我的經驗,給的建議是:take it with a grain of salt,自己要留個心眼。前面我們提到的主要工具平臺,現在都對多 GPU、多節點模型訓練有不同程度的支持,而且現在也都在快速的發展中,我們建議聽眾自己按照需求進行鑑別。

標準 5:深度學習平臺的成熟程度

對於成熟程度的評判往往會比較主觀,結論大多具有爭議。我在這裡也只列出數據,具體如何選擇,大家自己判斷。

這裡我們通過 Github 上面幾個比較受歡迎的數量來判斷平臺的活躍程度。這些數據獲取於今天下午(2016-11-25)。我們用黑體標出了每個因子排名前三的平臺:

第一個因子是貢獻者數量,貢獻者這裡定義非常寬泛,在 Github issues 裡面提過問題的都被算作是 Contributor,但是還是能作為一個平臺受歡迎程度的度量。我們可以看到 Keras, Theano, TensorFlow 三個以 Python 為原生平臺的深度學習平臺是貢獻者最多的平臺。

第二個因子是 Pull Request 的數量,Pull Request 衡量的是一個平臺的開發活躍程度。我們可以看到 Caffe 的 Pull Request 最高,這可能得益於它在圖像領域得天獨厚的優勢,另外 Keras 和 Theano 也再次登榜。

 

另外,這些平臺在應用場景上有側重:

自然語言處理,當然要首推 CNTK,微軟MSR(A) 多年對自然語言處理的貢獻非常巨大,CNTK 的不少開發者也是分布式計算牛人,其中所運用的方法非常獨到。

當然,對於非常廣義的應用、學習,Keras/TensorFlow/Theano 生態可能是您最好的選擇。

對於計算機圖像處理,Caffe 可能是你的不二選擇。

 關於深度學習平臺的未來:

微軟在對 CNTK 很有決心,Python API 加的好,大家可以多多關注。

有觀點認為深度學習模型是戰略資產,應該用國產軟體,防止壟斷。我認為這樣的問題不用擔心,首先 TensorFlow 等軟體是開源的,可以通過代碼審查的方法進行質量把關。另外訓練的模型可以保存成為 HDF5 格式,跨平臺分享,所以成為谷歌壟斷的概率非常小。

很有可能在未來的某一天,大家訓練出來一些非常厲害的卷積層(convolution layer),基本上能非常優秀地解決所有計算機圖像相關問題,這個時候我們只需要調用這些卷積層即可,不需要大規模卷積層訓練。另外這些卷積層可能會硬體化,成為我們手機晶片的一個小模塊,這樣我們的照片拍好的時候,就已經完成了卷積操作。

雷鋒網原創文章,未經授權禁止轉載。詳情見轉載須知。

相關焦點

  • 吳博:目標檢測集成框架在醫學圖像 AI 輔助分析中的應用 | AI 研習...
    醫學圖像分析中目標檢測任務的普遍性,使得開發目標檢測集成框架顯得必要。近日,在雷鋒網 AI 研習社公開課上,深圳市宜遠智能科技有限公司負責人吳博剖析了目標檢測已有的框架,重點分享如何對目標檢測框架進行改造,以便在醫學圖像分析中產生更好的效果。公開課回放視頻網址:http://www.mooc.ai/open/course/559?
  • PyTorch版《動手學深度學習》開源了,最美DL書遇上最贊DL框架
    機器之心報導項目作者:ShusenTang參與:思想要入門最前沿的深度學習,想要玩最常見的深度學習框架?那就用 PyTorch 版的《動手學深度學習》吧,零基礎也能入門 DL。項目地址:https://github.com/ShusenTang/Dive-into-DL-PyTorch近年來,不論是計算機專業的學生,還是已在科技網際網路行業從業多年的技術人員和其他從業者,人們對深度學習的興趣從未如此高漲。但是,由於語言等因素,中文版本的優秀深度學習教材也是鳳毛麟角。
  • 如何自行搭建一個威脅感知大腦 SIEM?| 雷鋒網公開課
    在網絡安全的原始森林裡,SIEM就扮演這樣一個威脅感知大腦的角色。如何在合理成本下打造一個最為強大、合適的 SIEM 系統,是許多安全人員頭疼的問題。雷鋒網有幸邀請到了擁有十年安全產品經驗的百度安全專家兜哥,為大家講解如何使用開源軟體搭建企業的SIEM系統。
  • 2018 公開課盤點企業篇:十家企業帶你看 AI 的實際應用成果及人才...
    黃李超畢業於帝國理工碩士,曾於 2014 年加入百度深度學習研究院;並於 2015 年作為初創人員加入地平線,現研究方向包括深度學習系統研發,以及計算機視覺中物體檢測,語義分割等方向。公開課上,黃李超不僅介紹了 AI 晶片的背景以及怎麼從算法角度去設計適合嵌入式平臺高效的神經網絡模型,還講解了高性價比的神經網絡在計算機視覺領域的應用。
  • 深度學習框架比較,我該選擇哪一個?
    省去了部署和適配環境的煩惱:具備靈活的移植性,可將代碼部署到CPU/GPU/移動端上,選擇具有分布式性能的深度學習工具會使模型訓練更高效。 因此,在開始深度學習項目之前,選擇一個合適的框架是非常重要的。
  • 機器人程序設計之如何正確入門ROS | 雷鋒網公開課
    然而隨著ROS近年來火熱,在教學中也發現很多新夥伴對ROS的認識存在一些誤區,為了加快小夥伴們的學習速度,雷鋒網(公眾號:雷鋒網)本期公開課雷鋒網邀請Top和大家分享一點自己學習和使用的經驗和心得。雷鋒網本期公開課面向想入手ROS卻又不知從何下手的小夥伴,為大家梳理好學習思路。
  • 2020年成國內深度學習框架開源元年 曠視科技開源天元加速AI落地與...
    人工智慧時代,開源作為算法創新與迭代的重要驅動力,在深度學習領域發揮著至關重要的作用。全球諮詢機構IDC《中國深度學習平臺市場份額調研》指出,在AI技術使用方面,接受調研的企業和開發者中,86.2%選擇使用開源的深度學習框架。
  • 如何在集群中高效地部署和使用 AI 晶片? | 分享總結
    近期,在雷鋒網(公眾號:雷鋒網) AI 研習社線上公開課上,Thinker (AI 晶片) 團隊深度學習平臺負責人周鵬程分享了目前主流的分布式異構計算特性,區別和應用,並且介紹了如何讓當前流行的大數據分析引擎(如:Spark)從 AI 晶片的強大計算能力中獲益。
  • 迎來PyTorch,告別 Theano,2017 深度學習框架發展大盤點
    深度學習是機器學習中一種基於對數據進行表徵學習的方法,作為當下最熱門的話題,谷歌、Facebook、微軟等巨頭紛紛圍繞深度學習做了一系列研究,一直在支持開源深度學習框架的建設。,力圖促進開放的開發生態CNTK,Keras,MXNet 均迎來重大更新微軟攜手亞馬遜推出 Gluon 深度學習庫,英特爾推出增強學習框架 Coach針對移動終端,Caffe2 和 TensorFlow Lite 先後開源接下來,雷鋒網 AI 科技評論會盤點上述機器學習框架之間的重大發展和改變
  • Google 開源 AdaNet:快速靈活的輕量級 AutoML 框架
    雷鋒網 AI 科技評論編者按:近期,Google 開源了輕量級 AutoML 框架—— AdaNet,該框架基於 TensorFlow,只需要少量的專家幹預便能自動學習高質量模型,在提供學習保證(learning guarantee)的同時也能保持快速、靈活。
  • 深度學習新星:GAN的基本原理、應用和走向 | 雷鋒網公開課
    機器學習與視覺實驗室】負責人馮佳時博士在雷鋒網(公眾號:雷鋒網)【硬創公開課】的分享。如果讀者想獲得關於本次公開課的PPT,可前往雷鋒網旗下微信公眾號【AI科技評論】,關注後回復「馮佳時PPT」獲得下載地址。近年來,基於數據而習得「特徵」的深度學習技術受到狂熱追捧,而其中GAN模型訓練方法更加具有激進意味:它生成數據本身。
  • 從星際2深度學習環境到神經機器翻譯,上手機器學習這些開源項目必...
    算法:如何處理和分析數據機器學習算法可利用數據執行特定的任務,最常見的機器學習算法有如下幾種:1.監督學習。監督學習使用以及標註過的和結構化的數據,通過制定一組輸入數據集合所需的輸出,機器可以學習如何識別目標並且映射到其他的學習任務上。
  • 開發者必備:基於Linux生態的十大AI開源框架盤點
    Deeplearning4j團隊在官網表示,他們希望通過一些深度學習算法的開發,將商業帶入智能化數據的時代。也正是為了實現這一理想,惠及更多的用戶,因此選擇了移植性更好的Java環境來實現這些算法。目前,Deeplearning4j的這些算法已經在谷歌、Facebook和微軟等平臺得到了廣泛應用。
  • 十行代碼就能搞定深度學習?飛槳框架高層API,輕鬆玩轉AI
    機器之心發布機器之心編輯部嚮往深度學習技術,可是深度學習框架太難學怎麼辦?百度傾心打造飛槳框架高層 API,零基礎也能輕鬆上手深度學習,一起來看看吧?為了簡化深度學習的學習過程、降低深度學習的開發難度,百度飛槳框架歷經近一年的打磨,不斷地優化深度學習 API,並針對開發者的使用場景進行封裝,在飛槳框架的最新版本中,推出了高低融合、科學統一的飛槳全新 API 體系。飛槳框架將 API 分為兩種,基礎 API 和高層 API。
  • Video++張奕:人工智慧在消費級視頻場景中的應用丨雷鋒網公開課(附...
    本期硬創公開課,雷鋒網邀請到了Video++人工智慧事業部研發Team Leader張奕為大家講解人工智慧在消費級視頻場景中的應用。嘉賓簡介 大家好,我是來自Video++團隊的張奕。三、如何構建基於深度學習的消費級視頻分析系統
  • TensorFlow和Caffe、MXNet、Keras等其他深度學習框架的對比
    在下周二(2月28日)雷鋒網硬創公開課欄目將會推出黃文堅老師的公開課《深度學習之經典卷積神經網絡的技術淺析》(點擊了解詳情),歡迎大家報名!Google 近日發布了 TensorFlow 1.0 候選版,這第一個穩定版將是深度學習框架發展中的裡程碑的一步。
  • AI 影響因子 8 月份回顧:騰訊 AI Lab 再佔榜首
    」是雷鋒網學術頻道 AI 科技評論旗下資料庫項目,旨在呈現國內企業研究院學術&開發實力,為高校學生及從業者提供在會議/期刊論文、數據集比賽及開發項目三大領域的橫向對比參考。,匯聚更多的 AI 科學家和架構師,進行深度學習框架 PaddlePaddle 的研發和推廣。
  • 香港中文大學陳愷:物體檢測算法的近期發展及開源框架介紹 | 大...
    雷鋒網 AI 科技評論按:物體檢測是計算機視覺的基礎任務之一。香港中文大學多媒體實驗室博士生陳愷在 AI 研習社的公開課上,為大家總結了深度學習背景下物體檢測算法的發展,分享 COCO 比賽冠軍團隊所使用的算法,並介紹由港中大多媒體實驗室開源的物體檢測算法框架 mmdetection。
  • 騰訊優圖開源深度學習推理框架TNN 助力AI開發降本增效
    騰訊優圖開源深度學習推理框架TNN 助力AI開發降本增效 2020-06-10 16:58:07 來源:中國新聞網 作者:於曉 責任編輯:
  • 北郵張慶恆:如何基於 rasa 搭建一個中文對話系統 (有源碼視頻)|...
    雷鋒網(公眾號:雷鋒網)AI研習社按:對話系統是自然語言處理的一個熱門話題,而自然語言理解則是對話系統的關鍵組成部分,現有的很多自然語言理解工具往往以服務的方式獲取(Google 的 API.ai, Facebook 的 Wit.ai 等),使用這些服務往往需要向服務提供商提供自己的數據,並且根據自己業務調試模型很不方便。