Intel開源深度學習庫BigDL:Non GPU on Spark

Intel開源了基於Apache Spark的分佈式深度學習框架BigDL。BigDL藉助現有的Spark集羣來運行深度學習計算,並簡化存儲在Hadoop中的大數據集的數據加載。

BigDL適用的應用場景主要爲以下三種:

  1. 直接在Hadoop/Spark框架下使用深度學習進行大數據分析(即將數據存儲在HDFS、HBase、Hive等數據庫上);

  2. 在Spark程序中/工作流中加入深度學習功能;

  3. 利用現有的 Hadoop/Spark 集羣來運行深度學習程序,然後將代碼與其他的應用場景進行動態共享,例如ETL(Extract、Transform、Load,即通常所說的數據抽取)、數據倉庫(data warehouse)、功能引擎、經典機器學習、圖表分析等。

運行於Spark集羣上  

Spark是被工業界驗證過的,並有很多部署的大數據平臺。BigDL針對那些想要將機器學習應用到已有Spark或Hadoop集羣的人。

對於直接支持已有Spark集羣的深度學習開源庫,BigDL是唯一的一個框架。

BigDL可以直接運行在已有Spark集羣之上,和Spark RDD, DataFrame/DataSet直接接口,不需要額外的集羣數據加載,從而大大提高從數據抽取到深度學習建模的開發運行效率。用戶不需要對他們的集羣做任何改動,就可以直接運行BigDL。BigDL可以和其它的Spark的workload一起運行,非常方便的進行集成。

BigDL庫支持Spark 1.5、1.6和2.0版本。BigDL庫中有把Spark RDDs轉換爲BigDL DataSet的方法,並且可以直接與Spark ML Pipelines一起使用。

Non GPU on Spark  

BigDL目前的測試結果是基於單節點Xeon服務器的(即,與主流GPU相當的CPU),在Xeon上的結果表明,比開箱即用的開源Caffe,Torch或TensorFlow速度上有“數量級”的提升,最高可達到48倍的提升(Orders of magnitude ,up-to 48X today)。而且能夠擴展到數十個Xeon服務器。

爲什麼創建一個默認情況下不使用GPU加速的深度學習框架?對於英特爾來說,它是促進下一代CPU機器學習的策略的一部分。

Spark傳統上不是一個GPU加速的產品,雖然目前IBM和Databricks(於去年底)有在自己的集羣上增加支持GPU加速的Spark服務;其實使用GPU也將是一種趨勢。從另一方面來說,BigDL是給開發者的一個福利,理論上,使用現有軟件會比移植到GPU架構上的工作量小很多。比如說英特爾採用GPU-a PCIe附加卡的形式封裝了Xeon Phi處理器,由Xeon Phi插件卡組成的系統可以通過簡單地更換或添加卡來升級或擴展,而不用更換整個機架。

性能上的優化措施  

與使用GPU加速來加速過程的其他機器學習框架不同,BigDL使用英特爾數學內核庫(Intel MKL)來得到最高性能要求。在性能提高策略上,它還針對每個Spark task使用了多線程編程。

對於模型訓練,BigDL使用了在多個執行器中執行單個Spark任務的同步小批量SGD(Stochastic Gradient Descent)。每個執行器運行一個多線程引擎並處理一部分微批次數據。在當前版本中,所有的訓練和驗證數據都存儲到存儲器中。

BigDL使用Scala開發,並參考了Torch的模型。像Torch一樣,它有一個使用Intel MKL庫進行計算的Tensor類。Intel MKL(Math Kernel Library)是由一系列爲計算優化過的小程序所組成的庫,這些小程序從FFT(快速傅立葉變換)到矩陣乘法均有涉及,常用於深度學習模型訓練。Module是另一個從Torch借鑑而來的概念,它的靈感來自Torch的nn package。Module代表單獨的神經網絡層、Table和Criterion。

易用性上的優化  

BigDL的API是參考torch設計的,爲用戶提供幾個模塊:

  1. Module: 構建神經網絡的基本組件,目前提供100+的module,覆蓋了主流的神經網絡模型。

  2. Criterion:機器學習裏面的目標函數,提供了十幾個,常用的也都包含了。

  3. Optimizer:分佈式模型訓練。包括常用的訓練算法(SGD,Adagrad),data partition的分佈式訓練。

用戶只需定義好模型和目標函數,就可以放到Optimizer裏面去訓練。對於數據預處理,BigDL提供了一個叫Transformer的接口封裝,並且提供了很多圖像、自然語言處理方面的預處理算法的實現。另外還提供很多示例程序,讓用戶瞭解怎麼使用BigDL。例如怎麼訓練模型,怎麼和Spark其它模塊一起工作。

BigDL提供了一個AWS EC2鏡像和一些示例,比如使用卷積神經網絡進行文本分類,還有圖像分類以及如何將在Torch或Caffe中預訓練過的模型加載到Spark中進行預測計算。來自社區的請求主要包括提供對Python的支持,MKL-DNN(MKL的深度學習擴展),faster-rcnn,以及可視化支持。


轉自infoq中文站

作者 杜小芳

發佈了73 篇原創文章 · 獲贊 17 · 訪問量 13萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章