基於Apache Spark以BigDL搭建可擴充套件的分散式深度學習框架

IT大咖說發表於2019-01-23

基於Apache Spark以BigDL搭建可擴充套件的分散式深度學習框架

內容來源:2017 年 9 月 9 日,英特爾機器學習工程師張堯在“Cloudera資料科學峰會—一場純技術非商業的交流會”進行《在Apache Spark之上以BigDL搭建可擴充套件的分散式深度學習框架》演講分享。IT 大咖說(微信id:itdakashuo)作為獨家視訊合作方,經主辦方和講者審閱授權釋出。

閱讀字數:2703 | 7分鐘閱讀

嘉賓演講視訊及PPT回顧:suo.im/4yoyTL

摘要

在這次演講中,我們將演示大資料使用者和資料科學家如何使用BigDL以分散式方式對海量資料進行深度學習分析(如影像識別、物件檢測、NLP等)。這可以讓他們使用已有的大資料叢集(例如Apache Hadoop和Spark)來作為資料儲存、資料處理和挖掘、特徵工程、傳統的(非深度)機器學習和深度學習工作負載的統一資料分析平臺。

What is BigDL

BigDL是一個的分散式學習框架,於2016年12月30號進行開源,它是專門為Apache Spark而寫的深度學習框架。Apache Spark則是目前非常流行,用途廣泛的大資料處理系統。

Spark的最底層是它的核心,往上是大量的介面。最上層是類似DataFrame的處理資料介面,中間是一些功能性的部分,比如常用的SQL、SparkR、Strea ming這些常用的庫和介面,而MLlib和GraphX是Spark一直擁有的兩個庫。

在如今深度學習火熱爆發的年代,Spark作為大資料分散式處理系統理所當然需要一個深度學習框架,BigDL就是由此誕生的。BigDL可以像寫標準Spark程式一樣去寫深度學習模型,所以BigDL並不是第三方提供的模組,而是貼合在Spark中,它相當於Spark的一部分,同時可以執行在固有的叢集上,而不用對叢集做任何改變。

由於BigDL使用英特爾底層的資料計算庫,在英特爾的各種cpu上都做了各種優化,讓數學的計算更加迅速,同時它還支援多執行緒程式設計,所以在效能上是可以與主流的GPU相媲美的。

為什麼需要使用BIGDL

趨勢

未來的第一個趨勢是資料增長越大的神經網路會取得越好的效果,但是同樣訓練起來會比較複雜速度也會比較慢。

第二個趨勢就是Hadoop,它已經成為了全球大資料生態系統中的主流,大資料處理的中心。

第三個趨勢今後要想寫一個完整的機器學習生態系統,它要應對的不僅是ML code而是整個系統,對此如果沒有完整的框架就會浪費大量的時間。

第四個趨勢是歸於統一,在其他領域趨於統一的趨勢在大資料淋雨同樣會顯現出來。

BigDL Answering The Needs

BigDL就是解決了如何在已有的大資料生態系統上直接去部署深度學習的問題,它使得資料工程師們能夠繼續的使用熟悉的軟體和硬體來實現深度學習的應用,同時能夠通過已有的Spark叢集來分析大資料。

Overview of BigDlL

對於標準的Spark工作來說不需要對Spark或者Hadoop的叢集做任何的改變。它在排程上是通過Spark的管理來進行的,所以效能上會有所優化。Spark中每臺機器使用的是同一個模型,但是訓練的時候會使用不同的資料。

BigDL不僅僅是一個深度學習的框架而且還能與現有的Spark功能緊密的結合在一起,比如SQL、DataFramer以及Structure Streaming等。

How Does BigDL Compare To Other DL-Spark Effoorts?

BigDL相當於標準的Spark程式,可以與Spark已有的概念無縫的連線在一起,同樣也能夠與Spark的其他元件進行組合。所以它在使用上是非常方便的,排程效率和可擴充套件性都很高。

Caffe / TensorFlow on Spark 其實就是在每個 Work 上安裝了一個Spark 程式,然後再由 Spark 將程式提起來,從排程效率上來看並不是很高。而且雖然它對 GPU 的優化很好,但對 CPU 的優化卻不盡人意,單純的從伺服器的角度來看效率是不行的。

Latest BigDL Features

Python Support & NoteBook Integration

BigDL 是支援 python 的封裝的,對於 python2.7 和3.5都有很好的支援,能夠在pySpark上執行。BigDL同樣能夠在 NoteBook上很方便的編寫程式碼,進行編譯以及展現。

而通過上面的程式碼可以讓開發人員實時的獲取到配置的變化,Apollo提供了事件觸發機制,只需要新增一個addChangeListener就行了,每次配置變化的時候會呼叫onChange方法,並且傳入對應配置變化的事件,這個事件包含配置項的改變。

Recurrent Neural Network Support

Recurrent Neural Network Support也就是RNN,它是深度學習中很重要的一部分,主要用來處理迴圈神經網路以及訓練性的模型。而BigDL是支援Simple RNN的,除此之外對LSTM和GRU也能很好的支援。

Functional API

在複雜模型的情況下,網路不能通過訓練向的神經網路來表示的時候,就要採用Functional API,它使得多個節點互相之間可以任意的組合,形成所需要的網路。

Models Interoperability Support

BinDL除了在模型訓練上很有優勢之外,也可以把訓練好的TensorFlow或Caffe網路讀取到BigDL中,同樣BigDL的模型也能匯入到Tensor或Caffe內。

Where Can You Use BigDL

Speech Recognition

語音識別是深度學習應用最廣的領域之一,BigDL在這方面實現了Deep speech,它是將語音轉換為文字的庫。

Image Recognition and Object Detection

在複雜模型的情況下,網路不能通過訓練向的神經網路來表示的時候,就要採用Functional API,它使得多個節點互相之間可以任意的組合,形成所需要的網路。

BigDL Deployed in the Cloud

BigDL支援眾多雲端服務,包括Amazon Web Service、Microsoft Azure、Alibaba Cloud、Cloudera等等。

相關文章