MXNet 宣布支持 Keras 2,可更加方便快捷地實現 CNN及RNN 分散式訓練
AI 研習社按,近期,AWS 表示 MXNet 支持 Keras 2,開發者可以使用 Keras-MXNet 更加方便快捷地實現 CNN 及 RNN 分散式訓練。AI 研習社將 AWS 官方博文編譯如下。
Keras-MXNet 深度學習後端(https://github.com/awslabs/keras-apache-mxnet)現在可用,這要歸功於 Keras 和 Apache MXNet(孵化)開源項目的貢獻者。Keras 是用 Python 編寫的高級神經網路 API,以快速簡單的 CNN 和 RNN 原型而聞名。
Keras 開發人員現在可以使用高性能 MXNet 深度學習引擎進行 CNN 和遞歸神經網路 RNN 的分散式訓練。通過更新幾行代碼,Keras 開發人員可以使用 MXNet 的多 GPU 分散式訓練功能來提高訓練速度。保存 MXNet 模型是該發行版本一個極具價值的功能。開發者可以在 Keras 中進行設計,使用 Keras-MXNet 進行訓練,並且在生產中用 MXNet 進行大規模推算。
用 Keras 2 和 MXNet 做分散式訓練
本文介紹如何安裝 Keras-MXNet 並演示如何訓練 CNN 和 RNN。如果您之前嘗試過使用其他深度學習引擎做分散式訓練,那麼您應該知道這過程可能很乏味而且很困難。現在,讓我們看看用 Keras-MXNet 訓練會怎樣。
安裝只需要幾步
部署 AWS Deep Learning AMI
安裝 Keras-MXNet
配置 Keras-MXNet
1.部署 AWS Deep Learning AMI
按照此教程部署 AWS Deep Learning AMI(DLAMI)。要利用多 GPU 訓練示例,請啟動一個 p3.8xlarge 或類似的多 GPU 實例類型。
想要自己安裝依賴來運行 CUDA,Keras,MXNet 和其他框架(比如 TensorFlow)? 請按照 Keras-MXNet 安裝指南來安裝(https://github.com/awslabs/keras-apache-mxnet/blob/master/docs/mxnet_backend/installation.md)。
2.安裝 Keras-MXNet
將 Keras-MXnet 及其依賴項安裝在您 DLAMI 上的 MXNet Conda 環境中。 由於它已經有Keras 1.0,所以你需要首先卸載它。登錄您的 DLAMI 並運行以下命令:
#Activate the MXNet Python 3 environment on the DLAMI
$sourceactivate mxnet_p36
#Install a dependency neededforKeras datasets
$pip install h5py
#Uninstall older versions Keras-MXNet
$pip uninstall keras-mxnet
#Install Keras-MXNet v2.1.6
$pip install keras-mxnet
Keras-MXnet 及其依賴現已安裝在 DLAMI 的 MXNet Conda 環境中。
3.驗證 Keras-MXNet 安裝
使用以下方式運行 MXNet 後端來驗證你的 Keras:
$python
>>>import keras as k
Using MXNet backend
CNN 支持
現在讓我們在 CIFAR-10 數據集(https://www.cs.toronto.edu/~kriz/cifar.html)上訓練一個 ResNet 模型以確定 10 個分類:飛機、汽車、鳥、貓、鹿、狗、青蛙、馬、船和卡車。
我們可以使用 Keras-MXNet 存儲庫的示例的部分 Keras 2 腳本。用 MXNet 作為 Keras 的後端只需要對腳本進行非常少的更新。
首先從 Keras-MXNet 庫文件中下載示例腳本。
$ wgethttps://raw.githubusercontent.com/awslabs/keras-apache-mxnet/master/examples/cifar10_resnet_multi_gpu.py
該腳本調用 multi_gpu_model API 並傳遞要使用的 GPU 數量。
其次,在終端窗口中運行 nvidia-smi 以確定 DLAMI 上可用的 GPU 數量。 在下一步中,如果您有四個 GPU,您將按原樣運行腳本,否則運行以下命令打開腳本進行編輯。
$vicifar10_resnet_multi_gpu.py
該腳本以下行可以定義 GPU 的數量,如果有必要的話可以更新它:
model= multi_gpu_model(model, gpus=4)
訓練:
$pythoncifar10_resnet_multi_gpu.py
(可選)在訓練運行期間,使用 nvidia-smi 命令檢查 GPU 利用率和內存使用情況。
RNN 支持
Keras-MXNet 目前提供 RNN 實驗性的支持。 在使用帶有 MXNet 後端的 RNN 時存在一些限制。更多相關信息,請查閱 Keras-MXNet 文檔。 這裡的例子包括你需要的解決方法,以便使用 LSTM 層訓練 IMDB 數據集。儘管有解決方法,但在多 GPU AMI 上訓練此 RNN 將比你習慣的要容易和快速。
使用 imdb_lstm 示例腳本。 在嵌入層中傳遞輸入長度,並按如下所示設置 unroll = True。
首先,在 DLAMI 的終端會話中,從 Keras-MXNet repo 文件夾下載示例腳本。
$ wgethttps://raw.githubusercontent.com/awslabs/keras-apache-mxnet/master/examples/imdb_lstm.py
其次,打開腳本並跳轉到下面一行來查看它:
model.add(Embedding(max_features,128, input_length=maxlen))
model.add(LSTM(128, unroll=True))
第三,示例腳本已被修改為與 MXNet 後端兼容,因此您可以運行它:
$pythonimdb_lstm.py
(可選)在訓練運行期間,使用 nvidia-smi 命令檢查 GPU 利用率和內存使用情況。 為此打開另一個終端會話。
Benchmarks
為幫助您評估不同 Keras 後端的性能,我們為 Keras-MXNet 添加了基準測試模塊。通過在該表中描述的 CPU,單 GPU 和多 GPU 機器上使用各種模型和數據集,您可以看到 Keras-MXNet 具有更快的 CNN 訓練速度,以及跨多個 GPU 的高效縮放, 這將顯示在訓練速度的條形圖中。有關如何運行基準腳本並生成詳細基準測試結果的信息,請參閱 Keras 基準測試自述文件。
基準配置:
Keras Version 2.1.6
MXNet Version 1.2.0
Image Data Format: Channel first
由於數據集圖像本身較小,因此對 CIFAR10 數據集進行訓練會導致子線性縮放。該數據集由 50,000 個尺寸為 32×32 像素的圖像組成,傳送這些小圖像的通信開銷高於從四個跳轉到八個 GPU 所提供的計算能力。
MXNet 宣布支持 Keras 2,可更加方便快捷地實現 CNN 及 RNN 分散式訓練
與 Keras-MXNet 的圖像處理速度比較
MXNet 宣布支持 Keras 2,可更加方便快捷地實現 CNN 及 RNN 分散式訓練
下一步?
嘗試一些額外的 Keras-MXNet 教程或閱讀發行說明中的詳細信息。
更多資料
保存 MXNet-Keras 模型
https://github.com/awslabs/keras-apache-mxnet/blob/master/docs/mxnet_backend/installation.md
性能指南
https://github.com/awslabs/keras-apache-mxnet/blob/master/docs/mxnet_backend/performance_guide.md
多 GPU 訓練
https://github.com/awslabs/keras-apache-mxnet/blob/master/docs/mxnet_backend/multi_gpu_training.md
RNN 限制和解決方法
https://github.com/awslabs/keras-apache-mxnet/blob/master/docs/mxnet_backend/using_rnn_with_mxnet_backend.md
發行說明
https://github.com/awslabs/keras-apache-mxnet/releases/tag/v2.1.6
Via:
https://aws.amazon.com/cn/blogs/machine-learning/apache-mxnet-incubating-adds-support-for-keras-2/
從Python入門-如何成為AI工程師
BAT資深演算法工程師獨家研發課程
最貼近生活與工作的好玩實操項目
班級管理助學搭配專業的助教答疑
學以致用拿offer,學完即推薦就業
新人福利
關注 AI 研習社(okweiwu),回復1領取
【超過 1000G 神經網路 / AI / 大數據資料】
喜大普奔,Keras 官方中文版文檔發布啦!
※都說 AllenNLP 好用,我們跑一遍看看究竟多好用
※用 TensorFlow 實現物體檢測的像素級分類
TAG:AI研習社 |