CNN提速23.5倍!Facebook開源DL模塊帶給我們什麼?

摘要:日前,Facebook人工智能研究院(FAIR)宣佈開源了一組深度學習軟件庫,是針對Torch機器學習框架的插件,基於NVIDIA的GPU,大大提升了神經網絡的性能,可以用於計算機視覺和自然語言處理(NLP)等場景。


Geoffrey Hinton的努力,使得深度學習(Deep Learning,DL)成爲實現機器智能的核心技術。然而,深度學習的一些坑,如大型神經網絡的計算負載、訓練性能,並不那麼容易克服。現在,深度學習的愛好者可以通過Facebook的福利消除這一障礙:日前, Facebook人工智能研究院 (FAIR)宣佈開源了一組深度學習軟件庫,是針對Torch機器學習框架的插件,基於NVIDIA的GPU,大大提升了神經網絡的性能,可以用於計算機視覺和自然語言處理(NLP)等場景。

那麼,具體而言,Facebook開源深度學習軟件庫有哪些內容?它會是誰的菜?它能做什麼?我們應當如何利用它?

開源代碼&工具

  • Torch
  • iTorch
  • fbcunn
  • fbnn
  • fbcuda
  • fblualib
誰能受益

根據Facebook的說法,如果您想訓練用於圖像識別、自然語言處理或其他應用程序的大規模的深度學習系統(特別是卷積網絡),fbcunn會很有幫助。如果您已經是一個Torch用戶,效果更佳——我們知道,Torch作爲一個協助機器學習技術開發的開源環境,一直以來是很多人工智能項目的核心,不管是在學校研究或者是類似 Google、Twitter 和Intel這樣的公司,都採用這一框架。

開源之後,深度學習生態鏈上可以有更多的玩家。FAIR研究員、軟件工程師Soumith Chintala表示,開源的AI工具能夠幫助研究實驗室和新興創業公司免去了從零開始研究的複雜道路,把更多的精力和時間都投入到改善現有的算法中,同時開源的AI工具也將成爲Facebook和創業團隊之間的催化劑。

能做什麼

Facebook表示,其開源優化的深學習模塊,加快了基於Torch的深度學習項目的運行速度,允許我們在更短的時間訓練規模更大的神經網絡加快我們的研究項目。

開源的包括用於大型卷積網(ConvNets)的GPU優化模塊,以及那些在自然語言處理領域常用的網絡。Facebook的ConvNets模塊包括一個快速的基於FFT的卷積層,採用基於NVIDIA的cuFFT庫構建的自定義CUDA內核。

除此之外,還包括許多其他基於CUDA的模塊和容器(container)。

基於FFT的卷積層

本次發佈的最重要部分包括基於FFT的卷積層代碼,因爲在訓練ConvNets中捲曲佔用了大部分的計算時間。由於提高這些模型的訓練時間轉化爲更快的研發,Facebook已經花了相當大的工程努力提高GPU卷積層。這項工作成效顯着,達到目前公佈的最快代碼的23.5倍。

 

上面的熱力圖可視化地顯示了採用Facebook的ConvolutionFFT相對於採用NVIDIA的CuDNN完成一個訓練的相對速度,紅色代表Facebook慢,綠色代表Facebook更快,顏色增強代表加速的幅度。

對於小尺寸的內核(3×3),增速適中,最高速度比CuDNN快1.84倍。

 

對於較大尺寸的內核,從(5×5)開始,增速相當可觀。

 

 

更大尺寸的內核(13x13),最高速度爲比CuDNN快23.5倍。(更多的技術細節,請移步閱讀Facebook的Arxiv論文 。)

 

 

多GPU之上的並行化

從工程方面,Facebook一直努力實現在多GPU上並行訓練神經網絡模型的能力。Facebook致力於最小化並行的開銷,同時也使研究人員極易使用,通過數據並行和模型並行模塊(fbcunn的一部分)。當研究人員把它們的模型推到這些易於使用的容器,代碼自動調度模型在多個GPU上最大化加速。Facebook使用多GPU在ImageNet上訓練一個ConvNet的一個例子已經展示了這一點。

fbcunn是什麼

這個庫包含Facebook用於GPU的高度工程化深度學習模塊,以加快深度學習的速度。它插入到Torch7的框架之中,通過luarocks無縫安裝,並且與Torch的NN封裝完全兼容。

總體來說,Facebook發佈了用於Convnets和一般神經網絡的快速NN模塊:

  • 快速空間卷積模塊,使用FFT加速卷積。
  • 快速Temporal卷積,速度相比Torch的cunn實現快1.5倍至10倍。
  • nn.DataParallel和nn.ModelParallel容器。將您的模型插入,在多個GPU上加速效果立竿見影。
  • 採用FFT/ IFFT爲NN模塊。
  • 用於神經語言模塊(Neural Language Models)和文字嵌入的快速LookupTable。比在Torch/ NN下快很多。
  • Hierarchical SoftMax模塊,使得現在分類百萬類成爲實際可行的策略。
  • 特徵映射上的LP和Max Pooling (用於MaxOut)。
  • 更多的好東西。

示例:

  • 在Torch-7中使用多GPU訓練基於分類的imagenet(展示FFT卷積以及ModelParallel容器)

fbcunn如何使用

  • DataParallel和ModelParallel這兩個模塊超級簡單易用。這個unit-test同時作爲例子和測試。examples/imagenet下面還有ModelParallel的例子。

m = nn.DataParallel():add(nn.SpatialConvolution(...)):add(nn.ReLU())-- see, so simple<br>

  • 卷積模塊更加簡單易用。它們與NN的API完全兼容。

<p>CONV= nn.SpatialConvolutionCuFFT(...)-- fast spatial convolutions!</p><p>CONV= nn.TemporalConvolutionFB(...)-- fast temporal convolutions!</p>

  • LookupTable和Hierarchical SoftMax分別被命名爲nn.LookupTableGPU和nn.HSM,也是超級簡單易用。它們的使用,以及fbcunn的安裝步驟、API文檔等更多的細節,您都可以在這個鏈接的完整的文檔和規範中找到答案:http://facebook.github.io/fbcunn/fbcunn/。

編後語

極客們說,人工智能是世界的未來,深度學習算法是讓機器擁有智能的最佳途徑。我們看到,從的相冊處理到無人駕駛汽車,深度學習的模型已經在逐步應用。儘管目前的技術成果距離S.W.Hawking和Elon Musk所擔憂的“機器政變”還非常遙遠,但在硬件加速技術的支撐和開源社區的貢獻之下,深度學習算法的普及應用門檻確實大大降低,模式識別、NLP變得更加簡單,我們沒有理由不加以學習和利用。

因此,2015年,人工智能也將成爲CSDN的一大重點內容,我們致力於爲大家提供最新鮮、最實用的乾貨,服務於大家的工作和生活。人工智能最新動態,敬請留意CSDN 官網、CSDN人工智能社區、CSDN雲計算微博和CSDN大數據微信的更新。此外,如果您有好的內容、好的意見和建議可以提供,歡迎致郵:zhoujd at csdn dot net。

原文鏈接: FAIR open sources deep-learning modules for Torch(文/周建丁 審校/錢曙光)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章