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