0
本文作者: 恒亮 | 2017-01-17 16:46 |
雷鋒網(wǎng)獲悉。近日,英特爾開(kāi)源了基于 Apache Spark 框架的分布式深度學(xué)習(xí)庫(kù) BigDL。通過(guò)使用BigDL,用戶可以將他們的深度學(xué)習(xí)應(yīng)用程序作為標(biāo)準(zhǔn)的 Spark 程序發(fā)布(即將基于BigDL的深度學(xué)習(xí)代碼直接嵌入已有的Spark程序中),同時(shí),BigDL還簡(jiǎn)化了基于Hadoop框架的數(shù)據(jù)加載過(guò)程。
據(jù)團(tuán)隊(duì)在GitHub平臺(tái)上的介紹,BigDL具有如下三大特點(diǎn):
1. 豐富的深度學(xué)習(xí)支持。
BigDL的源代碼基于Scala語(yǔ)言實(shí)現(xiàn),同時(shí)從Torch框架中汲取了諸多先進(jìn)的理念。比如像Torch一樣,BigDL也為用戶實(shí)現(xiàn)了一個(gè)Tensor類,該類基于英特爾MKL庫(kù)實(shí)現(xiàn),可以進(jìn)行各種常見(jiàn)的高階數(shù)學(xué)運(yùn)算。另外,受到 Torch 框架下的神經(jīng)網(wǎng)絡(luò)包(這里指 nn 包,neural network package) 的啟發(fā),BigDL還提出了Module類的概念,同時(shí)還模仿Torch實(shí)現(xiàn)了Table類和Criterion類。
雷鋒網(wǎng)注:這里MKL庫(kù)的全稱是“Math Kernel Library”,即英特爾的數(shù)學(xué)核心函數(shù)庫(kù),其中包含了諸多常規(guī)數(shù)學(xué)計(jì)算的最優(yōu)實(shí)現(xiàn),包括快速傅里葉變換和矩陣乘法等,這些計(jì)算在深度學(xué)習(xí)領(lǐng)域的模型訓(xùn)練中有著非常廣泛的應(yīng)用。
2. 極高的性能表現(xiàn)。
BigDL基于一種同步小批量的隨機(jī)梯度下降法(Stochastic Gradient Descent,SGD)對(duì)模型進(jìn)行訓(xùn)練,該方法的能夠支持單個(gè) Spark 任務(wù)的跨平臺(tái)運(yùn)行,每個(gè)平臺(tái)的執(zhí)行器(executor)都可以執(zhí)行一個(gè)多線程引擎并處理其中一小部分的批量數(shù)據(jù)。
正式由于引入了英特爾MKL和多線程,使得BigDL庫(kù)在英特爾 Xeon 服務(wù)器上的表現(xiàn)要優(yōu)于Caffe、Torch 或 TensorFlow 等其他的開(kāi)源框架,甚至達(dá)到了主流GPU的運(yùn)算速度。
3. 強(qiáng)大的擴(kuò)展能力。
BigDL 可以通過(guò)利用 Apache Spark 框架、同步的隨機(jī)梯度下降算法,和 Spark 框架下的 all-reduce 通信進(jìn)行有效的擴(kuò)展,以“大數(shù)據(jù)的規(guī)?!眻?zhí)行數(shù)據(jù)分析任務(wù)。外媒報(bào)道稱,BigDL 可一次支持幾十個(gè) Xeon 服務(wù)器的擴(kuò)展。
根據(jù)上述特點(diǎn),團(tuán)隊(duì)在GitHub平臺(tái)上給出了如下三點(diǎn)BigDL最適合的應(yīng)用場(chǎng)景:
1. 直接在Hadoop/Spark框架下進(jìn)行大數(shù)據(jù)分析(即將數(shù)據(jù)存儲(chǔ)在HDFS、HBase、Hive等數(shù)據(jù)庫(kù)上);
2. 在Spark程序中/工作流中加入深度學(xué)習(xí)功能;
3. 利用現(xiàn)有的 Hadoop/Spark 集群來(lái)運(yùn)行深度學(xué)習(xí)程序,然后將代碼與其他的應(yīng)用場(chǎng)景進(jìn)行動(dòng)態(tài)共享,例如ETL(Extract、Transform、Load,即通常所說(shuō)的數(shù)據(jù)抽取)、數(shù)據(jù)倉(cāng)庫(kù)(data warehouse)、功能引擎、經(jīng)典機(jī)器學(xué)習(xí)、圖表分析等。
值得一提的是,BigDL提供了一個(gè)基于亞馬遜AWS EC2服務(wù)器實(shí)現(xiàn)的完整鏡像,并附帶諸多可以直接運(yùn)行的用例:包括使用卷積神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)的文本分類用例、圖像分類用例,以及將 Torch/Caffe 中經(jīng)過(guò)預(yù)訓(xùn)練的模型加載到 Spark 中進(jìn)行預(yù)測(cè)計(jì)算的用例等,感興趣的朋友可以在這里查看: https://github.com/intel-analytics/BigDL/wiki/Running-on-EC2
目前,社區(qū)討論中的大多數(shù)用戶都表示希望 BigDL 的后續(xù)版本加入對(duì) Python 的支持,以及開(kāi)發(fā)基于MKL的深度學(xué)習(xí)擴(kuò)展包。
BigDL庫(kù)在GitHub平臺(tái)上的開(kāi)源地址如下: https://github.com/intel-analytics/BigDL 感興趣的朋友可以在頁(yè)面下方找到團(tuán)隊(duì)給出的各種教程,包括如何在各個(gè)操作系統(tǒng)平臺(tái)上安裝和運(yùn)行BigDL,以及BigDL在谷歌討論組的地址等。
來(lái)源:infoq,雷鋒網(wǎng)編譯
雷峰網(wǎng)版權(quán)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見(jiàn)轉(zhuǎn)載須知。