MXNet 宣佈支持 Keras 2,可更加方便快捷地實現 CNN 及 RNN 分佈式訓練

AI研習社2018-05-24 18:25:51

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
$
source activate mxnet_p36

#
Install a dependency needed for Keras 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 庫文件中下載示例腳本。

$ wget https://raw.githubusercontent.com/awslabs/keras-apache-mxnet/master/examples/cifar10_resnet_multi_gpu.py

該腳本調用 multi_gpu_model API 並傳遞要使用的 GPU 數量。

其次,在終端窗口中運行 nvidia-smi 以確定 DLAMI 上可用的 GPU 數量。 在下一步中,如果您有四個 GPU,您將按原樣運行腳本,否則運行以下命令打開腳本進行編輯。

$ vi cifar10_resnet_multi_gpu.py

該腳本以下行可以定義 GPU 的數量,如果有必要的話可以更新它:

model = multi_gpu_model(model, gpus=4)

訓練:

$ python cifar10_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 文件夾下載示例腳本。

$ wget https://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 後端兼容,因此您可以運行它:

$ python imdb_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 官方中文版文檔發佈啦!

https://weiwenku.net/d/107101439