非死book開源DL模塊帶給我們什么
原文 http://www.chinacloud.cn/show.aspx?id=19136&cid=11
Geoffrey Hinton的努力,使得深度學習(Deep Learning,DL)成為實現機器智能的核心技術。然而,深度學習的一些坑,如大型神經網絡的計算負載、訓練性能,并不那么容易克服。現在,深度學習 的愛好者可以通過非死book的福利消除這一障礙:日前,非死book人工智能研究院(FAIR)宣布開源了一組深度學習軟件庫,是針對 Torch機器學習框架的插件,基于NVIDIA的GPU,大大提升了神經網絡的性能,可以用于計算機視覺和自然語言處理(NLP)等場景。
那么,具體而言,非死book開源深度學習軟件庫有哪些內容?它會是誰的菜?它能做什么?我們應當如何利用它?
開源代碼&工具
Torch
iTorch
fbcunn
fbnn
fbcuda
fblualib
誰能受益
根據非死book的說法,如果您想訓練用于圖像識別、自然語言處理或其他應用程序的大規模的深度學習系統(特別是卷積網絡),fbcunn會 很有幫助。如果您已經是一個Torch用戶,效果更佳——我們知道,Torch作為一個協助機器學習技術開發的開源環境,一直以來是很多人工智能項目的核 心,不管是在學校研究或者是類似 Google、推ter 和Intel這樣的公司,都采用這一框架。
開源之后,深度學習生態鏈上可以有更多的玩家。FAIR研究員、軟件工程師Soumith Chintala表示,開源的AI工具能夠幫助研究實驗室和新興創業公司免去了從零開始研究的復雜道路,把更多的精力和時間都投入到改善現有的算法中,同 時開源的AI工具也將成為非死book和創業團隊之間的催化劑。
能做什么
非死book表示,其開源優化的深學習模塊,加快了基于Torch的深度學習項目的運行速度,允許我們在更短的時間訓練規模更大的神經網絡加快我們的研究項目。
開源的包括用于大型卷積網(ConvNets)的GPU優化模塊,以及那些在自然語言處理領域常用的網絡。非死book的ConvNets模塊包括一個快速的基于FFT的卷積層,采用基于NVIDIA的cuFFT庫構建的自定義CUDA內核。
除此之外,還包括許多其他基于CUDA的模塊和容器(container)。
基于FFT的卷積層
本次發布的最重要部分包括基于FFT的卷積層代碼,因為在訓練ConvNets中卷曲占用了大部分的計算時間。由于提高這些模型的訓練時間轉化為 更快的研發,非死book已經花了相當大的工程努力提高GPU卷積層。這項工作成效顯著,達到目前公布的最快代碼的23.5倍。

上面的熱力圖可視化地顯示了采用非死book的ConvolutionFFT相對于采用NVIDIA的CuDNN完成一個訓練的相對速度,紅色代表非死book慢,綠色代表非死book更快,顏色增強代表加速的幅度。
對于小尺寸的內核(3×3),增速適中,最高速度比CuDNN快1.84倍。

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


更大尺寸的內核(13x13),最高速度為比CuDNN快23.5倍。(更多的技術細節,請您閱讀非死book的Arxiv論文。)


多GPU之上的并行化
從工程方面,非死book一直努力實現在多GPU上并行訓練神經網絡模型的能力。非死book致力于最小化并行的開銷,同時也使研究人員 極易使用,通過數據并行和模型并行模塊(fbcunn的一部分)。當研究人員把它們的模型推到這些易于使用的容器,代碼自動調度模型在多個GPU上最大化 加速。非死book使用多GPU在Imagenet上訓練一個ConvNet的一個例子已經展示了這一點。
fbcunn是什么
這個庫包含非死book用于GPU的高度工程化深度學習模塊,以加快深度學習的速度。它插入到Torch7的框架之中,通過luarocks無縫安裝,并且與Torch的NN封裝完全兼容。
總體來說,非死book發布了用于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
卷積模塊更加簡單易用。它們與NN的API完全兼容。
CONV= nn.SpatialConvolutionCuFFT(...)-- fast spatial convolutions!
CONV= nn.TemporalConvolutionFB(...)-- fast temporal convolutions!
LookupTable和Hierarchical SoftMax分別被命名為nn.LookupTableGPU和nn.HSM,也是超級簡單易用。它們的使用,以及fbcunn的安裝步驟、API文檔 等更多的細節,您都可以在這個鏈接的完整的文檔和規范中找到答案:http://非死book.github.io/fbcunn/fbcunn/。
編后語
極客們說,人工智能是世界的未來,深度學習算法是讓機器擁有智能的最佳途徑。我們看到,從的相冊處理到無人駕駛汽車,深度學習的模型已經在逐步應 用。盡管目前的技術成果距離S.W.Hawking和Elon Musk所擔憂的“機器政變”還非常遙遠,但在硬件加速技術的支撐和開源社區的貢獻之下,深度學習算法的普及應用門檻確實大大降低,模式識別、NLP變得 更加簡單,我們沒有理由不加以學習和利用。