Spark上的深度學習框架BigDL 介紹

2021-08-09 04:14:26 字數 2675 閱讀 9019

**:

bigdl: distributed deep learning library for apache spark 

intel開源了基於apache spark的分布式深度學習框架bigdl。bigdl借助現有的spark集群來執行深度學習計算,並簡化儲存在hadoop中的大資料集的資料載入。

bigdl適用的應用場景主要為以下三種:

直接在hadoop/spark框架下使用深度學習進行大資料分析(即將資料儲存在hdfs、hbase、hive等資料庫上);

在spark程式中/工作流中加入深度學習功能;

利用現有的 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一起使用。

bigdl是基於apache spark的分布式深度學習框架,借助現有的spark集群來執行深度學習計算,並簡化儲存在hadoop中的大資料集的資料載入。

1.1豐富的深度學習支援。模擬torch之後,bigdl為深入學習提供全面支援,包括數字計算(通過tensor)和高階神經網路 ; 此外,使用者可以使用bigdl將預先訓練好的caffe或torch模型載入到spark程式中。

1.2極高的效能。為了實現高效能,bigdl在每個spark任務中使用英特爾mkl和多執行緒程式設計。因此,在單節點xeon(即與主流gpu 相當)上,它比開箱即用開源caffe,torch或tensorflow快了數量級。

1.2有效地橫向擴充套件。bigdl可以通過利用apache spark(快速分布式資料處理框架),以及高效實施同步sgd和全面減少spark的通訊,從而有效地擴充套件到「大資料規模」上的資料分析

2.為了滿足什麼應用場景

2.1直接在hadoop/spark框架下使用深度學習進行大資料分析(即將資料儲存在hdfs、hbase、hive等資料庫上);

2.2在spark程式中/工作流中加入深度學習功能;

2.3利用現有的 hadoop/spark 集群來執行深度學習程式,然後將**與其他的應用場景進行動態共享,例如etl(extract、transform、load,即通常所說的資料抽取)、資料倉儲(data warehouse)、功能引擎、經典機器學習、圖表分析等。

3.核心技術點是那些

bigdl的api是參考torch設計的,為使用者提供幾個模組:

module: 構建神經網路的基本元件,目前提供100+的module,覆蓋了主流的神經網路模型。

criterion:機器學習裡面的目標函式,提供了十幾個,常用的也都包含了。

optimizer:分布式模型訓練。包括常用的訓練演算法(sgd,adagrad),data partition的分布式訓練。

4.同類對比

速度對比:bigdl目前的測試結果是基於單節點xeon伺服器的(即,與主流gpu相當的cpu),在xeon上的結果表明,比開箱即用的開源caffe,torch或tensorflow速度上有「數量級」的提公升,最高可達到48倍的提公升。而且能夠擴充套件到數十個xeon伺服器

語言對比:caffe和torch主要使用c++架構,bigdl主要使用scala開發

對gpu的支援:caffe和torch對gpu有較好的支援,但不同版本介面不相容,bigdl不支援

5.優勢劣勢 

優勢:針對每個spark task使用了多執行緒程式設計。

bigdl使用英特爾數學核心庫(intel mkl)來得到最高效能要求

使用bigdl,由caffe和torch建立的模型可以載入到spark程式並執行。spark還允許跨集群的高效擴充套件。

劣勢:對機器要求高 jdk7上執行效能差 在centos 6和7上,要將最大使用者程序增加到更大的值(例如514585); 否則,可能會看到錯誤,如「無法建立新的本機執行緒」。 

訓練和驗證的資料會載入到記憶體,擠占記憶體

6.發展前景

bigdl 是基於spark的深度學習庫,對大資料的實現有著非常好的契合度,也有著比較全面的api,非常適合直接在hadoop/spark框架下使用深度學習進行大資料分析。但與其他深度學習框架相比,開源時間較短,發展不成熟,對gpu並沒有良好的支援,是intel為了提高自家處理器的競爭能力而設計的,如果能整合加入對gpu的支援,發展前景將會很好。

原文:

深度學習框架

近一年來,深度學習的風起雲湧,產生了許多令人興奮的成果,同時,深度學習框架也是百家爭鳴。經過這一年的觀察,tensorflow 似乎成為了一種潮流,並且越來越多的框架開始為 keras 提供支援,它可能會成為一種標準。今後選擇keras框架作為深度學習的目標。keras 被認為是構建神經網路的未來,...

Spark 深度學習的悖論實效

在過去三年,databricks 最聰明的工程師在研究乙個秘密的專案。今天,我們揭秘deepspark,這是apache spark乙個重要的里程碑。deepspark使用前沿神經網路自動化許多手工過程,包括軟體開發,修復bug,按照規範實現特徵,並通過pull request prs 審查正確性。...

深度學習初探(二)深度學習框架

theano 是最早的深度學習框架之一,是乙個基於 python 語言 定位底層運算的計算庫,theano 同時支援 gpu 和 cpu 運 算。由於theano 開發效率較低,模型編譯時間較長,同時開發人員轉投tensorflow 等原因,theano 目前已經停止維護 scikit learn ...