雷锋网 (大众号:雷锋网) AI 研习社按,近期,AWS 表示 MXNet 支持 Keras 2,开发者可以运用 Keras-MXNet 愈加方便快捷地完成 CNN 及 RNN 散布式训练。AI 研习社将 AWS 官方博文编译如下。
Keras-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 装置指南 来装置。
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 数据集 上训练一个 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 所提供的计算才能。
与 Keras-MXNet 的图像处置速度比拟
下一步?
尝试一些额定的 Keras-MXNet 教程 或阅读 发行阐明 中的详细信息。
更多材料
-
保管 MXNet-Keras 模型
-
功能指南
-
多 GPU 训练
-
RNN 限制和处理办法
-
发行阐明
Via: AWS Blog
。
