Analytics Zoo 入門

活動連接:SPARK中文峯會7月4日(二)|Ray On Spark

演講嘉賓簡介:邱鑫,英特爾高級軟件工程師,BigDL和Analytics Zoo核心貢獻者。算法

如下內容根據演講視頻以及PPT整理而成。微信

點擊連接觀看精彩回放:網絡

https://developer.aliyun.com/live/43188
app

本次分享主要圍繞如下四個方面:
1、Overview of Analytics Zoo & BigDL
2、Getting Started
3、End-to-End Pipelines
4、ML Workflow
框架

1、Overview of Analytics Zoo & BigDL

BigDL
BigDL是2016底開源項目,是基於Spark的分佈式深度學習框架。當時考慮到Spark在深度學習的支持方面比較弱,因此但願爲大數據用戶提供更多先進的深度學習算法。開發完BigDL以後發現它對深度學習出身的開發者並不友好,由於你們須要學習Spark相關知識,還須要學習Scala。所以開發了Analytics Zoo,在Analytics Zoo中直接提供了TensorFlow,PyTorch,Keras,BigDL,Ray的支持。機器學習

當時作BigDL的初衷是由於不少大數據用戶但願使用深度學習的算法,如京東有大量圖像存儲在HBase上,須要對圖像作預處理,將處理後數據放到模型中繼續工做,還須要將特徵提取結果存放在HDFS上,作圖像類似性檢索等應用。京東使用的是Caffe,與大數據集羣不一樣的是,兩個集羣網絡帶寬有限,且圖像常常更新,用戶每次從GPU集羣拉取到大數據集羣網絡開銷都很是大。當英特爾將整個預測的pipeline搬到Spark集羣上時,HBase和Spark能夠結合在一塊兒,提供零拷貝的處理策略,這種策略使得京東預測速度提高了3.83倍。分佈式

BigDL能夠直接跑Spark集羣上面,不須要對集羣作修改,集成了不少英特爾特有的技術,對模型訓練進行加速。你們若是對BigDL有興趣可參考SoCC上發表的一篇工做。工具

Analytics Zoo
Analytics Zoo是統一的數據分析AI平臺,支持筆記本、雲、Hadoop Cluster、K8s Cluster等平臺、此外,Analytics Zoo提供了端到端的pipeline,你們能夠將AI模型應用到分佈式大數據場景中。Analytics Zoo還提供了端到端的ML workflow和內置的模型和算法。具體而言,在底層的使用環境中,支持深度學習框架,如TensorFlow、PyTorch、OpenVINO等,還支持分佈式框架,如Spark、Flink、Ray等,還可使用Python庫,如Numpy、Pandas、sklearn等。在端到端的pipeline中用戶可使用原生的TensorFlow和PyTorch,用戶只須要很簡單的修改就能夠將原有的TensorFlow和PyTorch代碼移植到Spark上來作分佈式訓練。Analytics Zoo還提供了RayOnSpark,ML Pipeplines,Automatic Cluster Serving,支持流式Serving。在內置算法中,提供了推薦算法,時序算法,視覺以及天然語言處理等。oop

通常你們在開發大數據AI應用時,須要通過三步。首先在laptop上面使用一些樣本數據實現模型的原型。而後將代碼移植到集羣上面,使用歷史數據作測試。再將代碼移到生產環境中,處理分佈式數據。從用戶角度而言,但願代碼儘量在第一步完成,後面兩步再也不修改,便可部署到本身的Hadoop或K8S集羣上。學習

2、Getting Started

用戶首先須要安裝Analytics Zoo,能夠經過Google Colab或者Aliyun EMR,亦或是在筆記本上Pull Analytics Zoo Docker Image,pip install 等方式安裝。

Aliyun EMR指的是Aliyun E-MapReduce, 用戶能夠選擇Analytics Zoo 0.8.1版本或TensorFlow 1.15.0做爲可選服務。

3、End-to-End Pipelines

下圖中代碼部分是Analytics Zoo代碼,train_rdd使用了Hadoop API,dataset是從train_rdd導出的TFDataset。開始構建TensorFlow模型,將其放到TFOptimizer中,再定義MaxEpoch。

例1:Image Segmentation using TFPark

下面展現了Image Segmentation 的一個例子。注意在第一步,須要帶上sc=init_nncontext(),表示初始化運行環境,幫助用戶初始化analytic-zoo的環境變量以及Spark context。

再將數據下載到指定目錄中,加載數據。還能夠可視化數據,展現原生圖片和Mask後的圖片。定義參數,如img_shape,batch_size,epoch等。使用Scipy作數據預處理,獲得處理好的特徵數據,將數據放到TFDataset中,定義U-Net模型,使用Keras function API,定義loss,使用net.compile()方法,調用summary可查看目前的結構,使用keras_model.fit()方法訓練模型,最後再可視化預測結果。比對原始圖片,實際Mask圖片以及預測圖片以下:

例2:Face Generation Using Distributed PyTorch on Analytics Zoo

下面介紹使用PyTorch的Face Generation 的一個例子,先從PyTorch Hub中下載的PAGN模型,再使用noise方法得到隨機數據,將noise放在model中生成結果,以下圖:

Analytics Zoo的初始化有三種方法,包括sc=init_nncontext(),第二種是使用init_spark_on _yarn() 方法,第三種是使用 init_spark_on_local()方法。

例子3:Image Similarity using NNFrame

若是想要將Analytics Zoo使用在現有的Spark MLPipeline裏面的話,可使用NNEstimater。

下面介紹Image similarity的例子。客戶主要作房產交易,它們的一種業務場景是爲用戶推薦房子。最開始仍是須要sc=init_nncontext() 初始化環境,使用NNImageReader將圖片讀取到Spark中,定義模型,加載模型,再使用NNEstimater集成Analytics Zoo。

Image similarity可視化結果以下圖:

在Production Deployment時,首先要訓練模型,再提取圖片特徵數據集,最後是作預測。下圖中左邊是正在觀看的House的樣子,右邊是推薦的較爲類似的House。

4、ML Workflow

在作Cluster Serving時能夠經過InputQueue方式將數據存放到pipeline中,再經過OutputQueue方式輸出數據。用戶能夠更方便的構建出Serving工程。

使用AutoML能夠作時序數據預測,相信對作醫學的同窗仍是頗有用的,如觀察某個病人的健康特徵隨着時間變化的狀況。


機器學習/深度學習 人工智能 分佈式計算 算法 大數據 PyTorch TensorFlow 算法框架/工具 Spark Python



獲取更多 Spark+AI SUMMIT 精彩演講視頻回放和ppt,請向本公衆號後臺發送"0704中文峯會"


阿里巴巴開源大數據技術團隊成立Apache Spark中國技術社區,按期推送精彩案例,技術專家直播,問答區近萬人Spark技術同窗在線提問答疑,只爲營造純粹的Spark氛圍,歡迎釘釘掃碼加入!

對開源大數據和感興趣的同窗能夠加小編微信(下圖二維碼,備註「進羣」)進入技術交流微信羣。

Apache Spark技術交流社區公衆號,微信掃一掃關注



本文分享自微信公衆號 - Apache Spark技術交流社區(E-MapReduce_Spark)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。

相關文章
相關標籤/搜索