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