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

2021-08-07 03:27:36 字數 4444 閱讀 9073

***

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

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

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

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

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

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

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

今天主要**的平台(或者軟體)包括:caffe, torch, mxnet, cntk, theano, tensorflow, keras。

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

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

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

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

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

這個問題可以涉及到現今深度學習平台的乙個方面,就是影象計算和自動化求導。

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

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

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

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

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

其中 keras 通過 theano, tensorflow 作為底層進行建模。

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

這裡我們要提一下現在主要的資料處理工具,比較全面的資料分析工具包括 r 及其相關生態,python 及其相關生態,小眾一點的還包括 julia 及其相關生態。

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

我們可以發現,上面和 python, r, 整合較為緊密,這裡 keras 生態(tensorflow, theano), cntk, mxnet, caffe 等占有大量優勢。

同時 caffe 具有大量影象處理包,對資料觀察也具有非常大的優勢。

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

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 是深度學習界最早的平台軟體,專注底層基本的運算。 

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

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

這裡我先介紹下深度學習的一些副產品,其中乙個比較重要的功能就是符號求導。符號求導英文是 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)

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

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

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

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

但是其實有些問題,在 linux 環境下,編譯 numpy 的時候將線性函式包換為 intel mlk 往往也可以得到類似的提高。

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

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

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

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

2023年,SEO從業者該如何應對百度更新?

做seo這個行業的人越來越多,競爭何止是激烈二詞可以來形容的,我們面臨的問題有很多,比如該怎麼提高自己的創新思維 如何去完善 如何整理資源等等問題都是我們做優化人員需要掌握和了解的。那程式設計客棧麼,優化公司的流程是什麼呢?這是所有企業或者是公司需要考慮的問題,隨著的更新和發展,我們優化人員需要提高...

雲計算從業者,如何選擇合適的供應商

在雲計算領域有很多模式 範疇可以用來滿足企業架構對雲計算的要求。一些可以解決特殊問題,比如 安全即服務或者測試即服務 一些提供了完整的平台,比如 平台即服務或者基礎設施即服務。它們都有自己的優缺點,都能解決不同的問題。但是,企業必須根據自己的結構來選擇合適的雲計算。所以,服務的範疇是 儲存 資料庫 ...

機器學習相關從業者如何兼顧理論與工程能力

理論與工程 首先,小夕說一下自己目前對理論與工程的理解吧,這也是小夕當前研究理論和熟練工程時主要的出發點。僅為個人思考,請勿當成真理 理論注重的是學科中各個知識點的大一統,將各種散亂的演算法 現象 技巧來歸結到一張大網中。這樣在新理論 新技術到來的時候,你可以很快的從這張大網中get到新理論 新技術...