簡介
Analytics Zoo是由Intel開源,基於Apache Spark和Inte BigDL的大數據分析和AI平臺,方便用戶開發基於大數據、端到端的深度學習應用。
系統要求
- JDK 8
- Spark 集羣(推薦使用EMR支持的Spark 2.x)
- python-2.7(python 3.5,3.6也支持), pip
安裝Analytics Zoo
Analytics Zoo 最新的release版本是0.2.0
Scala安裝
下載pre-build版本
可以從github,analytics主頁下載到pre-build版本
通過script build
安裝Apache Maven,設置Maven環境
export MAVEN_OPTS="-Xmx2g -XX:ReservedCodeCacheSize=512m"
如果使用ECS機器進行編譯,推薦修改Maven倉庫mirror
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>central</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
下載Analytics Zoo release版本,解壓後在目錄下運行
bash make-dist.sh
build結束後,在dist目錄中包含了所有的運行環境。將dist目錄放到EMR軟件棧運行時統一目錄。
cp -r dist/ /usr/lib/analytics_zoo
python 安裝
Analytics Zoo支持pip安裝和非pip安裝,pip安裝會安裝pyspark,bigdl等,由於EMR集羣已經安裝了pyspark,通過pip安裝有可能引起衝突,所以採用非pip安裝。
非Pip安裝
首先要運行
bash make-dist.sh
進入pyzoo目錄,安裝analytcis zoo
python setup.py install
設置環境變量
在scala安裝結束後將dist目錄放到了EMR軟件棧統一目錄,然後設置環境變量。編輯/etc/profile.d/analytics_zoo.sh,加入
export ANALYTICS_ZOO_HOME=/usr/lib/analytics_zoo
export PATH=$ANALYTICS_ZOO_HOME/bin:$PATH
EMR已經設置了SPARK_HOME,所以無需再次設置。
使用Analytics Zoo
使用Spark來訓練和測試深度學習模型
使用Analytics Zoo來做文本分類,代碼和說明在github。根據說明下載必須的數據。提交命令:
spark-submit --master yarn \
--deploy-mode cluster --driver-memory 8g \
--executor-memory 20g --class com.intel.analytics.zoo.examples.textclassification.TextClassification \
/usr/lib/analytics_zoo/lib/analytics-zoo-bigdl_0.6.0-spark_2.1.0-0.2.0-jar-with-dependencies.jar --baseDir /news
通過ssh proxy來查看spark運行詳情頁面。
同時查看日誌,能夠看到每個epoch的accuracy信息等。
INFO optim.DistriOptimizer$: [Epoch 2 9600/15107][Iteration 194][Wall Clock 193.266637037s] Trained 128 records in 0.958591653 seconds. Throughput is 133.52922 records/second. Loss is 0.74216986.
INFO optim.DistriOptimizer$: [Epoch 2 9728/15107][Iteration 195][Wall Clock 194.224064816s] Trained 128 records in 0.957427779 seconds. Throughput is 133.69154 records/second. Loss is 0.51025534.
INFO optim.DistriOptimizer$: [Epoch 2 9856/15107][Iteration 196][Wall Clock 195.189488678s] Trained 128 records in 0.965423862 seconds. Throughput is 132.58424 records/second. Loss is 0.553785.
INFO optim.DistriOptimizer$: [Epoch 2 9984/15107][Iteration 197][Wall Clock 196.164318688s] Trained 128 records in 0.97483001 seconds. Throughput is 131.30495 records/second. Loss is 0.5517549.
在Analytics Zoo中使用pyspark和Jupyter來進行深度學習訓練
安裝jupyter
pip install jupyter
使用下面命令啓動。
jupyter-with-zoo.sh
使用Analytics Zoo,採用內置的Wide And Deep 模型來進行推薦,相關內容可參考github。
首先導入數據
然後定義模型和優化器
進行訓練
查看訓練結果