摘要:完整版地址我們的想法是創建一個深度學習框架的羅塞塔石碑假設你很了解某個深度學習框架,你就可以幫助別人使用任何框架。我們的目標是創建深度學習框架的羅塞塔石碑,使數據科學家能夠在不同框架之間輕松運用專業知識。
repo 1.0 完整版 GitHub 地址:https://github.com/ilkarman/DeepLearningFrameworks
我們的想法是創建一個深度學習框架的羅塞塔石碑(Rosetta Stone):假設你很了解某個深度學習框架,你就可以幫助別人使用任何框架。你可能會遇到論文中代碼是另一個框架或整個流程都使用另一種語言的情況。相比在自己喜歡的框架中從頭開始編寫模型,使用「外來」語言會更容易。
感謝 CNTK、Pytorch、Chainer、Caffe2 和 Knet 團隊,以及來自開源社區的所有人在過去幾個月為該 repo 所做的貢獻。
我們的目標是:
1. 創建深度學習框架的羅塞塔石碑,使數據科學家能夠在不同框架之間輕松運用專業知識。
2. 使用的高級 API 優化 GPU 代碼。
3. 創建一個 GPU 對比的常用設置(可能是 CUDA 版本和精度)。
4. 創建一個跨語言對比的常用設置(Python、Julia、R)。
5. 驗證自己搭建框架的預期性能。
6. 實現不同開源社區之間的合作。
基準深度學習框架的結果
下面我們來看一種 CNN 模型的訓練時間和結果(預訓練的 ResNet50 模型執行特征提取),以及一種 RNN 模型的訓練時間。
訓練時間(s):CNN(VGG-style,32bit)在 CIFAR-10 上執行圖像識別任務
該模型的輸入是標準 CIFAR-10 數據集(包含 5 萬張訓練圖像和 1 萬張測試圖像),均勻地分成 10 個類別。將每張 32×32 圖像處理為形狀 (3, 32, 32) 的張量,像素強度從 0-255 重新調整至 0-1。
處理 1000 張圖像的平均時間(s):ResNet-50——特征提取
加載預訓練 ResNet-50 模型在末端 (7, 7) 平均池化之后裁斷,輸出 2048D 向量。其可插入 softmax 層或另一個分類器(如 boosted tree)來執行遷移學習。考慮到熱啟動,這種僅前向傳播至 avg_pool 層的操作有時間限制。注意:批量大小保持常量,但是增加 GPU 內存可帶來更好的性能提升(GPU 內存越多越好)。
訓練時間(s):RNN (GRU) 在 IMDB 數據集上執行情感分析任務
模型輸入為標準 IMDB 電影評論數據集(包含 25k 訓練評論和 25k 測試評論),均勻地分為兩類(積極/消極)。使用 https://github.com/keras-team/keras/blob/master/keras/datasets/imdb.py 中的方法進行處理,起始字符設置為 1,集外詞(OOV,本次訓練使用的詞匯表包括 3 萬單詞)設置為 2,這樣單詞索引從 3. Zero 開始,通過填充或截斷使每條評論固定為 150 詞。
*表示截至本文發布時尚未實現。歡迎社區補充。
經驗教訓
1. 使用自動調參模式:大部分框架使用 cuDNN 的 cudnnFindConvolutionForwardAlgorithm() 來運行窮舉搜索,優化在固定大小圖像上前向卷積所使用的算法。這通常是默認的設置,但是一些框架可能需要一個 flag,例如?
torch.backends.cudnn.benchmark=True。
2. 盡可能多地使用 cuDNN:常用的 RNN(如基礎 GRU/LSTM)通常可以調用 cuDNN 封裝器來加速,即用 cudnn_rnn.CudnnGRU() 代替 rnn.GRUCell()。缺點是稍后在 CPU 上運行推斷時難度可能會增加。
3. 匹配形狀:在 cuDNN 上運行時,為 CNN 匹配 NCHW 的原始 channel-ordering、為 RNN 匹配 TNC 可以削減浪費在重塑(reshape)操作上的時間,直接進行矩陣乘法。
4. 原始生成器:使用框架的原始生成器,增強和預處理(例如 shuffling)通過多線程進行異步處理,實現加速。
5. 對于推斷,確保指定的 flag 可以保存被計算的非必要梯度,以及 batch-norm 和 drop-out 等層得到合理使用。
當我們從頭開始創建該 repo 的時候,為了確保在不同框架之間使用的是相同的模型,并以最優化的方式運行,我們使用了很多技巧。過去幾個月里,這些框架的改版之快令人驚訝,框架的更新導致很多在 2017 年末學會的優化方法如今已然過時。
例如,以 TF 為后端的 Keras 擁有 channel-ordering 硬編碼作為 channels-last(對于 cuDNN 不是最優的),因此指定 channels-first 意味著它將在每個批次(batch)之后重塑到硬編碼值,從而極大降低訓練速度。現在以 TF 為后端的 keras 支持原始 channels-first ordering。之前,TensorFlow 可以通過指定一個 flag 來使用 Winograd 算法用于卷積運算,然而現在這種方法不再有用。你可以在repo的早期版本(https://github.com/ilkarman/DeepLearningFrameworks/tree/cb6792043a330a16f36a5310d3856f23f7a45662)中查看其中的最初學習階段部分。
通過在不同的框架中完成端到端解決方案,我們可以用多種方式對比框架。由于相同的模型架構和數據被用于每一個框架,因此得到的模型準確率在各個框架之間是非常相似的(實際上,這正是我們測試代碼以確保相同的模型在不同框架上運行的一種方法)。此外,該 notebook 的開發目的是為了使框架之間的對比更加容易,而模型加速則不是必要的。
當然,該項目的目的是使用速度和推斷時間等指標來對比不同的框架,而不是為了評估某個框架的整體性能,因為它忽略了一些重要的對比,例如:幫助和支持、提供預訓練模型、自定義層和架構、數據加載器、調試、支持的不同平臺、分布式訓練等。該 repo 只是為了展示如何在不同的框架上構建相同的網絡,并對這些特定的網絡評估性能。
深度學習框架的「旅行伴侶」
深度學習社區流行著很多種深度學習框架,該項目可以幫助 AI 開發者和數據科學家應用不同的深度學習框架。一個相關的工作是 Open Neural Network Exchange(ONNX),這是一個在框架間遷移深度學習模型的開源互通標準。當在一個框架中進行開發工作,但希望轉換到另一個框架中評估模型的時候,ONNX 很有用。類似地,MMdnn 是一組幫助用戶直接在不同框架之間轉換的工具(以及對模型架構進行可視化)。
深度學習框架的「旅行伴侶」工具如 ONNX 和 MMdnn 就像是自動化的機器翻譯系統。相比之下,我們今天發布的 repo 1.0 完整版更像是深度學習框架的羅塞塔石碑,在不同的框架上端到端地展示模型構建過程。
歡迎加入本站公開興趣群商業智能與數據分析群
興趣范圍包括各種讓數據產生價值的辦法,實際應用案例分享與討論,分析工具,ETL工具,數據倉庫,數據挖掘工具,報表系統等全方位知識
QQ群:81035754
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/4754.html
摘要:表示,的賈揚清對他的這一項目給予了很多幫助,賈揚清告訴他,的好幾個網絡,較大瓶頸都是,如果想要實現一流的性能,賈揚清建議較好使用異步,這樣會有很大的幫助。,和則是默認啟用這項功能。 微軟數據科學家Ilia Karmanov做了一個項目,使用高級API測試8種常用深度學習框架的性能(因為Keras有TF,CNTK和Theano,所以實際是10種)。Karmanov希望這個項目能夠幫助數據科學家...
摘要:是由華盛頓大學在讀博士陳天奇等人提出的深度學習自動代碼生成方法,去年月機器之心曾對其進行過簡要介紹。目前的堆棧支持多種深度學習框架以及主流以及專用深度學習加速器。 TVM 是由華盛頓大學在讀博士陳天奇等人提出的深度學習自動代碼生成方法,去年 8 月機器之心曾對其進行過簡要介紹。該技術能自動為大多數計算硬件生成可部署優化代碼,其性能可與當前最優的供應商提供的優化計算庫相比,且可以適應新型專用加...
摘要:研究人員稱,其提出的可以無監督地學習并遷移數據單元對之間的依賴關系和圖形表征,并在自然語言處理和計算機視覺任務中取得了很好的效果。表自然語言處理任務中的模型簡化測試。 近日,由卡耐基梅隆大學、紐約大學和 Facebook 的研究者楊植麟、Junbo Zhao 等人提交的論文將遷移學習向前推進了一步。研究人員稱,其提出的 GLoMo 可以無監督地學習并遷移數據單元對之間的依賴關系和圖形表征,并...
摘要:機器學習和深度學習的研究進展正深刻變革著人類的技術,本文列出了自年以來這兩個領域發表的最重要被引用次數最多的篇科學論文,以饗讀者。注意第篇論文去年才發表要了解機器學習和深度學習的進展,這些論文一定不能錯過。 機器學習和深度學習的研究進展正深刻變革著人類的技術,本文列出了自 2014 年以來這兩個領域發表的最重要(被引用次數最多)的 20 篇科學論文,以饗讀者。機器學習,尤其是其子領域深度學習...
閱讀 2335·2021-11-23 09:51
閱讀 1137·2021-11-22 13:52
閱讀 3610·2021-11-10 11:35
閱讀 1187·2021-10-25 09:47
閱讀 2994·2021-09-07 09:58
閱讀 1059·2019-08-30 15:54
閱讀 2817·2019-08-29 14:21
閱讀 3024·2019-08-29 12:20