內容來源:2017 年 9 月 9 日,英特爾機器學習工程師張堯在「Cloudera數據科學峯會—一場純技術非商業的交流會」進行《在Apache Spark之上以BigDL搭建可擴展的分佈式深度學習框架》演講分享。IT 大咖說(微信id:itdakashuo)做爲獨家視頻合做方,經主辦方和講者審閱受權發佈。
python
閱讀字數:2703 | 7分鐘閱讀編程
在此次演講中,咱們將演示大數據用戶和數據科學家如何使用BigDL以分佈式方式對海量數據進行深度學習分析(如圖像識別、對象檢測、NLP等)。這可讓他們使用已有的大數據集羣(例如Apache Hadoop和Spark)來做爲數據存儲、數據處理和挖掘、特徵工程、傳統的(非深度)機器學習和深度學習工做負載的統一數據分析平臺。服務器
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相媲美的。框架
將來的第一個趨勢是數據增加越大的神經網絡會取得越好的效果,可是一樣訓練起來會比較複雜速度也會比較慢。python2.7
第二個趨勢就是Hadoop,它已經成爲了全球大數據生態系統中的主流,大數據處理的中心。機器學習
第三個趨勢從此要想寫一個完整的機器學習生態系統,它要應對的不只是ML code而是整個系統,對此若是沒有完整的框架就會浪費大量的時間。分佈式
第四個趨勢是歸於統一,在其餘領域趨於統一的趨勢在大數據淋雨一樣會顯現出來。
BigDL就是解決了如何在已有的大數據生態系統上直接去部署深度學習的問題,它使得數據工程師們可以繼續的使用熟悉的軟件和硬件來實現深度學習的應用,同時可以經過已有的Spark集羣來分析大數據。
對於標準的Spark工做來講不須要對Spark或者Hadoop的集羣作任何的改變。它在調度上是經過Spark的管理來進行的,因此性能上會有所優化。Spark中每臺機器使用的是同一個模型,可是訓練的時候會使用不一樣的數據。
BigDL不只僅是一個深度學習的框架並且還能與現有的Spark功能緊密的結合在一塊兒,好比SQL、DataFramer以及Structure Streaming等。
BigDL至關於標準的Spark程序,能夠與Spark已有的概念無縫的鏈接在一塊兒,一樣也可以與Spark的其餘組件進行組合。因此它在使用上是很是方便的,調度效率和可擴展性都很高。
Caffe / TensorFlow on Spark 其實就是在每一個 Work 上安裝了一個Spark 程序,而後再由 Spark 將程序提起來,從調度效率上來看並非很高。並且雖然它對 GPU 的優化很好,但對 CPU 的優化卻不盡人意,單純的從服務器的角度來看效率是不行的。
BigDL 是支持 python 的封裝的,對於 python2.7 和3.5都有很好的支持,可以在pySpark上運行。BigDL一樣可以在 NoteBook上很方便的編寫代碼,進行編譯以及展示。
而經過上面的代碼可讓開發人員實時的獲取到配置的變化,Apollo提供了事件觸發機制,只須要添加一個addChangeListener就好了,每次配置變化的時候會調用onChange方法,而且傳入對應配置變化的事件,這個事件包含配置項的改變。
Recurrent Neural Network Support也就是RNN,它是深度學習中很重要的一部分,主要用來處理循環神經網絡以及訓練性的模型。而BigDL是支持Simple RNN的,除此以外對LSTM和GRU也能很好的支持。
在複雜模型的狀況下,網絡不能經過訓練向的神經網絡來表示的時候,就要採用Functional API,它使得多個節點互相之間能夠任意的組合,造成所須要的網絡。
BinDL除了在模型訓練上頗有優點以外,也能夠把訓練好的TensorFlow或Caffe網絡讀取到BigDL中,一樣BigDL的模型也能導入到Tensor或Caffe內。
語音識別是深度學習應用最廣的領域之一,BigDL在這方面實現了Deep speech,它是將語音轉換爲文本的庫。
在複雜模型的狀況下,網絡不能經過訓練向的神經網絡來表示的時候,就要採用Functional API,它使得多個節點互相之間能夠任意的組合,造成所須要的網絡。
BigDL支持衆多雲端服務,包括Amazon Web Service、Microsoft Azure、Alibaba Cloud、Cloudera等等。