深度学习 AMI
开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

Deep Learning AMI (Ubuntu) 2.0 版的发行说明详细信息

AWS Deep Learning AMI

AWS Deep Learning AMI 预置了 CUDA 8 和 9 以及若干深度学习框架。DLAMI 与 Python2 和 Python3 共用 Anaconda 平台,可以轻松地在框架之间切换。

此发行版的亮点

  1. 已将 Deep Learning Base AMI (Ubuntu) 用作基础 AMI

  2. CUDA 9

  3. CuDNN 7

  4. NCCL 2.1

  5. CuBLAS 8 和 9

  6. glibc 2.18

  7. OpenCV 3.2.0

  8. 改进了加载 Conda 环境的性能

预置了的深度学习框架

  • Apache MXNet:MXNet 是一个灵活、高效、可移植且可扩展的开源库,用于进行深度学习。它支持各种编程语言的声明式和命令式编程模型,使编写功能强大的深度学习应用程序变得很简单。MXNet 非常高效,本身支持可以在分布式环境中并行化的源代码部分的自动并行计划。MXNet 也很容易移植,内存优化技术的使用使它能在手机上运行完整的服务器。

    • 使用的分支/标签:v1.0

    • 理由:稳定和全面的测试

    • 要进行激活:

      • 适用于 Anaconda Python2.7+ - source activate mxnet_p27

      • 适用于 Anaconda Python3+ - source activate mxnet_p36

  • Caffe2:Caffe2 是一个以表达式、速度和模块性为基础的跨平台框架。

    • 使用的分支/标签:v0.8.1

    • 理由:稳定和全面的测试

    • 注意:只适用于 Python2.7

    • 要进行激活:

      • 适用于 Anaconda Python2.7+ - source activate caffe2_p27

  • CNTK:CNTK (微软认知工具包) 是微软研究院提供的统一深度学习工具包。

    • 使用的分支/标签:v2.2

    • 理由:最新版本

    • 要进行激活:

      • 适用于 Anaconda Python2.7+ - source activate cntk_p27

      • 适用于 Anaconda Python3+ - source activate cntk_p36

  • Keras:Keras 是 Python 的深度学习库

    v2.0.9 集成 Tensorflow

    • 理由:稳定版本

    • 要进行激活:

      • 适用于 Anaconda Python2.7+ - source activate tensorflow_p27

      • 适用于 Anaconda Python3+ - source activate tensorflow_p36

    v1.2.2 集成 MXNet

    • 理由:稳定版本

    • 要进行激活:

      • 适用于 Anaconda Python2.7+ - source activate mxnet_p27

      • 适用于 Anaconda Python3+ - source activate mxnet_p36

  • PyTorch:PyTorch 是一个 python 程序包,它提供了两个高级功能:具有强大 GPU 加速功能的 Tensor 计算 (如 numpy) 和基于磁带式 autograd 系统构建的练深度神经网络

    • 使用的分支/标签:v0.3.0

    • 理由:稳定和全面的测试

    • 要进行激活:

      • 适用于 Anaconda Python2.7+ - source activate pytorch_p27

      • 适用于 Anaconda Python3+ - source activate pytorch_p36

  • TensorFlow:TensorFlow™ 是使用数据流图进行数值计算的开源软件库。

    • 使用的分支/标签:v1.4

    • 理由:稳定和全面的测试

    • 要进行激活:

      • 适用于 Anaconda Python2.7+ - source activate tensorflow_p27

      • 适用于 Anaconda Python3+ - source activate tensorflow_p36

  • Theano:Theano 是一个 Python 库,允许您高效地定义、优化和评估涉及多维数组的数学表达式。

    • 使用的分支/标签:v0.9

    • 理由:稳定和全面的测试

    • 要进行激活:

      • 适用于 Anaconda Python2.7+ - source activate theano_p27

      • 适用于 Anaconda Python3+ - source activate theano_p36

Python 2.7 和 Python 3.5 支持

所有安装的深度学习框架的 AMI 都支持 Python 2.7 和 Python 3.6,但 Caffe2 除外:

  1. Apache MXNet

  2. Caffe2 (仅 Python 2.7)

  3. CNTK

  4. Keras

  5. PyTorch

  6. Tensorflow

  7. Theano

CPU 实例类型支持

AMI 支持所有框架的 CPU 实例类型。MXNet 内置有 Intel MKL2017 DNN 库支持。

安装了 GPU 驱动程序

  • CuDNN 7

  • NVIDIA 384.81

  • CUDA 9.0

启动深度学习实例

从您选择的区域下面的列表中选择 AMI 的版本,然后按照以下步骤操作:

AWS Deep Learning AMI 开发人员指南

测试框架

已使用 MNIST 数据对深度学习框架进行了测试。AMI 包含的脚本可用于训练和测试每个框架的 MNIST。

脚本可在 /home/ubuntu/src/bin 目录中找到。

Deep Learning AMI (Ubuntu) 地区

在以下区域提供:

区域 代码
美国东部 (俄亥俄) us-east-2
美国东部(弗吉尼亚北部) us-east-1
美国西部(加利福尼亚北部) us-west-1
美国西部(俄勒冈) us-west-2
北京 (中国) cn-north-1
亚太地区 (孟买) ap-south-1
亚太区域(首尔) ap-northeast-2
亚太区域(新加坡) ap-southeast-1
亚太区域(悉尼) ap-southeast-2
亚太区域(东京) ap-northeast-1
加拿大 (中部) ca-central-1
欧洲(法兰克福) eu-central-1
欧洲(爱尔兰) eu-west-1
欧洲 (伦敦) eu-west-2
欧洲 (巴黎) eu-west-3
SA (圣保罗) sa-east-1

参考

测试环境

  • 构建在 p2.16xlarge 上。

  • 此外,在 p2.xlarge 和 c4.4xlarge 上经过测试。

已知问题

  • 问题:PyTorch 测试失败。~/src/bin/testPyTorch - 安装与 pytorch 0.3.0 不兼容的测试环境

    解决办法:尚无

  • 问题:框架或第三方提供的教程可能没有在 DLAMI 上安装 Python 依赖项。

    解决办法:您需要在激活环境中通过 conda 或 pip 安装这些依赖项。

  • 问题:模块没有找到运行 Caffe2 示例的错误。

    解决办法一些教程需要 Caffe2 可选依赖项

  • 问题:Caffe2 模型下载功能导致 404。自 v0.8.1 发布以来,这些模型已经改变了位置。更新 models/download.py 以使用 update from master

  • 问题:matplotlib 只能渲染 png。

    解决办法:安装 Pillow,然后重新启动您的内核。

  • 问题:更改 Caffe2 源代码似乎不起作用。

    解决办法:更改您的 PYTHONPATH 以使用安装位置 /usr/local/caffe2,而不是生成文件夹。

  • 问题:Caffe2 net_drawer 错误。

    解决办法:使用在此次提交中找到的记录器补丁

  • 问题:Caffe2 示例显示关于 LMDB 的错误 (无法打开数据库等)

    解决办法:这需要在安装系统 LMDB 之后从源代码进行生成,例如:sudo apt-get install liblmdb-dev

  • 问题:在使用 Jupyter 服务器连接本地端口时,SSH 断开连接。尝试创建一个到服务器的隧道时,您会看到 channel_setup_fwd_listener_tcpip: cannot listen to port: 8057

    解决方案:使用 lsof -ti:8057 | xargs kill -9,其中 8057 是您使用的本地端口。然后尝试再次创建到 Jupyter 服务器的隧道。