隨著深度學習關(guān)注度和勢頭上升,深度學習被越來越多的企業(yè)和組織的生產(chǎn)實踐結(jié)合起來。這時,無論是對于深度學習相關(guān)專業(yè)的初學者,還是已經(jīng)在企業(yè)和組織中從事工業(yè)場景應(yīng)用和研發(fā)的開發(fā)者來說,選擇一個適合自己,適合業(yè)務(wù)場景需求的深度學習框架顯得尤為重要。
對于不同學習階段和不同崗位的開發(fā)者來說,什么樣的深度學習框架才是適合自己的呢?為此,AI 前線邀請了來自BAT的深度學習框架專家解答這個疑問。
以下是選擇深度學習框架時常見的幾個問題:
目前,國內(nèi)外有哪些主流的深度學習框架?分別有什么優(yōu)缺點?
TensorFlow:谷歌大廠出品,社區(qū)資源豐富,用戶群體廣泛。如果你的業(yè)務(wù)是實現(xiàn)一個比較成熟的應(yīng)用場景,選擇 TensorFlow 是個不錯的選擇,畢竟大部分坑前人已經(jīng)踩過了。如果你還是一名初學者,想要去實現(xiàn)全新的算法,那要慎重選擇 TensorFlow,因其發(fā)展時間較久,代碼庫龐大,想要真正看懂它的代碼會是一個不小的挑戰(zhàn)。
PaddlePaddle:百度出品,跟 TF 類似,PaddlePaddle 也是在百度內(nèi)部實際應(yīng)用的工業(yè)框架。值得一提的是,PaddlePaddle 為大量工業(yè)級模型提供官方支持;大規(guī)模分布式訓練技術(shù)能力強,支持大規(guī)模稠密參數(shù)和稀疏參數(shù)場景的并行訓練;基于其中文文檔友好、簡單易上手的特點,社區(qū)活躍度不斷提高。本土開發(fā)者中文交流非常方便。
PaddlePaddle 已經(jīng)升級為全面的深度學習開發(fā)套件,除了核心框架,還開放了 VisualDL、PARL、AutoDL、EasyDL、AI Studio 等一整套的深度學習工具組件和服務(wù)平臺,更好地滿足不同層次的深度學習開發(fā)者的開發(fā)需求。18 年百度加大了生態(tài)投入,在工業(yè)制造、農(nóng)林領(lǐng)域有不少案例,對于想要落地應(yīng)用場景,特別是針對中文語言處理的場景和大規(guī)模推薦場景,PaddlePaddle 或許是個不錯的選擇。
PyTorch+Caffe2:臉書出品。PyTorch 前身是 Torch(一個基于 Lua 語言的深度學習庫)。PyTorch 靈活性相比 TensorFlow 大大增強,支持動態(tài)構(gòu)圖,開發(fā)者可以隨時改變神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)。PyTorch 今年因其易用性表現(xiàn)突出,越來越受到學術(shù)界的青睞。
如果你是一名初學者,想要去復(fù)現(xiàn)前沿的算法,推薦使用 PyTorch。如果你是工業(yè)場景開發(fā)者,最好先搜一搜是否已經(jīng)有使用 PyTorch 的成功落地案例。因為在運算效率、工業(yè)部署上,PyTorch 還不算成熟。Caffe2 為生產(chǎn)環(huán)境設(shè)計,提供在各種平臺(包括移動設(shè)備)的運行時。Caffe2 意在彌補 Pytorch 在生產(chǎn)環(huán)境的不足,目前還沒有看到太多開發(fā)者反饋 Caffe2 的工業(yè)表現(xiàn),需要更多時間驗證。
MxNet:已被亞馬遜 (Amazon) 選為 AWS 上的深度學習框架,支持動態(tài)圖計算。優(yōu)勢是高效小巧,更適合自定義需求高的公司和研究者。如果你的工作需要對框架進行修改時,改 MxNet 要比改 TF 高效多了。MXNet 的用戶相比其他框架并不算太多,有少量擁戴者。MXNet 在文檔質(zhì)量方便經(jīng)常被詬病,新手還需要多磨合一下。
Keras:是一個用于快速構(gòu)建深度學習原型的高層神經(jīng)網(wǎng)絡(luò)庫,Keras 由純 Python 編寫而成,并基于 Tensorflow、Theano 以及 CNTK 后端。Keras 隱藏了大部分的內(nèi)部運算,對于新手來說非常友好。如果想要快速入門,建議可以選擇 Keras。但真的想成為深度學習大拿,還是要手動從零開始寫一個神經(jīng)網(wǎng)絡(luò)的代碼,否則容易依賴于 Keras 的易使用性而忽略底層原理。
XDL:阿里出品。X-Deep Learning (XDL) 是針對特定工業(yè)級場景(比如廣告)深度學習問題的解決方案,而不是與其他框架并列的底層框架。實際上,XDL 采用橋接的方式支持使用 TensorFlow 和 MXNet 作為單節(jié)點的計算后端。對于已經(jīng)使用 TensorFlow、MXNet 的開發(fā)者來說,如果需要在大規(guī)模稀疏場景應(yīng)用可以選擇 XDL 試試, XDL 依賴于阿里提供特定的部署環(huán)境,對非阿里系用戶不是很人性化。
不同學習階段、不同崗位的開發(fā)者,面對不同的業(yè)務(wù)場景需求應(yīng)該選擇什么深度學習框架?選擇和衡量的標準是什么?
不同類型的用戶,選擇和衡量的標準會有一定差異。選擇框架通常要考慮易用性、性能、社區(qū)、平臺支持等問題。初學者應(yīng)該考慮容易上手的框架。偏研究性的開發(fā)者,一般選擇易用而且有領(lǐng)先的模型基線的框架。偏工業(yè)應(yīng)用的開發(fā)者可以考慮使用穩(wěn)定性高、性能好的框架。比較高階的用戶,往往需要同時掌握多個框架。
最新的開源算法可能會基于某個框架,掌握多個框架可以更快復(fù)現(xiàn)前沿成果。同時不同框架在不同模型上有性能差異,掌握多個框架也可以選擇在某個場景下最適合的框架。
在選擇深度學習框架時有哪些經(jīng)驗可以分享?需要考慮哪些因素?
開發(fā)者通常用深度學習框架組建網(wǎng)絡(luò),去解決實際企業(yè)級業(yè)務(wù)中的具體問題,比如:詞法分析、機器翻譯等。選擇框架時通常需要關(guān)注以下一些因素:
框架是否已經(jīng)官方支持了當前最好的算法,比如中文詞法分析任務(wù)。
框架是否高效。同樣的算法用不同框架實現(xiàn),訓練速度更快,意味著更少的線下資源,更快的迭代速度;預(yù)測速度更快,意味著實際部署時可以為企業(yè)節(jié)省大量的機器資源,也具有更高的響應(yīng)速度。
框架的接口是否容易使用。
掌握一個深度學習框架,開發(fā)者需要做哪些準備?
在開發(fā)者已經(jīng)學習 Python 程序開發(fā)和深度學習基礎(chǔ)知識的前提下,掌握一個深度學習框架,開發(fā)者需要了解框架的基本原理,學習并掌握框架的基本概念和用法。
通常可以先從官方文檔開始,通過大致瀏覽官方文檔對框架基本概念和用法有一個大致的了解。
另外可以結(jié)合官方提供的快速入門例子,在自己的機器上安裝并練習使用。
然后可以再從官方的模型庫里面挑選一些算法,進行學習參考。
結(jié)合自己具體任務(wù)組建網(wǎng)絡(luò),查看 API 接口文檔,解決實際任務(wù)。
深度學習框架能“包治百病”嗎?是否適用于所有應(yīng)用場景需求?
需要提醒大家的是,深度學習框架不能包至百病,深度學習框架能夠解決的是適合使用深度學習技術(shù)的應(yīng)用場景。
深度學習(DL)是機器學習(ML)的一個分支,也是當下最流行的機器學習方法,雖然近幾年在圖像、語音、自然語言處理等應(yīng)用方向,深度學習技術(shù)都取得了突破性的進展,但是我們依然不應(yīng)該神話深度學習,認為深度學習無所不能。
適合掌握深度學習的任務(wù)應(yīng)具備這樣一些特點:
具備大量樣本數(shù)據(jù)。如果樣本數(shù)據(jù)難以獲取或者數(shù)量太少,我們認為就不適合深度學習技術(shù)解決
樣本數(shù)據(jù)對場景的覆蓋度足夠完善。深度學習模型的效果完全依賴樣本數(shù)據(jù)表現(xiàn),如果出現(xiàn)樣本數(shù)據(jù)外的情況,模型的推廣性會變差
結(jié)果對可解釋性的要求不高。如果應(yīng)用場景不僅要機器能夠完成某項任務(wù),還需對完成過程有明確的可解釋性,這樣的場景就不那么適合深度學習。
中國的深度學習框架有哪些不同于歐美國家主流深度學習開發(fā)框架的特點和創(chuàng)新?
從深度學習框架的特點來講,中國和歐美的的區(qū)分未必是一個合適的分類方式。很多中國深度學習框架研發(fā)的主體是中國工程師,也是在中國公司成長起來的,自然對國內(nèi)的實際應(yīng)用特點把握得會更精準,而且在中文文檔、中文教程以及中文模型配套上是獨具特色的。
未來,框架發(fā)展會出現(xiàn)哪些趨勢?
首先,當前仍處于深度學習研究和應(yīng)用的持續(xù)火熱期,深度學習框架及平臺在研究界和工業(yè)界的需求仍持續(xù)增長。深度學習框架和平臺在產(chǎn)業(yè)界的市場占有還未進入穩(wěn)定期,當然未來一段時間應(yīng)該也不會出現(xiàn)完全一家獨大的壟斷局面。
一方面整體的市場需求是很大也很多樣化的,另一方面不同框架在特性及發(fā)力點上自然會有一些差異性的適配。隨著深度學習在各行各業(yè)的廣泛應(yīng)用,服務(wù)能力強的、更貼近用戶需求的框架會有更大的提升機會。
過去一段時間,動態(tài)圖的靈活性、易用性展現(xiàn)出對科研人員極大的吸引力,更多框架開始支持動態(tài)圖,但需要進一步解決動態(tài)圖下的性能優(yōu)化問題。因為在工業(yè)界,訓練效率和規(guī)?;冀K是最重要的。所以,各框架取長補短趨同性比較明顯,前端易用性、計算高效性、框架穩(wěn)定性成為持續(xù)優(yōu)化方向。當然,不同框架的先天基因的特性還是非常明顯的。
此外需要注意的是,AI 專有芯片也在快速發(fā)展,框架和底層芯片的軟硬結(jié)合一體化研發(fā)也日益引起關(guān)注。AI 應(yīng)用部署場景快速擴張,框架對各硬件平臺的快速部署和高效推理能力變得非常重要。整體而言,需要支持多硬件的高效計算。這也使得框架 內(nèi)部架構(gòu)上傾向于更好的抽象分層,保持整體邏輯的統(tǒng)一性和異構(gòu)硬件執(zhí)行的高效性。
另一方面,深度學習框架的內(nèi)涵也在延展。深度學習框架的出現(xiàn)本身就是為了深度學習研究、實驗和應(yīng)用的便利性,節(jié)省了開發(fā)者很大的編程代價。但對于深度學習技術(shù)而言,網(wǎng)絡(luò)設(shè)計其實也是非常重要的一環(huán),基礎(chǔ)的深度學習框架是無法解決這個問題的。所以當下 神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)的自動設(shè)計 AutoDL 技術(shù)就成為新的熱點,也和深度學習框架進行更緊密的結(jié)合。
從便利深度學習技術(shù)應(yīng)用來講,只靠開源框架還是不夠的,需要場景化組件、模塊、平臺和產(chǎn)品的組合打法,框架之上的平臺、配套組件構(gòu)成的深度學習全流程解決方案對實際應(yīng)用非常關(guān)鍵。若想深度學習框架在實際應(yīng)用中發(fā)揮更大作用,是需要 更全面的綜合服務(wù)配套建設(shè)的。
如何看待接下來的框架之爭?
隨著深度學習技術(shù)的普及,各家框架的成熟化,深度學習技術(shù)的門檻會越來越低。在研究場景中,好用、靈活易擴展是最重要的考量因素,從目前的趨勢來看,PyTorch 在易用性上有一定優(yōu)勢。PaddlePaddle 在實際生產(chǎn)場景中,框架的易用性、穩(wěn)定性、生態(tài)資源的豐富度將取代技術(shù)的領(lǐng)先性成為開發(fā)者更重要的考量因素。
未來,擁有完整生態(tài)資源、有實際應(yīng)用場景支撐的框架會爭奪到越來越多的企業(yè)開發(fā)者用戶。在國外,依賴于谷歌生態(tài)的 TensorFlow,依賴于 AWS 云生態(tài)的 MXNet,未來都有一定的機會。
想要形成自己的產(chǎn)品生態(tài),需要哪些必備條件?
想要形成自己的產(chǎn)品生態(tài),需要具備四大條件:
掌握能為最終用戶提供巨大收益的核心技術(shù)。如深度學習領(lǐng)域框架所涉及的異構(gòu)計算、并行訓練、多路通信、多端部署及核心算法等關(guān)鍵技術(shù)。廠商需要擁有深度學習核心技術(shù)并形成自己的特色,才具備了生態(tài)號召力。
核心產(chǎn)品或服務(wù)能夠規(guī)?;貞?yīng)用和落地。在生態(tài)拓展的過程中,廠商有能力通過平臺和資源沉淀足夠多的通用解決方案。
能為最終用戶提供全面的體驗。深度學習框架應(yīng)用門檻較高,真正在企業(yè)廣泛落地,還有很多的工作要做,比如結(jié)合企業(yè)需求的深度定制優(yōu)化、深度學習配套工具建設(shè)、細致的企業(yè)服務(wù)等等,這要求廠商能夠有效整合生態(tài)系統(tǒng)中的各個伙伴能力,為最終用戶提供更全面的產(chǎn)品體驗。
擁有持續(xù)創(chuàng)新的能力。廠商應(yīng)該有足夠的資金和動力讓核心技術(shù)和產(chǎn)品持續(xù)創(chuàng)新,使得生態(tài)系統(tǒng)的用戶相信核心業(yè)務(wù)能夠一直使他們受益。
-
機器學習
+關(guān)注
關(guān)注
66文章
8438瀏覽量
133066 -
深度學習
+關(guān)注
關(guān)注
73文章
5512瀏覽量
121524 -
pytorch
+關(guān)注
關(guān)注
2文章
808瀏覽量
13353
原文標題:BAT專家解讀:如何選出最合適的深度學習框架?
文章出處:【微信號:AI_era,微信公眾號:新智元】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論