深度学习AMI开发人员指南.pdf
http://www.100md.com
2020年2月6日
![]() |
| 第1页 |
![]() |
| 第7页 |
![]() |
| 第19页 |
![]() |
| 第28页 |
![]() |
| 第31页 |
![]() |
| 第85页 |
参见附件(2002KB,242页)。
深度学习AMI开发人员指南,这本书针对AMI开发写出了大量的学习资料,作者作为资深的开发人员,不仅写了许多框架低层的应用,也写出了很多案例的介绍,帮助你更好的学习。

深度学习AMI开发人员指南介绍
本指南将帮助您启动并使用 DLAMI。它介绍了用于培训和推导的深度学习的几种常见使用案例。本指南还介绍了如何针对您的用途选择合适的 AMI 和您喜欢的实例类型。DLAMI 针对每个框架提供多个教程。您将找到关于如何配置 Jupyter 以在浏览器中运行教程的说明。
深度学习AMI开发人员指南主目录
深度学习AMI
Table of Contents
AWS Deep Learning AMI是什么?
入门
启动和配置 DLAMI
使用DLAMI
什么是AWS Deep Learning Containers?
升级 DLAMI
资源和支持
书中示例DLAMI用法
了解深度学习:DLAMI 是学习或教授机器学习和深度学习框架的理想选择。它不需要对每个框架的安装进行故障排除,并在同一台计算机上运行框架。DLAMI 附带 Jupyter Notebook,可以轻松地向不熟悉机器学习和深度学习的人运行框架提供的教程。
应用程序开发:如果您是应用程序开发人员,并且有兴趣使用深度学习来使您的应用程序利用 AI 方面的最新进步,则 DLAMI 是理想的测试平台。每个框架都附带了关于如何开始使用深度学习的教程,其中许多教程都有模型动物园,可以让您轻松试用深度学习,您不需要自己创建神经网络或进行模型训练。一些示例向您展示如何在几分钟内构建映像检测应用程序,或如何为您自己的聊天自动程序构建语音识别应用程序。
机器学习和数据分析:如果您是数据科学家或有兴趣通过深度学习处理数据,您会发现许多框架都支持 R 和Spark。您将找到关于进行简单回归的教程,以及为个性化和预测系统构建可扩展的数据处理系统的教程。
研究:如果您是一名研究人员,并且希望试用新框架、测试新模型或培训新模型,DLAMI 和 AWS 扩展功能可以减少安装和管理多个培训节点的繁琐工作。您可以使用 EMR 和 AWS CloudFormation 模板轻松启动完整的实例集群,它们随时可以用于可扩展的培训。
深度学习AMI开发人员指南截图


深度学习 AMI
开发人员指南深度学习 AMI 开发人员指南
深度学习 AMI: 开发人员指南 Copyright ? 2019 Amazon Web Services, Inc. andor its affiliates. All rights reserved.
Amazon's trademarks and trade dress may not be used in connection with any product or service that is not Amazon's,in any manner that is likely to cause confusion among customers, or in any manner that disparages or discredits
Amazon. All other trademarks not owned by Amazon are the property of their respective owners, who may or may not
be affiliated with, connected to, or sponsored by Amazon.深度学习 AMI 开发人员指南
AWS Deep Learning AMI是什么? ........................................................................................................ 1
关于本指南 ................................................................................................................................ 1
先决条件 .................................................................................................................................... 1
用例 .......................................................................................................................................... 1
功能 .......................................................................................................................................... 1
预装框架 ............................................................................................................................ 1
预装 GPU 软件 .................................................................................................................. 2
模型处理和可视化 ............................................................................................................... 2
入门 .................................................................................................................................................. 3
如何开始使用 DLAMI ................................................................................................................... 3
DLAMI 选择 ............................................................................................................................... 3
Conda ............................................................................................................................... 3
Base ................................................................................................................................. 4
CUDA ............................................................................................................................... 5
OS ................................................................................................................................... 6
实例选择 .................................................................................................................................... 6
GPU ................................................................................................................................. 7
CPU ................................................................................................................................. 7
定价 .................................................................................................................................. 7
启动 DLAMI ....................................................................................................................................... 9
步骤 1:启动 DLAMI ................................................................................................................... 9
EC2 控制台 ............................................................................................................................... 9
Marketplace 搜索 ...................................................................................................................... 10
步骤 2:连接到 DLAMI .............................................................................................................. 10
步骤 3:保护 DLAMI 实例 .......................................................................................................... 11
步骤 4:测试您的 DLAMI ........................................................................................................... 11
清除 ........................................................................................................................................ 11
Jupyter 设置 ............................................................................................................................. 11
保护 Jupyter ..................................................................................................................... 12
启动服务器 ....................................................................................................................... 12
配置客户端 ....................................................................................................................... 13
登录 Jupyter Notebook 服务器 ............................................................................................ 14
使用 DLAMI ..................................................................................................................................... 17
Conda DLAMI .......................................................................................................................... 17
采用 Conda 的 Deep Learning AMI 简介 .............................................................................. 17
步骤 1:登录您的 DLAMI ................................................................................................... 17
步骤 2:启动 MXNet Python 3 环境 ..................................................................................... 18
步骤 3:测试某些 MXNet 代码 ............................................................................................ 19
步骤 4:切换到 TensorFlow 环境 ........................................................................................ 19
删除环境 .......................................................................................................................... 20
基础 DLAMI ............................................................................................................................. 20
使用 Deep Learning Base AMI ............................................................................................ 20
配置 CUDA 版本 ............................................................................................................... 20
Jupyter 笔记本电脑 ................................................................................................................... 21
导航已安装的教程 .............................................................................................................. 21
通过 Jupyter 切换环境 ....................................................................................................... 22
教程 ........................................................................................................................................ 22
10 分钟教程 ..................................................................................................................... 22
激活框架 .......................................................................................................................... 22
调试和可视化 .................................................................................................................... 33
分布式训练 ....................................................................................................................... 36
GPU 监控和优化 ............................................................................................................... 52
推理 ................................................................................................................................ 57
将框架用于 ONNX ............................................................................................................. 60
iii深度学习 AMI 开发人员指南
模型处理 .......................................................................................................................... 68
Deep Learning Containers .................................................................................................................. 72
Amazon EC2 上的Deep Learning Containers ................................................................................ 72
设置 ................................................................................................................................ 72
教程 ................................................................................................................................ 73
ECS 上的 Deep Learning Containers ........................................................................................... 76
设置 ................................................................................................................................ 77
教程 ................................................................................................................................ 78
Amazon EKS 上的 Deep Learning Containers ............................................................................... 90
设置 ................................................................................................................................ 91
教程 ................................................................................................................................ 96
EKS 上的 AWS Deep Learning Containers故障排除 .............................................................. 118
EKS 上的 AWS Deep Learning Containers词汇表 ................................................................. 120
Amazon SageMaker 上的 Deep Learning Containers .................................................................... 121
附录 ...................................................................................................................................... 122
Deep Learning Containers映像 .......................................................................................... 122
自定义映像 ..................................................................................................................... 127
MKL 建议 ....................................................................................................................... 128
升级 DLAMI .................................................................................................................................... 132
DLAMI 升级 ............................................................................................................................ 132
软件更新 ................................................................................................................................ 132
资源 .............................................................................................................................................. 133
论坛 ...................................................................................................................................... 133
博客 ...................................................................................................................................... 133
常见问题 ................................................................................................................................ 133
附录 .............................................................................................................................................. 136
AMI 选项 ................................................................................................................................ 136
Conda ........................................................................................................................... 136
Base ............................................................................................................................. 137
CUDA 10 ....................................................................................................................... 138
CUDA 9 ......................................................................................................................... 138
CUDA 8 ......................................................................................................................... 139
Ubuntu ........................................................................................................................... 139
Amazon Linux ................................................................................................................. 140
Amazon Linux 2 .............................................................................................................. 141
Windows ........................................................................................................................ 141
DLAMI:发行说明 .................................................................................................................... 142
版本存档 ........................................................................................................................ 142
文档历史记录 .................................................................................................................................. 235
AWS 词汇表 ................................................................................................................................... 238
iv深度学习 AMI 开发人员指南
关于本指南
AWS Deep Learning AMI是什么?
欢迎阅读 AWS Deep Learning AMI 用户指南。
AWS Deep Learning AMI (DLAMI) 是在云中进行深度学习的一站式商店。此自定义计算机实例可用于大多数
Amazon EC2 区域中的各种实例类型,从仅包含 CPU 的小型实例到最新的高性能多 GPU 实例。它预配置了
NVIDIA CUDA 和 NVIDIA cuDNN 以及最常用的深度学习框架的最新版本。
关于本指南
本指南将帮助您启动并使用 DLAMI。它介绍了用于培训和推导的深度学习的几种常见使用案例。本指南还介
绍了如何针对您的用途选择合适的 AMI 和您喜欢的实例类型。DLAMI 针对每个框架提供多个教程。您将找
到关于如何配置 Jupyter 以在浏览器中运行教程的说明。
先决条件
您应该熟悉命令行工具和基本 Python 才能成功运行 DLAMI。框架自身提供有关如何使用每个框架的教程,但是本指南可以向您展示如何激活每个框架并找到适当的入门教程。
示例 DLAMI 用法
了解深度学习:DLAMI 是学习或教授机器学习和深度学习框架的理想选择。它不需要对每个框架的安装进行
故障排除,并在同一台计算机上运行框架。DLAMI 附带 Jupyter Notebook,可以轻松地向不熟悉机器学习和
深度学习的人运行框架提供的教程。
应用程序开发:如果您是应用程序开发人员,并且有兴趣使用深度学习来使您的应用程序利用 AI 方面的最新
进步,则 DLAMI 是理想的测试平台。每个框架都附带了关于如何开始使用深度学习的教程,其中许多教程都
有模型动物园,可以让您轻松试用深度学习,您不需要自己创建神经网络或进行模型训练。一些示例向您展
示如何在几分钟内构建映像检测应用程序,或如何为您自己的聊天自动程序构建语音识别应用程序。
机器学习和数据分析:如果您是数据科学家或有兴趣通过深度学习处理数据,您会发现许多框架都支持 R 和
Spark。您将找到关于进行简单回归的教程,以及为个性化和预测系统构建可扩展的数据处理系统的教程。
研究:如果您是一名研究人员,并且希望试用新框架、测试新模型或培训新模型,DLAMI 和 AWS 扩展功能
可以减少安装和管理多个培训节点的繁琐工作。您可以使用 EMR 和 AWS CloudFormation 模板轻松启动完
整的实例集群,它们随时可以用于可扩展的培训。
Note
虽然您的最初选择可能是将实例类型升级到具有多个 GPU(最多 8 个)的更大实例,但您也
可以通过创建 DLAMI 实例集群来进行水平扩展。要快速设置集群,您可以使用预定义的 AWS
CloudFormation 模板。有关集群构建的更多信息,请参阅 资源和支持 (p. 133)。
DLAMI 的功能
预装框架
目前有三种主要的 DLAMI,均包含与操作系统 (OS) 和软件版本相关的其他变体:
1深度学习 AMI 开发人员指南
预装 GPU 软件
采用 Conda 的 Deep Learning AMI (p. 3) - 在单独的 Python 环境中使用 conda 程序包单独安装的框
架
Deep Learning Base AMI (p. 4) - 不安装任何框架;只有 NVIDIA CUDA 和其他依赖项
新的 采用 Conda 的 Deep Learning AMI 使用 Anaconda 环境来隔离每个框架,因此您可以随意切换框架,而不用担心其依赖项发生冲突。
有关选择最佳 DLAMI 的更多信息,请查看入门 (p. 3)。
这是 采用 Conda 的 Deep Learning AMI 支持的框架的完整列表:
Apache MXNet
Caffe
Caffe2
CNTK
Keras
PyTorch
TensorFlow
Theano
预装 GPU 软件
即使您使用仅包含 CPU 的实例,DLAMI 也将具有 NVIDIA CUDA 和 NVIDIA cuDNN。无论实例类型是什
么,安装的软件都是相同的。请记住,GPU 特定工具只适用于至少包含一个 GPU 的实例。选择 DLAMI 的
实例类型 (p. 6)中包含有关此内容的更多信息。
NVIDIA CUDA 9
NVIDIA cuDNN 7
CUDA 8 也可用。有关更多信息,请参阅CUDA 安装和框架绑定 (p. 5)。
模型处理和可视化
采用 Conda 的 Deep Learning AMI 预装有两种模型服务器,一种用于 MXNet,一种用于 TensorFlow,还预
装有 TensorBoard,用于模型可视化。
适用于 Apache MXNet 的模型服务器 (MMS) (p. 68)
TensorFlow Serving (p. 69)
TensorBoard (p. 35)
2深度学习 AMI 开发人员指南
如何开始使用 DLAMI
入门
如何开始使用 DLAMI
入门很简单。本指南包括了关于选择适合您的 DLAMI、选择适合您的使用案例和预算的实例类型的技巧,以
及介绍您可能感兴趣的自定义设置的资源和支持 (p. 133)。
如果您刚开始使用 AWS 或 Amazon EC2,请先从 采用 Conda 的 Deep Learning AMI (p. 3) 开始。如果
您熟悉 Amazon EC2 和其他 AWS 服务(如 Amazon EMR、Amazon EFS 或 Amazon S3),并且有兴趣集
成这些服务以用于需要分布式培训或推导的项目,则在资源和支持 (p. 133)中查看是否有符合您的使用案例
的服务。
我们建议您查看选择 DLAMI (p. 3),以了解最适合您的应用程序的实例类型。
另一个选项是此快速教程:启动 AWS Deep Learning AMI (在 10 分钟内)。
下一步
选择 DLAMI (p. 3)
选择 DLAMI
您可能会发现 DLAMI 有很多选项,并且不清楚哪个选项最适合您的使用案例。本部分可以帮助您做出决定。
当我们提及 DLAMI 时,通常这实际上是围绕某个常见类型或功能的一组 AMI。有三种变量定义了这些类型
和或功能:
Conda 与 Base
CUDA 8、CUDA 9 与 CUDA 10
Amazon Linux、Ubuntu 与 Windows
本指南中的其他主题有助于进一步给您提供信息和进一步让您了解详情。
主题
采用 Conda 的 Deep Learning AMI (p. 3)
Deep Learning Base AMI (p. 4)
CUDA 安装和框架绑定 (p. 5)
DLAMI 操作系统选项 (p. 6)
后续步骤
采用 Conda 的 Deep Learning AMI (p. 3)
采用 Conda 的 Deep Learning AMI
Conda DLAMI 使用 Anaconda 虚拟环境。这些环境配置为单独安装不同的框架。它还可以让您轻松切换框
架。这对了解和体验 DLAMI 必须提供的所有框架很有好处。大多数用户会发现新的 采用 Conda 的 Deep
Learning AMI 非常适合他们。
3深度学习 AMI 开发人员指南
Base
这些“Conda”AMI 将是主要的 DLAMI。它将经常使用框架中的最新版本进行更新,并拥有最新的 GPU 驱动
程序和软件。在大多数文档中,它通常被称为 AWS Deep Learning AMI。
Ubuntu 和 Amazon Linux DLAMI 具有以下框架:Apache
MXNet、Caffe、Caffe2、Chainer、CNTK、Keras、PyTorch、TensorFlow 和 Theano
Amazon Linux 2 DLAMI 具有以下框架:Apache MXNet、Chainer、PyTorch、TensorFlow 和 Keras
稳定版本与候选版本
Conda AMI 使用每个框架中最新正式版本的优化二进制文件。不会有候选版本和实验性功能。优化取决
于框架对 Intel 的 MKL DNN 等加速技术的支持,这些技术可加快在 C5、C4 和 C3 CPU 实例类型上的训
练和推理速度。二进制文件也将被编译以支持高级 Intel 指令集,包括但不限于 AVX、AVX-2、SSE4.1 和
SSE4.2。这些指令将加快 Intel CPU 架构上向量和浮点运算的速度。此外,对于 GPU 实例类型,将使用最
新官方版本支持的任何版本更新 CUDA 和 cuDNN。
采用 Conda 的 Deep Learning AMI 会在框架首次激活时自动为您的 EC2 实例安装框架的最优化版本。有关
更多信息,请参阅 使用 采用 Conda 的 Deep Learning AMI (p. 17)。
如果要使用自定义或优化的版本选项从源安装,Deep Learning Base AMI (p. 4) 可能是更好的选择。
CUDA 支持
采用 Conda 的 Deep Learning AMI 的 CUDA 版本以及每个所支持的框架:
使用 cuDNN 7 的 CUDA 10:PyTorch、TensorFlow
使用 cuDNN 7 的 CUDA 9:Apache MXNet、Caffe2、Chainer、CNTK、Keras、Theano
使用 cuDNN 6 的 CUDA 8:Caffe
可以在 DLAMI:发行说明 (p. 142)中找到特定的框架版本号
选择这个 DLAMI 类型,或通过“后续步骤”选项了解有关其他 DLAMI 的更多信息。
采用 Conda 的 Deep Learning AMI 选项 (p. 136)
后续步骤
Deep Learning Base AMI (p. 4)
相关主题
有关使用采用 Conda 的 Deep Learning AMI 的教程,请参阅使用 采用 Conda 的 Deep Learning
AMI (p. 17)教程。
Deep Learning Base AMI
Deep Learning Base AMI 就像是一个用于深度学习的空白画布。它包含您需要的一切,直到安装特定的框
架。它将拥有您选择的 CUDA 版本。
为什么选择 Base DLAMI
该 AMI 团队对于那些想要分享深度学习项目和建立最新版本的项目贡献者非常有用。适用于那些希望推出自
己环境且有信心安装和使用最新 NVIDIA 软件的人员,从而他们可以专注于选择要安装的框架和版本。
选择这个 DLAMI 类型,或通过“后续步骤”选项了解有关其他 DLAMI 的更多信息。
4深度学习 AMI 开发人员指南
CUDA
Deep Learning Base AMI 选项 (p. 137)
后续步骤
CUDA 安装和框架绑定 (p. 5)
相关主题
使用 Deep Learning Base AMI (p. 20)
CUDA 安装和框架绑定
深度学习都非常一流,但每个框架都提供“稳定”版本。这些稳定版本可能不适用于最新的 CUDA 或 cuDNN
实施和功能。您决定怎么做? 这最终取决于您的使用案例和您需要的功能。如果您不确定,则使用最新的
采用 Conda 的 Deep Learning AMI.它具有所有框架的官方 PIP 二进制文件 ( 包含 CUDA 8、CUDA 9 和
CUDA 10),使用每个框架都支持的任何最新版本。如果您需要最新版本,并要自定义深度学习环境,请使用
Deep Learning Base AMI。
如需进一步指导,请在 稳定版本与候选版本 (p. 4) 上查看我们的指南。
选择具有 CUDA 的 DLAMI
Deep Learning Base AMI (p. 4) 具有 CUDA 8、9 和 10。
采用 Conda 的 Deep Learning AMI (p. 3) 具有 CUDA 8、9 和 10。
使用 cuDNN 7 的 CUDA 10:PyTorch
使用 cuDNN 7 的 CUDA 9:Apache MXNet、Caffe2、Chainer、CNTK、Keras、TensorFlow、Theano
使用 cuDNN 6 的 CUDA 8:Caffe
有关 DLAMI 类型和操作系统的安装选项,请参阅每个 CUDA 版本和 选项页面:
采用 CUDA 10 的 Deep Learning AMI 选项 (p. 138)
采用 CUDA 9 的 Deep Learning AMI 选项 (p. 138)
采用 CUDA 8 的 Deep Learning AMI 选项 (p. 139)
采用 Conda 的 Deep Learning AMI 选项 (p. 136)
Deep Learning Base AMI 选项 (p. 137)
可以在 DLAMI:发行说明 (p. 142)中找到特定的框架版本号
选择这个 DLAMI 类型,或通过“后续步骤”选项了解有关其他 DLAMI 的更多信息。
选择一个 CUDA 版本并在附录中查看具有该版本的完整 DLAMI 列表,或者使用“后续步骤”选项了解不同
DLAMI 的更多信息。
后续步骤
DLAMI 操作系统选项 (p. 6)
相关主题
有关在 CUDA 版本之间切换的说明,请参阅使用 Deep Learning Base AMI (p. 20)教程。
5深度学习 AMI 开发人员指南
OS
DLAMI 操作系统选项
DLAMI 针对以下列出的操作系统提供。如果您更熟悉 CentOS 或 RedHat,您将更能适应 AWS Deep
Learning AMI Amazon Linux 选项 (p. 140) 或 AWS Deep Learning AMI Amazon Linux 2 选项 (p. 141)。
否则,您可能更喜欢 AWS Deep Learning AMI,Ubuntu 选项 (p. 139)。
如果您需要 Windows 操作系统,可在此处找到几个选项:AWS Deep Learning AMI,Windows 选
项 (p. 141)。
选择其中一个操作系统并在附录中查看完整列表,或继续后续步骤,选择您的 AMI 和实例类型。
AWS Deep Learning AMI Amazon Linux 选项 (p. 140)
AWS Deep Learning AMI Amazon Linux 2 选项 (p. 141)
AWS Deep Learning AMI,Ubuntu 选项 (p. 139)
AWS Deep Learning AMI,Windows 选项 (p. 141)
如入门概述中所述,您有几个访问 DLAMI 的选项,但首先您应评估您所需的实例类型。您还应该确定您打算
使用的 AWS 区域。
后续步骤
选择 DLAMI 的实例类型 (p. 6)
选择 DLAMI 的实例类型
选择实例类型可能是另一个挑战,但是我们可以通过几个关于如何选择最佳实例的指针来让这个过程更容
易。请记住,DLAMI 是免费的,但底层的计算资源并不是。
如果您不熟悉深度学习,那么您可能需要一个具有单一 GPU 的“入门级”实例。
如果您注重预算,那么您将需要启动更小一点的实例,即看看只有 CPU 的实例。
如果您有兴趣运行训练模型来进行推理和预测(而不是训练),则您可能需要运行 Amazon Elastic
Inference。这将使您能够访问一部分 GPU,因此,您可以经济地进行扩展。对于大量推理服务,您可能会
发现具有大量内存的 CPU 实例(甚至是这些实例的集群)是更佳的解决方案。
如果您有兴趣训练包含大量数据的模型,那么您可能需要更大的实例,甚至是 GPU 实例集群。
DLAMI 并非在每个区域都可用,但可以将 DLAMI 复制到您选择的区域。有关更多信息,请参阅 复制 AMI。
每个区域支持不同范围的实例类型,而且不同区域的实例类型成本通常稍有不同。在每个 DLAMI 主页面上,您将看到一个实例成本列表。请注意区域选择列表,并确保您选择一个靠近您或您的客户的区域。如果您打
算使用多个 DLAMI 且可能创建一个集群,请确保为集群中的所有节点使用相同的区域。
有关实例更多详细信息,请查看 EC2 实例类型。
有关区域的更多信息,请访问 EC2 区域。
因此,在考虑到所有这些要点后,请记下最适用于您的使用案例和预算的实例类型。本指南中的其他主题有
助于进一步给您提供信息和进一步让您了解详情。
Important
Deep Learning AMI 包含由 NVIDIA Corporation 开发、拥有或提供的驱动程序、软件或工具包。您
同意仅在包含 NVIDIA 硬件的 Amazon EC2 实例上使用这些 NVIDIA 驱动程序、软件或工具包。
主题
推荐的 GPU 实例 (p. 7)
6深度学习 AMI 开发人员指南
GPU
推荐的 CPU 实例 (p. 7)
DLAMI 的定价 (p. 7)
后续步骤
推荐的 GPU 实例 (p. 7)
推荐的 GPU 实例
GPU 实例被推荐用于最深度的学习目的。在 GPU 实例上训练新模型比 CPU 实例更快。您可以在有多个
GPU 实例的情况下以线性方式进行缩放,也可以在具有 GPU 的多个实例上使用分布式训练。
Amazon EC2 P3 实例 最多具有 8 个 NVIDIA Tesla V100 GPU。
Amazon EC2 P2 实例 最多具有 16 个 NVIDIA NVIDIA K80 GPU。
Amazon EC2 G3 实例 最多具有 4 个 NVIDIA Tesla M60 GPU。
查看 EC2 实例类型 并选择“加速计算”来查看不同的 GPU 实例选项。
后续步骤
推荐的 CPU 实例 (p. 7)
推荐的 CPU 实例
无论您是在关注预算,了解深度学习,还是只是想运行一项预测服务,您在 CPU 类别中都有许多经济实惠
的选项。某些框架利用了 Intel 的 MKL DNN,这将加快 C5 (并非在所有区域中都可用)、C4 和 C3 CPU 实例
类型上的训练和推理速度。它还将加快 GPU 实例类型上的推理。
Amazon EC2 C5 实例最多具有 72 个 Intel vCPU。
Amazon EC2 C4 实例拥有多达 36 个 Intel vCPU。
查看 EC2 实例类型并查找计算优化来查看其他 CPU 实例选项。
Note
C5 实例 (并未在所有区域提供) 在科学建模、批处理、分布式分析、高性能计算 (HPC) 和机器深度
学习推理方面表现出色。
Important
如果您计划使用 Caffe,则应改为选择一个 GPU 实例。在 DLAMI 上,Caffe 仅适用于 GPU 支持,无法在 CPU 模式下运行。
后续步骤
DLAMI 的定价 (p. 7)
DLAMI 的定价
DLAMI 是免费的,但是,您仍然需要承担 Amazon EC2 或其他 AWS 服务成本。包含的深度学习框架是免费
的,每个都有自己的开源许可证。NVIDIA 的 GPU 软件是免费的,也有自己的许可证。
为何说它既免费,也不免费呢? 什么是“Amazon EC2 或其他 AWS 服务成本”?
这是一个常见的问题。Amazon EC2 上的一些实例类型被标记为免费。这些实例通常较小,但仍可以在这些
免费的实例上运行 DLAMI。这意味着当您只使用该实例的容量时,它是完全免费的。如果您需要一个功能更
7深度学习 AMI 开发人员指南
定价
强大、具有更多 CPU 核心、更多磁盘空间、更多 RAM 和一个或多个 GPU 的实例,那么这些实例很可能不
在免费套餐实例类中。这意味着,您将需要支付这些成本。一种想法是软件仍然是免费的,但是您必须为您
使用的底层硬件付费。
看看选择 DLAMI 的实例类型 (p. 6)了解更多关于可选择的实例大小的相关信息,以及每种类型的实例可
以预期完成的事情。
下一步
启动和配置 DLAMI (p. 9)
8深度学习 AMI 开发人员指南
步骤 1:启动 DLAMI
启动和配置 DLAMI
如果您在这里,您应该已经有了想要启动哪个 AMI 的想法。如果没有,请使用从整个入门 (p. 3)中找到的
AMI 选择指南选择一个 DLAMI,或使用附录部分 AMI 选项 (p. 136)中的完整 AMI 列表。
您还应该知道您要选择哪个实例类型和区域。否则,请浏览选择 DLAMI 的实例类型 (p. 6)。
Note
我们将在示例中使用 p2.xlarge 作为默认实例类型。只需将此替换为您心中的任何实例类型。
Important
如果您计划使用 Elastic Inference,您必须在启动 DLAMI 之前完成 Elastic Inference 设置。
主题
步骤 1:启动 DLAMI (p. 9)
EC2 控制台 (p. 9)
Marketplace 搜索 (p. 10)
步骤 2:连接到 DLAMI (p. 10)
步骤 3:保护 DLAMI 实例 (p. 11)
步骤 4:测试您的 DLAMI (p. 11)
清除 (p. 11)
设置 Jupyter Notebook 服务器 (p. 11)
步骤 1:启动 DLAMI
Note
在本演练中,我们可能会针对 Deep Learning AMI (Ubuntu) 进行引用。即使您选择其他 DLAMI,您
也应能按照本指南进行操作。
启动实例
1. 您可以通过几种方式启动 DLAMI。请选择一种:
EC2 控制台 (p. 9)
Marketplace 搜索 (p. 10)
Tip
CLI 选项:如果您选择使用 AWS CLI 启动 DLAMI,您将需要 AMI 的 ID、区域和实例类型、以
及您的安全令牌信息。请确保您已拥有 AMI 和实例 ID。如果您尚未设置 AWS CLI,请首先按
照安装 AWS 命令行接口指南进行设置。
2. 如果您已经完成了上述某个选项的步骤,请等待实例准备好。这通常仅需要几分钟时间。您可以在 EC2
控制台中验证实例的状态。
EC2 控制台
1. 打开 EC2 控制台.
2. 请注意最顶层的导航中的当前区域。如果这不是您所需的 AWS 区域,请更改此选项,然后再继续。有
关更多信息,请参阅 EC2 区域。
9深度学习 AMI 开发人员指南
Marketplace 搜索
3. 选择 Launch Instance。
4. 根据名称搜索所需的实例:
1. 选择 AWS Marketplace,或...
2. 选择 QuickStart。 此处只会列出一部分可用的 DLAMI。
3. 搜索 Deep Learning AMI。只查找子类型,例如所需的操作系统,或基础、Conda、源等。
4. 浏览这些选项,并在选择时单击 Select。
5. 检查详细信息,然后选择 Continue。
6. 选择一个实例类型。
Note
如果您要使用 Elastic Inference (EI),请单击 Configure Instance Details (配置实例详细信息),选择 Add an Amazon EI accelerator (添加 Amazon EI 加速器),然后选择 Amazon EI 加速器的
大小。
7. 选择 Review and Launch。
8. 检查详细信息和定价。选择 Launch。
Tip
查看 开始使用 AWS Deep Learning AMI 进行深度学习,这里有包含屏幕截图的演练!
下一步
步骤 2:连接到 DLAMI (p. 10)
Marketplace 搜索
1. 浏览 AWS Marketplace 并搜索 AWS Deep Learning AMI。
2. 浏览这些选项,并在选择时单击 Select。
3. 检查详细信息,然后选择 Continue。
4. 浏览详细信息,并记录 Region。如果这不是您所需的 AWS 区域,请更改此选项,然后再继续。有关更
多信息,请参阅 EC2 区域。
5. 选择一个实例类型。
6. 选择一个密钥对,可以使用您的默认密钥对,也可以创建新密钥对。
7. 检查详细信息和定价。
8. 选择 Launch with 1-Click。
下一步
步骤 2:连接到 DLAMI (p. 10)
步骤 2:连接到 DLAMI
从客户端(Windows、MacOS 或 Linux)连接到您启动的 DLAMI。有关更多信息,请参阅 Amazon EC2 用
户指南(适用于 Linux 实例) 中的连接到您的 Linux 实例。
如果在登录后您希望执行 Jupyter 设置,请在手边保留一份 SSH 登录命令。您将使用这个命令的各种变体连
接到 Jupyter 网页。
下一步
10深度学习 AMI 开发人员指南
步骤 3:保护 DLAMI 实例
步骤 3:保护 DLAMI 实例 (p. 11)
步骤 3:保护 DLAMI 实例
一旦有修补程序和更新推出便立即应用,从而始终保持操作系统和其他已安装软件为最新。
如果您使用的是 Amazon Linux 或 Ubuntu,则当您登录到您 DLAMI 时,便会收到更新通知(如果有)并且
会看到更新说明。有关 Amazon Linux 维护的更多信息,请参阅更新实例软件。对于 Ubuntu 实例,请参阅
官方 Ubuntu 文档。
在 Windows 上,定期检查 Windows Update 有无软件和安全更新。如果您愿意,可以自动应用更新。
Important
有关 Meltdown 和 Spectre 漏洞以及如何修补操作系统解决以这些问题的信息,请参阅安全公告
AWS-2018-013。
步骤 4:测试您的 DLAMI
根据您的 DLAMI 版本不同,您的测试选项也会不同:
采用 Conda 的 Deep Learning AMI (p. 3) – 转到 使用 采用 Conda 的 Deep Learning AMI (p. 17)。
Deep Learning Base AMI (p. 4) – 引用所需框架的安装文档。
您还可以创建 Jupyter 笔记本电脑,试用教程,或开始使用 Python 编码。有关更多信息,请参阅设置
Jupyter Notebook 服务器 (p. 11)。
清除
当您不再需要 DLAMI 时,您可以将其停止或终止,以避免产生持续的费用。停止的实例会保留,以便您可以
稍后再继续。您的配置、文件和其他非易失性信息都存储在 Amazon S3 上的卷中。在实例停止的情况下,将收取您小额 S3 费用来保留该卷,但在计算资源处于停止状态时将不再对其收取费用。当您重新启动实例
时,它将挂载该卷,且您的数据会重新恢复。如果您终止实例,它将消失,且您将无法重新启动它。您的
数据实际仍驻留在 S3 中,因此,为了防止任何进一步的费用,您还需要删除该卷。有关更多说明,请参阅
Amazon EC2 用户指南(适用于 Linux 实例) 中的 终止您的实例。
设置 Jupyter Notebook 服务器
Jupyter Notebook 是一个 Web 应用程序,可以让您使用 Web 浏览器管理笔记本文档。
要设置 Jupyter Notebook,您需要完成以下操作:
在您的 Amazon EC2 实例上配置 Jupyter Notebook 服务器。
配置您的客户端,以便您可以连接到 Jupyter Notebook 服务器。我们提供适用于 Windows、macOS 和
Linux 客户端的配置说明。
登录 Jupyter Notebook 服务器,测试设置。
有关 Jupyter Notebook 的更多信息,请参阅 Jupyter。
主题
保护您的 Jupyter 服务器 (p. 12)
11深度学习 AMI 开发人员指南
保护 Jupyter
启动 Jupyter Notebook 服务器 (p. 12)
配置客户端以连接到 Jupyter 服务器 (p. 13)
登录 Jupyter Notebook 服务器进行测试 (p. 14)
保护您的 Jupyter 服务器
下面我们使用 SSL 和自定义密码来设置 Jupyter。
连接到 Amazon EC2 实例,然后完成以下步骤。
配置 Jupyter 服务器
1. Jupyter 提供了一个密码实用工具。运行以下命令,在命令提示符处输入您的首选密码。
jupyter notebook password
输出类似如下:
Enter password:
Verify password:
[NotebookPasswordApp] Wrote hashed password to homeubuntu.jupyter
jupyter_notebook_config.json
2. 创建自签名 SSL 证书。按照提示填写您认为适当的区域。您的答案将不会影响证书的功能性。
cd ~
mkdir ssl
cd ssl
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout mykey.key -out mycert.pem
Note
您可能希望创建一个常规的 SSL 证书,该证书为第三方签名,且不会导致浏览器向您发出安全警
告。此过程涉及内容较多。访问 Jupyter 的文档以了解更多信息。
下一步
启动 Jupyter Notebook 服务器 (p. 12)
启动 Jupyter Notebook 服务器
现在,您可以通过登录实例,然后运行以下命令来启动 Jupyter 服务器,该命令将使用您在上一步中创建的
SSL 证书。
jupyter notebook --certfile=~sslmycert.pem --keyfile ~sslmykey.key
启动服务器后,即可通过 SSH 隧道从您的客户端计算机连接到服务器。当服务器运行时,您将看到来自
Jupyter 的一些输出,这些输出证实服务器正在运行。此时,请忽略称您可以通过本地主机 URL 访问服务器
的标注,因为这其实不可以,直到您创建了隧道为止。
Note
当您使用 Jupyter Web 界面切换框架时,Jupyter 将处理切换环境。更多有关信息见于通过 Jupyter
切换环境 (p. 22)。
下一步
12深度学习 AMI 开发人员指南
配置客户端
配置客户端以连接到 Jupyter 服务器 (p. 13)
配置客户端以连接到 Jupyter 服务器
配置您的客户端连接到 Jupyter Notebook 服务器后,您可以在您的工作区中的服务器上创建和访问笔记本,并在服务器上运行深度学习代码。
有关配置信息,请选择以下链接之一。
主题
配置 Windows 客户端 (p. 13)
配置 Linux 或 macOS 客户端 (p. 13)
配置 Windows 客户端
准备
请确保您拥有设置 SSH 隧道所需的以下信息:
Amazon EC2 实例的公有 DNS 名称。您可以在 EC2 控制台中找到公有 DNS 名称。
私有密钥文件的密钥对。有关访问密钥对的更多信息,请参阅 Amazon EC2 用户指南(适用于 Linux 实
例) 中的 Amazon EC2 密钥对。
从 Windows 客户端使用 Jupyter 笔记本
请参阅这些关于从 Windows 客户端连接到您的 Amazon EC2 实例的指南。
1. 排查实例的连接问题
2. 使用 PuTTY 从 Windows 连接到 Linux 实例
要创建连接 Jupyter 服务器的隧道,建议先在您的 Windows 客户端上安装 Git Bash,然后按照 Linux
macOS 客户端说明操作。不过,您可以使用任何方法打开包含端口映射的 SSH 隧道。请参阅 Jupyter 的文
档了解更多信息。
下一步
配置 Linux 或 macOS 客户端 (p. 13)
配置 Linux 或 macOS 客户端
1. 打开终端。
2. 运行以下命令,将本地端口 8888 上的所有请求转发到远程 Amazon EC2 实例上的端口 8888。通过替
换密钥位置来更新命令,以访问 Amazon EC2 实例和您的 Amazon EC2 实例的公有 DNS 名称。注意,对于 Amazon Linux AMI,用户名是 ec2-user 而非 ubuntu。
ssh -i ~mykeypair.pem -N -f -L 8888:localhost:8888 ubuntu@ec2----
.compute-1.amazonaws.com
该命令在您的客户端与运行 Jupyter Notebook 服务器的远程 Amazon EC2 实例之间打开一个隧道。
下一步
登录 Jupyter Notebook 服务器进行测试 (p. 14)
13深度学习 AMI 开发人员指南
登录 Jupyter Notebook 服务器
登录 Jupyter Notebook 服务器进行测试
现在,您已准备就绪,可登录到 Jupyter Notebook 服务器。
接下来,通过浏览器测试与服务器的连接。
1. 在浏览器的地址栏中,键入以下 URL,或单击此链接:https:localhost:8888
2. 借助自签名 SSL 证书,您的浏览器会警告和提示您避免继续访问网站。
由于这是您自己设置的,所以可以安全地继续。根据您的浏览器情况,有可能出现“高级”、“显示详细信
息”等类似按钮。
14深度学习 AMI 开发人员指南
登录 Jupyter Notebook 服务器
单击此消息,然后单击“proceed to localhost”(前进到本地主机)链接。如果连接成功,则会看到
Jupyter Notebook 服务器网页。此时,系统将要求您提供先前设置的密码。
15深度学习 AMI 开发人员指南
登录 Jupyter Notebook 服务器
现在,您可以访问 DLAMI 上运行的 Jupyter Notebook 服务器了。您可以创建新的笔记本或运行提供
的教程 (p. 22)。
16深度学习 AMI 开发人员指南
Conda DLAMI
使用 DLAMI
主题
使用 采用 Conda 的 Deep Learning AMI (p. 17)
使用 Deep Learning Base AMI (p. 20)
运行 Jupyter 笔记本电脑教程 (p. 21)
教程 (p. 22)
以下部分介绍如何使用 采用 Conda 的 Deep Learning AMI 切换环境、从每个框架运行示例代码以及运行
Jupyter,以便您可以尝试不同的笔记本教程。
使用 采用 Conda 的 Deep Learning AMI
主题
采用 Conda 的 Deep Learning AMI 简介 (p. 17)
步骤 1:登录您的 DLAMI (p. 17)
步骤 2:启动 MXNet Python 3 环境 (p. 18)
步骤 3:测试某些 MXNet 代码 (p. 19)
步骤 4:切换到 TensorFlow 环境 (p. 19)
删除环境 (p. 20)
采用 Conda 的 Deep Learning AMI 简介
Conda 是一个开源程序包管理系统和环境管理系统,在 Windows、macOS 和 Linux 上运行。Conda 快速安
装、运行和更新程序包及其依赖项。Conda 可轻松创建、保存、加载和切换本地计算机上的环境。
采用 Conda 的 Deep Learning AMI 已完成配置,以便让您轻松切换深度学习环境。以下说明为您介绍与
conda 相关的一些基本命令。它们还可以帮助您验证框架的基本导入正常运行,并且您可以使用框架运行一
些简单操作。然后,您可以继续查看随 DLAMI 提供的更全面的教程,或者每个框架的项目站点上提供的框架
示例。
步骤 1:登录您的 DLAMI
登录服务器后,您会看到服务器的“每日消息”(MOTD),它介绍了可以用来切换不同深度学习框架的各种
Conda 命令。以下是示例 MOTD。由于新版本 DLAMI 的发布,您的特定 MOTD 可能不同。
=============================================================================
__| __|_ )
_| ( Deep Learning AMI (Ubuntu)
___|\___|___|
=============================================================================
Welcome to Ubuntu 16.04.4 LTS (GNULinux 4.4.0-1062-aws x86_64v)
Please use one of the following commands to start the required environment with the
framework of your choice:
17深度学习 AMI 开发人员指南
步骤 2:启动 MXNet Python 3 环境
for MXNet(+Keras2) with Python3 (CUDA 9.0 and Intel MKL-DNN)
_______________________________ source activate mxnet_p36
for MXNet(+Keras2) with Python2 (CUDA 9.0 and Intel MKL-DNN)
_______________________________ source activate mxnet_p27
for TensorFlow(+Keras2) with Python3 (CUDA 9.0 and Intel MKL-DNN) _____________________
source activate tensorflow_p36
for TensorFlow(+Keras2) with Python2 (CUDA 9.0 and Intel MKL-DNN) _____________________
source activate tensorflow_p27
for Theano(+Keras2) with Python3 (CUDA 9.0) _______________________________________________
source activate theano_p36
for Theano(+Keras2) with Python2 (CUDA 9.0) _______________________________________________
source activate theano_p27
for PyTorch with Python3 (CUDA 9.0 and Intel MKL) ________________________________________
source activate pytorch_p36
for PyTorch with Python2 (CUDA 9.0 and Intel MKL) ________________________________________
source activate pytorch_p27
for CNTK(+Keras2) with Python3 (CUDA 9.0 and Intel MKL-DNN)
_________________________________ source activate cntk_p36
for CNTK(+Keras2) with Python2 (CUDA 9.0 and Intel MKL-DNN)
_________________________________ source activate cntk_p27
for Caffe2 with Python2 (CUDA 9.0) ________________________________________________________
source activate caffe2_p27
for Caffe with Python2 (CUDA 8.0)
__________________________________________________________ source activate caffe_p27
for Caffe with Python3 (CUDA 8.0)
__________________________________________________________ source activate caffe_p35
for Chainer with Python2 (CUDA 9.0 and Intel iDeep) ______________________________________
source activate chainer_p27
for Chainer with Python3 (CUDA 9.0 and Intel iDeep) ______________________________________
source activate chainer_p36
for base Python2 (CUDA 9.0)
__________________________________________________________________ source activate python2
for base Python3 (CUDA 9.0)
__________________________________________________________________ source activate python3
每个 Conda 命令具有以下模式:
source activate framework_python-version
例如,您可能会看到 for MXNet(+Keras1) with Python3 (CUDA 9) _____________________
source activate mxnet_p36,这意味着该环境具有 MXNet、Keras 1、Python 3 和 CUDA 9。要激活
此环境,您可以使用以下命令:
source activate mxnet_p36
此命令的另一个变体是:
source activate mxnet_p27
这意味着该环境具有 MXNet 和 Python 2 (使用 Keras 1 和 CUDA 9)。
步骤 2:启动 MXNet Python 3 环境
我们首先测试 MXNet,以便让您了解它有多么简单。
Note
在启动您的第一个 Conda 环境时,请在其加载期间耐心等待。采用 Conda 的 Deep Learning AMI
会在框架首次激活时自动为您的 EC2 实例安装框架的最优化版本。您不应期望后续的延迟。
18深度学习 AMI 开发人员指南
步骤 3:测试某些 MXNet 代码
激活适用于 Python 3 的 MXNet 虚拟环境。
source activate mxnet_p36
这将激活使用 Python 3 的 MXNet 环境。或者,您也可以激活 mxnet_p27,以构建使用 Python 2 的环境。
步骤 3:测试某些 MXNet 代码
要测试您的安装,请使用 Python 编写 MXNet 代码,以使用 NDArray API 创建并打印数组。有关更多信
息,请参阅 NDArray API。
1. 启动 iPython 终端。
(mxnet_p36) ipython
2. 导入 MXNet。
import mxnet as mx
您可能会看到一条关于第三方软件包的警告消息。您可以忽略它。
3. 创建一个 5x5 矩阵、一个 NDArray 实例,将元素初始化为 0。打印数组。
mx.ndarray.zeros((5,5)).asnumpy
验证结果。
array([[ 0., 0., 0., 0., 0.],[ 0., 0., 0., 0., 0.],[ 0., 0., 0., 0., 0.],[ 0., 0., 0., 0., 0.],[ 0., 0., 0., 0., 0.]], dtype=float32)
您可以在 MXNet 教程部分找到 MXNet 的更多示例。
步骤 4:切换到 TensorFlow 环境
现在我们将切换到 TensorFlow! 如果您仍然处于 iPython 控制台中,则使用 quit,然后准备切换环境。
1. 激活适用于 Python 3 的 TensorFlow 虚拟环境。
source activate tensorflow_p36
2. 启动 iPython 终端。
(tensorflow_36) ipython
3. 运行快速 TensorFlow 程序。
import tensorflow as tf
hello = tf.constant('Hello, TensorFlow!')
sess = tf.Session
19深度学习 AMI 开发人员指南
删除环境
print(sess.run(hello))
您应该会看到“Hello, Tensorflow!” 现在,您已测试了两种不同的深度学习框架,您已了解如何切换框架。
Tip
有关已知问题的信息,请参阅发行说明:
Deep Learning AMI (Ubuntu) 已知问题 (p. 162)
Deep Learning AMI (Amazon Linux) 已知问题 (p. 159)
后续步骤
运行 Jupyter 笔记本电脑教程 (p. 21)
删除环境
注意:如果您用尽了 DLAMI 上的空间,则可以选择卸载不用的 Conda 软件包:
conda env list
conda env remove –name
使用 Deep Learning Base AMI
使用 Deep Learning Base AMI
Base AMI 附带 GPU 驱动程序基础平台,以及可用来部署您自己的自定义深度学习环境的加速库。默认情况
下,该 AMI 配置为采用 NVIDIA CUDA 10 环境。但是,您也可以切换到 CUDA 9 或 CUDA 8 环境。有关如
何执行此操作,请参阅以下说明。
配置 CUDA 版本
您可以使用以下 bash 命令选择并验证特定 CUDA 版本。
CUDA 10:
sudo rm usrlocalcuda
sudo ln -s usrlocalcuda-10.0 usrlocalcuda
CUDA 9.2:
sudo rm usrlocalcuda
sudo ln -s usrlocalcuda-9.2 usrlocalcuda
CUDA 9:
sudo rm usrlocalcuda
sudo ln -s usrlocalcuda-9.0 usrlocalcuda
CUDA 8:
20深度学习 AMI 开发人员指南
Jupyter 笔记本电脑
sudo rm usrlocalcuda
sudo ln -s usrlocalcuda-8.0 usrlocalcuda
Tip
然后,您可以通过运行 NVIDIA 的 deviceQuery 程序验证 CUDA 版本。
cd usrlocalcudasamples1_UtilitiesdeviceQuery
sudo make
.deviceQuery
运行 Jupyter 笔记本电脑教程
每个深度学习项目的源代码都附带了教程和示例,大多数情况下,它们可以在任何 DLAMI 上运行。如果您选
择了 采用 Conda 的 Deep Learning AMI (p. 3),那么您将获得一些已经建立并准备好尝试的精选教程的额外
好处。
Important
要运行安装在 DLAMI 上的 Jupyter 笔记本电脑教程,您需要设置 Jupyter Notebook 服务
器 (p. 11)。
Jupyter 服务器运行后,您可以通过 Web 浏览器运行这些教程。如果您正在运行 采用 Conda 的 Deep
Learning AMI 或者如果您已经建立了 Python 环境,则可以从 Jupyter 笔记本界面切换 Python 内核。在尝试
运行特定于框架的教程之前,请选择合适的内核。我们为 采用 Conda 的 Deep Learning AMI 用户提供了更
多这方面的示例。
Note
许多教程需要一些额外 Python 模块,它们在您的 DLAMI 上可能尚未设置。如果您收到类似 xyz
module not found 的错误,请登录到 DLAMI,激活环境(如上所述),然后安装必要的模
块。
Tip
深度学习教程和示例通常依赖于一个或多个 GPU。如果您的实例类型没有 GPU,您可能需要更改
一些示例代码才能使其运行。
导航已安装的教程
一旦您登录到 Jupyter 服务器且可以看到教程目录(仅限 采用 Conda 的 Deep Learning AMI 上)时,也会
看到按每个框架名称排列的教程文件夹。如果您没有看到某个框架,则表明在您当前 DLAMI 上该框架的教程
不可用。单击框架名称以查看列出的教程,然后单击一个教程,将其启动。
在 采用 Conda 的 Deep Learning AMI 上第一次运行笔记本电脑时,它会想知道您想使用哪个环境。它会提
示您从列表中进行选择。每个环境都根据以下模式命名:
Environment (conda_framework_python-version)
例如,您可能会看到 Environment (conda_mxnet_p36),这意味着该环境具有 MXNet 和 Python 3。您
也可能会看到 Environment (conda_mxnet_p27),这意味着该环境具有 MXNet 和 Python 2。
21深度学习 AMI 开发人员指南
通过 Jupyter 切换环境
Tip
如果您想知道哪个版本的 CUDA 处于活动状态,一种查看方法是在首次登录到 DLAMI 时在 MOTD
中查看。
通过 Jupyter 切换环境
如果您决定尝试一个不同框架的教程,一定要验证当前正在运行的内核。此信息可以在 Jupyter 界面
的右上方看到,就在注销按钮的下方。您可以在任何打开的笔记本电脑上更改内核,方法是依次单击
Kernel、Change Kernel 菜单项,然后单击正运行的笔记本电脑适合的环境。
此时您需要重新运行任何单元,因为内核中的更改将会擦除之前运行的任何内容的状态。
Tip
在框架之间进行切换可能很有趣而且很有教育意义,但是可能导致耗尽内存。如果您开始遇到错
误,请查看运行 Jupyter 服务器的终端窗口。这里包含有用的消息和错误记录,您可能会看到内存
不足的错误。要解决这一问题,您可以转到 Jupyter 服务器的主页中,单击 Running 选项卡,然后
为每个教程单击 Shutdown,因为这些教程可能仍然在后台运行,导致耗尽了所有内存。
后续步骤
有关每个框架的更多示例和示例代码,请单击 Next 或继续 Apache MXNet (incubating) (p. 23)。
教程
以下是有关如何使用 采用 Conda 的 Deep Learning AMI 的软件的教程。
主题
10 分钟教程 (p. 22)
激活框架 (p. 22)
调试和可视化 (p. 33)
分布式训练 (p. 36)
GPU 监控和优化 (p. 52)
推理 (p. 57)
将框架用于 ONNX (p. 60)
模型处理 (p. 68)
10 分钟教程
启动 AWS Deep Learning AMI (在 10 分钟内)
在 Amazon EC2 上使用 AWS Deep Learning Containers 训练深度学习模型(10 分钟)
激活框架
以下是 采用 Conda 的 Deep Learning AMI 上安装的深度学习框架。单击某个框架即可了解如何将其激活。
主题
22深度学习 AMI 开发人员指南
激活框架
Apache MXNet (incubating) (p. 23)
Caffe2 (p. 24)
Chainer (p. 25)
CNTK (p. 26)
Keras (p. 27)
PyTorch (p. 28)
TensorFlow (p. 30)
TensorFlow with Horovod (p. 31)
Theano (p. 32)
Apache MXNet (incubating)
激活 MXNet
本教程介绍如何在运行 采用 Conda 的 Deep Learning AMI (DLAMI on Conda) 的实例上激活 MXNet 并运行
MXNet 程序。
当框架的稳定的 Conda 程序包发布时,它会在 DLAMI 上进行测试并预安装。如果您希望运行最新的、未经
测试的每日构建版本,您可以手动安装 MXNet 的每日构建版本(试验) (p. 23)。
在 DLAMI with Conda 上运行 MXNet
1. 要激活该框架,请打开 DLAMI with Conda 的 Amazon Elastic Compute Cloud (Amazon EC2) 实例。
对于使用 CUDA 9.0 和 MKL-DNN 的 Python 3 上的 MXNet 和 Keras 2,运行以下命令:
source activate mxnet_p36
对于使用 CUDA 9.0 和 MKL-DNN 的 Python 2 上的 MXNet 和 Keras 2,运行以下命令:
source activate mxnet_p27
2. 启动 iPython 终端。
(mxnet_p36) ipython
3. 运行快速 MXNet 程序。创建一个 5x5 矩阵、一个 NDArray 实例,将元素初始化为 0。打印数组。
import mxnet as mx
mx.ndarray.zeros((5,5)).asnumpy
4. 验证结果。
array([[ 0., 0., 0., 0., 0.],[ 0., 0., 0., 0., 0.],[ 0., 0., 0., 0., 0.],[ 0., 0., 0., 0., 0.],[ 0., 0., 0., 0., 0.]], dtype=float32)
安装 MXNet 的每日构建版本(试验)
您可以将最新的 MXNet 工作版本安装到您的 采用 Conda 的 Deep Learning AMI 上的任一或两个 MXNet
Conda 环境。
23深度学习 AMI 开发人员指南
激活框架
从每日构建版本安装 MXNet
1. ? 对于 Python 3 MXNet 环境,请运行以下命令:
source activate mxnet_p36
对于 Python 2 MXNet 环境,请运行以下命令:
source activate mxnet_p27
2. 删除当前安装的 MXNet。
Note
其余步骤假定您使用的是 mxnet_p36 环境。
(mxnet_p36) pip uninstall mxnet-cu90mkl
3. 安装 MXNet 的最新的每日构建版本。
(mxnet_p36) pip install --pre mxnet-cu90mkl
4. 要验证您是否已成功安装最新的每日构建版本,请启动 IPython 终端并检查 MXNet 版本。
(mxnet_p36) ipython
import mxnet
print (mxnet.__version__)
输出应打印 MXNet 的最新稳定版本。
更多教程
您可以在 DLAMI 主目录的 采用 Conda 的 Deep Learning AMI 教程文件夹中找到更多教程。
1. 将 Apache MXNet for Inference 与 ResNet 50 模型结合使用 (p. 58)
2. 将适用于推理的 Apache MXNet 与 ONNX 模型结合使用 (p. 57)
3. 适用于 Apache MXNet 的模型服务器 (MMS) (p. 68)
有关更多教程和示例,请参阅该框架的官方 Python 文档、适用于 MXNet 的 Python API 或 Apache MXNet
网站。
Caffe2
Caffe2 教程
要激活框架,请按照您的 采用 Conda 的 Deep Learning AMI 上的这些说明进行操作。
只有使用 CUDA 9 和 cuDNN 7 的 Python 2 选项:
source activate caffe2_p27
启动 iPython 终端。
24深度学习 AMI 开发人员指南
激活框架
(caffe2_p27) ipython
运行快速 Caffe2 程序。
from caffe2.python import workspace, model_helper
import numpy as np
Create random tensor of three dimensions
x = np.random.rand(4, 3, 2)
print(x)
print(x.shape)
workspace.FeedBlob(my_x, x)
x2 = workspace.FetchBlob(my_x)
print(x2)
您应该会看到系统输出初始 numpy 随机数组,然后这些数组加载到了 Caffe2 blob 中。请注意,加载之后,它们是相同的。
更多教程
如需查看更多教程和示例,请参阅该框架的官方 Python 文档、Python API for Caffe2 和 Caffe2 网站。
Chainer
Chainer 是一种基于 Python 的灵活框架,用于轻松直观地编写复杂的神经网络架构。利用 Chainer,您可以
轻松使用多 GPU 实例进行训练。Chainer 还会自动记录结果、图表损失和精度并生成用于使用计算图来可视
化神经网络的输出。Chainer 包含在 采用 Conda 的 Deep Learning AMI (DLAMI with Conda) 中。
激活 Chainer
1. 连接到正在运行 采用 Conda 的 Deep Learning AMI 的实例。有关如何选择或连接到实例,请参阅the
section called “实例选择” (p. 6)或 Amazon EC2 文档。
2. ? 激活 Python 3 Chainer 环境:
source activate chainer_p36
激活 Python 2 Chainer 环境:
source activate chainer_p27
3. 启动 iPython 终端:
(chainer_p36) ipython
4. 测试导入 Chainer 以验证其是否运行正常:
import chainer
您可能会看到几条警告消息,但没有错误。
更多信息
请尝试有关Chainer (p. 36) 的教程。
25深度学习 AMI 开发人员指南
激活框架
您之前下载的位于源内的 Chainer 示例文件夹包含更多示例。请试用这些示例以了解其性能。
要了解有关 Chainer 的更多信息,请参阅 Chainer 文档网站。
CNTK
激活 CNTK
本教程介绍如何在运行 采用 Conda 的 Deep Learning AMI (DLAMI on Conda) 的实例上激活 CNTK 并运行
CNTK 程序。
当框架的稳定的 Conda 程序包发布时,它会在 DLAMI 上进行测试并预安装。如果您希望运行最新的、未经
测试的每日构建版本,您可以手动安装 CNTK 的每日构建版本(试验) (p. 26)。
在 DLAMI with Conda 上运行 CNTK
1. 要激活 CNTK,请打开 DLAMI with Conda 的 Amazon Elastic Compute Cloud (Amazon EC2) 实例。
对于使用 CUDA 9 和 cuDNN 7 的 Python 3:
source activate cntk_p36
对于使用 CUDA 9 和 cuDNN 7 的 Python 2:
source activate cntk_p27
2. 启动 iPython 终端。
(cntk_p36) ipython
3. ? 如果您具有 CPU 实例,请运行此快速 CNTK 程序。
import cntk as C
C.__version__
c = C.constant(3, shape=(2,3))
c.asarray
您应该看到 CNTK 版本,然后输出一个 2x3 的 3 数组。
如果您有 GPU 实例,可以使用以下代码示例对其进行测试。如果 CNTK 可以访问 GPU,则 True
的结果就是您所期望的。
from cntk.device import try_set_default_device, gpu
try_set_default_device(gpu(0))
安装 CNTK 的每日构建版本(试验)
您可以将最新的 CNTK 版本安装到 采用 Conda 的 Deep Learning AMI 上的任一或两个 CNTK Conda 环
境。
从每日构建安装 CNTK
1. ? 对于使用 CUDA 9.0 和 MKL-DNN 的 Python 3 上的 CNTK 和 Keras 2,运行以下命令:
source activate cntk_p36
26深度学习 AMI 开发人员指南
激活框架
对于使用 CUDA 9.0 和 MKL-DNN 的 Python 2 上的 CNTK 和 Keras 2,运行以下命令:
source activate cntk_p27
2. 其余步骤假定您使用的是 cntk_p36 环境。删除当前安装的 CNTK。
(cntk_p36) pip uninstall cntk
3. 要安装 CNTK 每日构建,您首先需要从 CNTK 每日构建网站查找您要安装的版本。
4. ? (适用于 GPU 实例的选项)- 要安装每日构建版本,您将使用以下内容,从而在所需的构建版本中
进行替换:
(cntk_p36) pip install https:cntk.aiPythonWheelGPUlatest-nightly-build
将上一条命令中的 URL 替换为您的当前 Python 环境的 GPU 版本。
(适用于 CPU 实例的选项)- 要安装每日构建版本,您将使用以下内容,从而在所需的构建版本中
进行替换:
(cntk_p36) pip install https:cntk.aiPythonWheelCPU-Onlylatest-nightly-build
将上一条命令中的 URL 替换为您的当前 Python 环境的 CPU 版本。
5. 要验证您已成功安装最新的每日构建版本,请启动 IPython 终端并检查 CNTK 的版本。
(cntk_p36) ipython
import cntk
print (cntk.__version__)
输出应类似于以下内容:2.6-rc0.dev20181015
更多教程
有关更多教程和示例,请参阅该框架的官方 Python 文档、Python API for CNTK 或 CNTK 网站。
Keras
Keras 教程
1. 要激活此框架,请在您的the section called “Conda DLAMI” (p. 17) CLI 上使用这些命令。
对于使用 CUDA 9 和 cuDNN 7 的 Python 3 上的具有 MXNet 后端的 Keras 2:
source activate mxnet_p36
对于使用 CUDA 9 和 cuDNN 7 的 Python 2 上的具有 MXNet 后端的 Keras 2:
source activate mxnet_p27
对于使用 CUDA 9 和 cuDNN 7 的 Python 3 上具有 TensorFlow 后端的 Keras 2:
source activate tensorflow_p36
对于在使用 CUDA 9 和 cuDNN 7 的 Python 2 上具有 TensorFlow 后端的 Keras 2:
27深度学习 AMI 开发人员指南
激活框架
source activate tensorflow_p27
2. 要测试导入 Keras 以验证激活哪些后端,请使用这些命令:
ipython
import keras as k
以下内容应显示您的屏幕上:
Using MXNet backend
如果 Keras 使用的是 TensorFlow,则会显示以下内容:
Using TensorFlow backend
Note
如果您收到错误,或如果仍在使用错误的后端,则可以手动更新您的 Keras 配置。编辑
~.keraskeras.json 文件并将后端设置更改为 mxnet 或 tensorflow。
更多教程
有关使用具有 MXNet 后端的 Keras 的多 GPU 教程,请尝试Keras-MXNet Multi-GPU 训练教
程 (p. 45)。
您可以在 采用 Conda 的 Deep Learning AMI ~exampleskeras-mxnet 目录中查找有关具有 MXNet
后端的 Keras 的示例。
您可以在 采用 Conda 的 Deep Learning AMI ~exampleskeras 目录中查找有关具有 TensorFlow 后端
的 Keras 的示例。
有关其他教程和示例,请参阅 Keras 网站。
PyTorch
激活 PyTorch
当框架的稳定的 Conda 程序包发布时,它会在 DLAMI 上进行测试并预安装。如果您希望运行最新的、未经
测试的每日构建版本,您可以手动安装 PyTorch 的每日构建版本(试验) (p. 29)。
要激活当前安装的框架,请按照您的 采用 Conda 的 Deep Learning AMI 上的这些说明进行操作。
对于具有 CUDA 10 和 MKL-DNN 的 Python 3 上的 PyTorch,运行以下命令:
source activate pytorch_p36
对于具有 CUDA 10 和 MKL-DNN 的 Python 2 上的 PyTorch,运行以下命令:
source activate pytorch_p27
启动 iPython 终端。
(pytorch_p36) ipython
28深度学习 AMI 开发人员指南
激活框架
运行快速 PyTorch 程序。
import torch
x = torch.rand(5, 3)
print(x)
print(x.size)
y = torch.rand(5, 3)
print(torch.add(x, y))
您应该会看到系统输出初始随机数组,然后输出大小,然后添加另一个随机数组。
安装 PyTorch 的每日构建版本(试验)
如何从每日构建安装 PyTorch
您可以将最新的 PyTorch 工作版本安装到您的 采用 Conda 的 Deep Learning AMI 上的任一或两个 PyTorch
Conda 环境。
1. ? (适用于 Python 3 的选项)- 激活 Python 3 PyTorch 环境:
source activate pytorch_p36
(适用于 Python 2 的选项)- 激活 Python 2 PyTorch 环境:
source activate pytorch_p27
2. 其余步骤假定您使用的是 pytorch_p36 环境。删除当前安装的 PyTorch:
(pytorch_p36) pip uninstall torch
3. ? (适用于 GPU 实例的选项)- 使用 CUDA 10.0 安装最新的 PyTorch 每日构建版本:
(pytorch_p36) pip install torch_nightly -f https:download.pytorch.orgwhl
nightlycu100torch_nightly.html
(适用于 CPU 实例的选项)- 对于不使用 GPU 的实例,安装最新的 PyTorch 每日构建版本:
(pytorch_p36) pip install torch_nightly -f https:download.pytorch.orgwhl
nightlycputorch_nightly.html
4. 要验证您已成功安装最新的每日构建版本,请启动 IPython 终端并检查 PyTorch 版本。
(pytorch_p36) ipython
import torch
print (torch.__version__)
输出应类似于以下内容:1.0.0.dev20180922
5. 要验证 PyTorch 每日构建版本是否适用于 MNIST 示例,您可以从 PyTorch 的示例存储库运行测试脚
本:
(pytorch_p36) cd ~
(pytorch_p36) git clone https:github.compytorchexamples.git pytorch_examples
(pytorch_p36) cd pytorch_examplesmnist
(pytorch_p36) python main.py || exit 1
29深度学习 AMI 开发人员指南
激活框架
更多教程
您可以在 DLAMI 主目录的 采用 Conda 的 Deep Learning AMI 教程文件夹中找到更多教程。如需查看更多教
程和示例,请参阅该框架的官方文档、PyTorch 文档和 PyTorch 网站。
有关将 PyTorch 转换为 ONNX,然后加载到 MXNet 的教程 (p. 66)
有关将 PyTorch 转换为 ONNX,然后加载到 CNTK 的教程 (p. 64)
TensorFlow
激活 TensorFlow
本教程介绍如何在运行 采用 Conda 的 Deep Learning AMI (DLAMI on Conda) 的实例上激活 TensorFlow 并
运行 TensorFlow 程序。
当框架的稳定的 Conda 程序包发布时,它会在 DLAMI 上进行测试并预安装。如果您希望运行最新的、未经
测试的每日构建版本,您可以手动安装 TensorFlow 的每日构建版本(试验) (p. 30)。
在 DLAMI with Conda 上运行 TensorFlow
1. 为了激活 TensorFlow,打开 DLAMI with Conda 的 Amazon Elastic Compute Cloud (Amazon EC2) 实
例。
对于具有 CUDA 9.0 和 MKL-DNN 的 Python 3 上的 TensorFlow 和 Keras 2,运行以下命令:
source activate tensorflow_p36
对于具有 CUDA 9.0 和 MKL-DNN 的 Python 2 上的 TensorFlow 和 Keras 2,运行以下命令:
source activate tensorflow_p27
2. 启动 iPython 终端:
(tensorflow_p36) ipython
3. 运行 TensorFlow 程序以验证其是否正常运行:
import tensorflow as tf
hello = tf.constant('Hello, TensorFlow!')
sess = tf.Session
print(sess.run(hello))
Hello, TensorFlow! 应显示在您的屏幕上。
安装 TensorFlow 的每日构建版本(试验)
您可以将最新的 TensorFlow 版本安装到您的 采用 Conda 的 Deep Learning AMI 上的任一或两个
TensorFlow Conda 环境。
从每日构建版本安装 TensorFlow
1. ? 对于 Python 3 TensorFlow 环境,运行以下命令:
source activate tensorflow_p36
30深度学习 AMI 开发人员指南
激活框架
对于 Python 2 TensorFlow 环境,运行以下命令:
source activate tensorflow_p27
2. 删除当前安装的 TensorFlow。
Note
其余步骤假定您使用的是 mxnet_p36 环境。
(tensorflow_p36) pip uninstall tensorflow
3. 安装 TensorFlow 的最新每日构建版本。
(tensorflow_p36) pip install tf-nightly
4. 要验证您是否已成功安装最新的每日构建版本,请启动 IPython 终端并检查 TensorFlow 版本。
(tensorflow_p36) ipython
import tensorflow
print (tensorflow.__version__)
输出应类似于以下内容:1.12.0-dev20181012
更多教程
TensorFlow with Horovod (p. 46)
TensorBoard (p. 35)
TensorFlow Serving (p. 69)
有关教程,请参阅 DLAMI 的主目录中名为 Conda Deep Learning AMI tutorials 的文件夹。
有关更多教程和示例,请参阅 TensorFlow Python API 的 TensorFlow 文档或访问 TensorFlow 网站。
TensorFlow with Horovod
本教程介绍如何在 AWS Deep Learning AMI (DLAMI) with Conda 上激活 TensorFlow with
Horovod。Horovod 已为 TensorFlow 预安装在 Conda 环境中。推荐使用 Python3 环境。
Note
仅支持 P3.、P2. 和 G3. 实例类型。
在 DLAMI with Conda 上激活 TensorFlow 并测试 Horovod
1. 打开 DLAMI with Conda 的 Amazon Elastic Compute Cloud (Amazon EC2) 实例。有关 DLAMI 入门帮
助,请参阅the section called “如何开始使用 DLAMI” (p. 3)。
(推荐)对于使用 CUDA 9 的 Python 3 上的 TensorFlow with Horovod,请运行此命令:
source activate tensorflow_p36
对于使用 CUDA 9 的 Python 2 上的 TensorFlow with Horovod,请运行此命令:
source activate tensorflow_p27
31深度学习 AMI 开发人员指南
激活框架
2. 启动 iPython 终端:
(tensorflow_p36) ipython
3. 测试导入 TensorFlow with Horovod 以验证其是否运行正常:
import horovod.tensorflow as hvd
hvd.init
以下内容可能显示在您的屏幕上(您可能会忽略任何警告消息)。--------------------------------------------------------------------------
[[55425,1],0]: A high-performance Open MPI point-to-point messaging module
was unable to find any relevant network interfaces:
Module: OpenFabrics (openib)
Host: ip-172-31-72-4
Another transport will be used instead, although this may result in
lower performance.--------------------------------------------------------------------------
更多信息
TensorFlow with Horovod (p. 46)
有关教程,请参阅 DLAMI 的主目录中的 exampleshorovod 文件夹。
有关更多教程和示例,请参阅 Horovod GitHub 项目。
Theano
Theano 教程
要激活框架,请按照您的 采用 Conda 的 Deep Learning AMI 上的这些说明进行操作。
对于使用 CUDA 9 和 cuDNN 7 的 Python 3 中的 Theano + Keras:
source activate theano_p36
对于使用 CUDA 9 和 cuDNN 7 的 Python 2 中的 Theano + Keras:
source activate theano_p27
启动 iPython 终端。
(theano_p36) ipython
运行快速 Theano 程序。
32深度学习 AMI 开发人员指南
调试和可视化
import numpy
import theano
import theano.tensor as T
from theano import pp
x = T.dscalar('x')
y = x 2
gy = T.grad(y, x)
pp(gy)
您应该会看到 Theano 计算符号梯度。
更多教程
如需查看更多教程和示例,请参阅该框架的官方文档、Theano Python API 和 Theano 网站。
调试和可视化
了解适用于 DLAMI 的调试和可视化选项。单击其中一个选项可了解如何使用该选项。
主题
MXBoard (p. 33)
TensorBoard (p. 35)
MXBoard
MXBoard 可让您使用 TensorBoard 软件目视检查和解释您的 MXNet 运行和图表。它运行了一个 Web 服务
器,该服务器提供了一个用于查看 MXBoard 可视化并与之交互的网页。
MXNet、TensorBoard 和 MXBoard 随 采用 Conda 的 Deep Learning AMI (DLAMI with Conda) 一起预安
装。在本教程中,您使用 MXBoard 功能生成与 TensorBoard 兼容的日志。
主题
将 MXNet 与 MXBoard 结合使用 (p. 33)
更多信息 (p. 35)
将 MXNet 与 MXBoard 结合使用
生成与 TensorBoard 兼容的 MXBoard 日志数据
1. 连接到 DLAMI with Conda 的 Amazon Elastic Compute Cloud (Amazon EC2) 实例。
2. 激活 Python 3 MXNet 环境。
source activate mxnet_p36
3. 准备 Python 脚本以将一般运算符生成的数据写入事件文件中。数据生成 10 次,标准偏差减小,然后每
次将写入到事件文件中。您将看到数据分布逐渐以平均值为中心。请注意,您将在日志文件夹中指定事
件文件。您将此文件夹路径传递到 TensorBoard 二进制文件。
vi mxboard_normal.py
4. 将以下内容粘贴到文件中并保存它:
33深度学习 AMI 开发人员指南
调试和可视化
import mxnet as mx
from mxboard import SummaryWriter
with SummaryWriter(logdir='.logs') as sw:
for i in range(10):
create a normal distribution with fixed mean and decreasing std
data = mx.nd.normal(loc=0, scale=10.0(i+1), shape=(10, 3, 8, 8))
sw.add_histogram(tag='norml_dist', values=data, bins=200, global_step=i)
5. 运行脚本。这将在 logs 文件夹中生成可用于可视化的日志。
python mxboard_normal.py
6. 现在,您必须切换到 TensorFlow 环境以使用 TensorBoard 和 MXBoard 可视化日志。这是 MXBoard 和
TensorBoard 所需的依赖项。
source activate tensorflow_p36
7. 将日志的位置传递到 tensorboard:
tensorboard --logdir=.logs --host=127.0.0.1 --port=8888
TensorBoard 在端口 8888 上启动了可视化 Web 服务器。
8. 为了方便从您的本地浏览器进行访问,您可以将 Web 服务器端口更改为端口 80 或其他端口。无论您使
用哪个端口,都需要在 EC2 安全组中为您的 DLAMI 打开此端口。您还可以使用端口转发。有关更改安
全组设置和端口转发的说明,请参阅设置 Jupyter Notebook 服务器 (p. 11)。默认设置如下一步中所述。
Note
如果您需要同时运行 Jupyter 服务器和 MXBoard 服务器,请对每个服务器使用不同的端口。
9. 在您的 EC2 实例上打开端口 8888 (或您分配给可视化 Web 服务器的端口)。
a. 在 https:console.aws.amazon.comec2 上的 Amazon EC2 控制台中打开您的 EC2 实例。
b. 在 Amazon EC2 控制台中,选择 Network Security (网络与安全),然后选择 Security Groups (安
全组)。
c. 对于 Security Group (安全组),选择最近创建的一个安全组 (请参阅描述中的时间戳)。
d. 选择 Inbound (入站) 选项卡,然后选择 Edit (编辑)。
e. 选择 Add Rule。
f. 在新行中,键入以下内容:
类型:自定义 TCP Rule
协议:TCP
端口范围:8888(或您分配给可视化服务器的端口)
源:Anywhere (0.0.0.00,::0)
10. 如果您需要从本地浏览器可视化数据,请键入以下命令以将 EC2 实例上渲染的数据转发到本地计算机。
ssh -Y -L localhost:8888:localhost:8888 user_id@ec2_instance_ip
11. 使用运行 DLAMI with Conda 的 EC2 实例的公有 IP 或 DNS 地址以及您为 MXBoard 打开的端口打开用
于 MXBoard 可视化的网页:
http:127.0.0.1:8888
34深度学习 AMI 开发人员指南
调试和可视化
更多信息
要了解有关 MXBoard 的更多信息,请参阅 MXBoard 网站。
TensorBoard
TensorBoard 可让您以视觉方式检查和解释您的 TensorFlow 运行和图表。它运行了一个 Web 服务器,该服
务器提供了一个用于查看 TensorBoard 可视化并与之交互的网页。
TensorFlow 和 TensorBoard 随 采用 Conda 的 Deep Learning AMI (DLAMI with Conda) 一起预安
装。DLAMI with Conda 还包含一个示例脚本,该脚本使用 TensorFlow 通过启用额外的日志记录功能训练
MNIST 模型。MNIST 是通常用于训练图像识别模型的手写编号的数据库。在本教程中,您将使用该脚本来
训练 MNIST 模型、TensorBoard 和日志,以创建可视化。
主题
训练 MNIST 模型并使用 TensorBoard 将训练可视化 (p. 35)
更多信息 (p. 36)
训练 MNIST 模型并使用 TensorBoard 将训练可视化
使用 TensorBoard 将 MNIST 模型训练可视化
1. 连接到 DLAMI with Conda 的 Amazon Elastic Compute Cloud (Amazon EC2) 实例。
2. 激活 Python 2.7 TensorFlow 环境并导航到包含带 TensorBoard 示例脚本的文件夹所在的目录:
source activate tensorflow_p27
cd ~examplestensorboard
3. 运行训练启用了延长日志记录的 MNIST 模型的脚本:
python mnist_with_summaries.py
该脚本将日志写入 tmptensorflowmnist。
4. 将日志的位置传递到 tensorboard:
tensorboard --logdir=tmptensorflowmnist
TensorBoard 在端口 6006 上启动了可视化 Web 服务器。
5. 为了方便从您的本地浏览器进行访问,您可以将 Web 服务器端口更改为端口 80 或其他端口。无论您使
用哪个端口,都需要在 EC2 安全组中为您的 DLAMI 打开此端口。您还可以使用端口转发。有关更改安
全组设置和端口转发的说明,请参阅设置 Jupyter Notebook 服务器 (p. 11)。默认设置如下一步中所述。
Note
如果您需要同时运行 Jupyter 服务器和 TensorBoard 服务器,请对每个服务器使用不同的端
口。
6. 在您的 EC2 实例上打开端口 6006 (或您分配给可视化 Web 服务器的端口)。
a. 在 https:console.aws.amazon.comec2 上的 Amazon EC2 控制台中打开您的 EC2 实例。
b. 在 Amazon EC2 控制台中,选择 Network Security (网络与安全),然后选择 Security Groups (安
全组)。
c. 对于 Security Group (安全组),选择最近创建的一个安全组(请参阅描述中的时间戳)。
d. 选择 Inbound (入站) 选项卡,然后选择 Edit (编辑)。
35深度学习 AMI 开发人员指南
分布式训练
e. 选择 Add Rule。
f. 在新行中,键入以下内容:
类型:自定义 TCP Rule
协议:TCP
端口范围:6006(或您分配给可视化服务器的端口)
源:Anywhere (0.0.0.00,::0)
7. 使用运行 DLAMI with Conda 的 EC2 实例的公有 IP 或 DNS 地址以及您为 TensorBoard 打开的端口打
开用于 TensorBoard 可视化的网页:
http: YourInstancePublicDNS:6006
更多信息
要了解有关 TensorBoard 的更多信息,请参阅 TensorBoard 网站。
分布式训练
了解 DLAMI 中用于训练多个 GPU 的选项。单击其中一个选项可了解如何使用该选项。
主题
Chainer (p. 36)
带 MXNet 的 Keras (p. 45)
TensorFlow with Horovod (p. 46)
Chainer
Chainer 是一种基于 Python 的灵活框架,用于轻松直观地编写复杂的神经网络架构。利用 Chainer,您可以
轻松使用多 GPU 实例进行训练。Chainer 还会自动记录结果、图表损失和精度并生成用于使用计算图来可视
化神经网络的输出。Chainer 包含在 采用 Conda 的 Deep Learning AMI (DLAMI with Conda) 中。
以下主题介绍如何在多个 GPU、单个 GPU 和一个 CPU 上进行训练,如何创建可视化以及如何测试您的
Chainer 安装。
主题
使用 Chainer 训练模型 (p. 36)
使用 Chainer 在多个 GPU 上训练 (p. 37)
使用 Chainer 在单个 GPU 上训练 (p. 39)
使用 Chainer 在 CPU 上训练 (p. 40)
绘制结果 (p. 41)
测试 Chainer (p. 45)
更多信息 (p. 45)
使用 Chainer 训练模型
本教程介绍如何使用示例 Chainer 脚本来通过 MNIST 数据集训练模型。MNIST 是通常用于训练图像识别模
型的手写编号的数据库。本教程还将介绍在一个 CPU 上训练与在一个或多个 GPU 上训练之间的训练速度差
异。
36深度学习 AMI 开发人员指南
分布式训练
使用 Chainer 在多个 GPU 上训练
在多个 GPU 上训练
1. 连接到正在运行 采用 Conda 的 Deep Learning AMI 的实例。有关如何选择或连接到实例,请参阅the
section called “实例选择” (p. 6)或 Amazon EC2 文档。要运行此教程,您将需要使用带至少两个 GPU
的实例。
2. 激活 Python 3 Chainer 环境:
source activate chainer_p36
3. 要获取最新教程,请克隆 Chainer 存储库并导航到示例文件夹:
(chainer_p36) :~ cd ~src
(chainer_p36) :~src git clone https:github.comchainerchainer.git
(chainer_p36) :~src cd chainerexamplesmnist
4. 在 train_mnist_data_parallel.py 脚本中运行示例。默认情况下,该脚本使用在 采用 Conda 的
Deep Learning AMI 的实例上运行的 GPU。该脚本最多可在两个 GPU 上运行。它将忽略前两个 GPU
之后的所有 GPU。它会自动检测其中一个 GPU 或检测到这两个 GPU。如果您运行的是不带 GPU 的实
例,请跳到本教程后面的使用 Chainer 在 CPU 上训练 (p. 40)。
(chainer_p36) :~srcchainerexamplesmnist python train_mnist_data_parallel.py
Note
由于包含未在 DLAMI 中包含 beta 功能,此示例将返回以下错误。
chainerx ModuleNotFoundError: No module named 'chainerx'
当 Chainer 脚本使用 MNIST 数据库训练模型时,您会看到每个纪元的结果。
然后,您会在脚本运行时看到示例输出。以下示例输出是在 p3.8xlarge 实例上运行的。该脚本的输出显
示“GPU: 0, 1”,这表示它正在使用 4 个可用 GPU 中的前两个。这些脚本通常使用的是以零开头而不是
以总计数开头的 GPU 索引。
GPU: 0, 1
unit: 1000
Minibatch-size: 400
epoch: 20
epoch mainloss validationmainloss mainaccuracy validationmainaccuracy
elapsed_time
1 0.277561 0.114709 0.919933 0.9654
6.59261
2 0.0882352 0.0799204 0.973334 0.9752
8.25162
3 0.0520674 0.0697055 0.983967 0.9786
9.91661
4 0.0326329 0.0638036 0.989834 0.9805
11.5767
5 0.0272191 0.0671859 0.9917 0.9796
13.2341
6 0.0151008 0.0663898 0.9953 0.9813
14.9068
7 0.0137765 0.0664415 0.995434 0.982
16.5649
8 0.0116909 0.0737597 0.996 0.9801
18.2176
37深度学习 AMI 开发人员指南
分布式训练
9 0.00773858 0.0795216 0.997367 0.979
19.8797
10 0.00705076 0.0825639 0.997634 0.9785
21.5388
11 0.00773019 0.0858256 0.9978 0.9787
23.2003
12 0.0120371 0.0940225 0.996034 0.9776
24.8587
13 0.00906567 0.0753452 0.997033 0.9824
26.5167
14 0.00852253 0.082996 0.996967 0.9812
28.1777
15 0.00670928 0.102362 0.997867 0.9774
29.8308
16 0.00873565 0.0691577 0.996867 0.9832
31.498
17 0.00717177 0.094268 0.997767 0.9802
33.152
18 0.00585393 0.0778739 0.998267 0.9827
34.8268
19 0.00764773 0.107757 0.9975 0.9773
36.4819
20 0.00620508 0.0834309 0.998167 0.9834
38.1389
5. 当您的训练正在运行时,查看您的 GPU 利用率会很有用。您可以验证哪些 GPU 处于活动状态并查看
它们的负载。NVIDIA 为此提供了一种工具,可使用命令 nvidia-smi 运行该工具。但是,它只会为您
提供利用率的快照,因此,将该工具与 Linux 命令 watch 结合使用更具参考性。以下命令将 watch 与
nvidia-smi 结合使用,以便以十分之一秒的时间间隔刷新当前 GPU 利用率。打开指向您的 DLAMI 的
另一个终端会话,然后运行以下命令:
(chainer_p36) :~ watch -n0.1 nvidia-smi
您将看到一个类似于以下结果的输出。使用 ctrl-c 关闭该工具,或者在您在第一个终端会话中试用其
他示例的同时保持其运行。
Every 0.1s: nvidia-smi Wed Feb 28 00:28:50 2018
Wed Feb 28 00:28:50 2018
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 384.111 Driver Version: 384.111 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:UsageCap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 Tesla V100-SXM2... On | 00000000:00:1B.0 Off | 0 |
| NA 46C P0 56W 300W | 728MiB 16152MiB | 10% Default |
+-------------------------------+----------------------+----------------------+
| 1 Tesla V100-SXM2... On | 00000000:00:1C.0 Off | 0 |
| NA 44C P0 53W 300W | 696MiB 16152MiB | 4% Default |
+-------------------------------+----------------------+----------------------+
| 2 Tesla V100-SXM2... On | 00000000:00:1D.0 Off | 0 |
| NA 42C P0 38W 300W | 10MiB 16152MiB | 0% Default |
+-------------------------------+----------------------+----------------------+
| 3 Tesla V100-SXM2... On | 00000000:00:1E.0 Off | 0 |
| NA 46C P0 40W 300W | 10MiB 16152MiB | 0% Default |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: GPU Memory |
| GPU PID Type Process name Usage |
38深度学习 AMI 开发人员指南
分布式训练
|=============================================================================|
| 0 54418 C python 718MiB |
| 1 54418 C python 686MiB |
+-----------------------------------------------------------------------------+
在本示例中,GPU 0 和 GPU 1 处于活动状态,而 GPU 2 和 3 不处于活动状态。您还可以查看每个
GPU 的内存利用率。
6. 在训练完成后,记下您的第一个终端会话的已用时间。在本示例中,已用时间为 38.1389 秒。
使用 Chainer 在单个 GPU 上训练
本示例介绍如何在单个 GPU 上训练。如果您只有一个 GPU 可用或者只是想了解多 GPU 训练如何利用
Chainer 进行扩展,则可以执行此操作。
使用 Chainer 在单个 GPU 上训练
在本示例中,您使用另一个脚本 train_mnist.py,并指示它仅使用带 --gpu=0 参数的 GPU 0。要
查看不同的 GPU 如何在 nvidia-smi 控制台中激活,您可以通过使用 --gpu=1 来指示脚本使用 GPU
编号 1。
(chainer_p36) :~srcchainerexamplesmnist python train_mnist.py --gpu=0
GPU: 0
unit: 1000
Minibatch-size: 100
epoch: 20
epoch mainloss validationmainloss mainaccuracy validationmainaccuracy
elapsed_time
1 0.192348 0.0909235 0.940934 0.9719
5.3861
2 0.0746767 0.069854 0.976566 0.9785
8.97146
3 0.0477152 0.0780836 0.984982 0.976
12.5596
4 0.0347092 0.0701098 0.988498 0.9783
16.1577
5 0.0263807 0.08851 0.991515 0.9793
19.7939
6 0.0253418 0.0945821 0.991599 0.9761
23.4643
7 0.0209954 0.0683193 0.993398 0.981
27.0317
8 0.0179036 0.080285 0.994149 0.9819
30.6325
9 0.0183184 0.0690474 0.994198 0.9823
34.2469
10 0.0127616 0.0776328 0.996165 0.9814
37.8693
11 0.0145421 0.0970157 0.995365 0.9801
41.4629
12 0.0129053 0.0922671 0.995899 0.981
45.0233
13 0.0135988 0.0717195 0.995749 0.9857
48.6271
14 0.00898215 0.0840777 0.997216 0.9839
52.2269
15 0.0103909 0.123506 0.996832 0.9771
55.8667
39深度学习 AMI 开发人员指南
分布式训练
16 0.012099 0.0826434 0.996616 0.9847
59.5001
17 0.0066183 0.101969 0.997999 0.9826
63.1294
18 0.00989864 0.0877713 0.997116 0.9829
66.7449
19 0.0101816 0.0972672 0.99 ......
开发人员指南深度学习 AMI 开发人员指南
深度学习 AMI: 开发人员指南 Copyright ? 2019 Amazon Web Services, Inc. andor its affiliates. All rights reserved.
Amazon's trademarks and trade dress may not be used in connection with any product or service that is not Amazon's,in any manner that is likely to cause confusion among customers, or in any manner that disparages or discredits
Amazon. All other trademarks not owned by Amazon are the property of their respective owners, who may or may not
be affiliated with, connected to, or sponsored by Amazon.深度学习 AMI 开发人员指南
AWS Deep Learning AMI是什么? ........................................................................................................ 1
关于本指南 ................................................................................................................................ 1
先决条件 .................................................................................................................................... 1
用例 .......................................................................................................................................... 1
功能 .......................................................................................................................................... 1
预装框架 ............................................................................................................................ 1
预装 GPU 软件 .................................................................................................................. 2
模型处理和可视化 ............................................................................................................... 2
入门 .................................................................................................................................................. 3
如何开始使用 DLAMI ................................................................................................................... 3
DLAMI 选择 ............................................................................................................................... 3
Conda ............................................................................................................................... 3
Base ................................................................................................................................. 4
CUDA ............................................................................................................................... 5
OS ................................................................................................................................... 6
实例选择 .................................................................................................................................... 6
GPU ................................................................................................................................. 7
CPU ................................................................................................................................. 7
定价 .................................................................................................................................. 7
启动 DLAMI ....................................................................................................................................... 9
步骤 1:启动 DLAMI ................................................................................................................... 9
EC2 控制台 ............................................................................................................................... 9
Marketplace 搜索 ...................................................................................................................... 10
步骤 2:连接到 DLAMI .............................................................................................................. 10
步骤 3:保护 DLAMI 实例 .......................................................................................................... 11
步骤 4:测试您的 DLAMI ........................................................................................................... 11
清除 ........................................................................................................................................ 11
Jupyter 设置 ............................................................................................................................. 11
保护 Jupyter ..................................................................................................................... 12
启动服务器 ....................................................................................................................... 12
配置客户端 ....................................................................................................................... 13
登录 Jupyter Notebook 服务器 ............................................................................................ 14
使用 DLAMI ..................................................................................................................................... 17
Conda DLAMI .......................................................................................................................... 17
采用 Conda 的 Deep Learning AMI 简介 .............................................................................. 17
步骤 1:登录您的 DLAMI ................................................................................................... 17
步骤 2:启动 MXNet Python 3 环境 ..................................................................................... 18
步骤 3:测试某些 MXNet 代码 ............................................................................................ 19
步骤 4:切换到 TensorFlow 环境 ........................................................................................ 19
删除环境 .......................................................................................................................... 20
基础 DLAMI ............................................................................................................................. 20
使用 Deep Learning Base AMI ............................................................................................ 20
配置 CUDA 版本 ............................................................................................................... 20
Jupyter 笔记本电脑 ................................................................................................................... 21
导航已安装的教程 .............................................................................................................. 21
通过 Jupyter 切换环境 ....................................................................................................... 22
教程 ........................................................................................................................................ 22
10 分钟教程 ..................................................................................................................... 22
激活框架 .......................................................................................................................... 22
调试和可视化 .................................................................................................................... 33
分布式训练 ....................................................................................................................... 36
GPU 监控和优化 ............................................................................................................... 52
推理 ................................................................................................................................ 57
将框架用于 ONNX ............................................................................................................. 60
iii深度学习 AMI 开发人员指南
模型处理 .......................................................................................................................... 68
Deep Learning Containers .................................................................................................................. 72
Amazon EC2 上的Deep Learning Containers ................................................................................ 72
设置 ................................................................................................................................ 72
教程 ................................................................................................................................ 73
ECS 上的 Deep Learning Containers ........................................................................................... 76
设置 ................................................................................................................................ 77
教程 ................................................................................................................................ 78
Amazon EKS 上的 Deep Learning Containers ............................................................................... 90
设置 ................................................................................................................................ 91
教程 ................................................................................................................................ 96
EKS 上的 AWS Deep Learning Containers故障排除 .............................................................. 118
EKS 上的 AWS Deep Learning Containers词汇表 ................................................................. 120
Amazon SageMaker 上的 Deep Learning Containers .................................................................... 121
附录 ...................................................................................................................................... 122
Deep Learning Containers映像 .......................................................................................... 122
自定义映像 ..................................................................................................................... 127
MKL 建议 ....................................................................................................................... 128
升级 DLAMI .................................................................................................................................... 132
DLAMI 升级 ............................................................................................................................ 132
软件更新 ................................................................................................................................ 132
资源 .............................................................................................................................................. 133
论坛 ...................................................................................................................................... 133
博客 ...................................................................................................................................... 133
常见问题 ................................................................................................................................ 133
附录 .............................................................................................................................................. 136
AMI 选项 ................................................................................................................................ 136
Conda ........................................................................................................................... 136
Base ............................................................................................................................. 137
CUDA 10 ....................................................................................................................... 138
CUDA 9 ......................................................................................................................... 138
CUDA 8 ......................................................................................................................... 139
Ubuntu ........................................................................................................................... 139
Amazon Linux ................................................................................................................. 140
Amazon Linux 2 .............................................................................................................. 141
Windows ........................................................................................................................ 141
DLAMI:发行说明 .................................................................................................................... 142
版本存档 ........................................................................................................................ 142
文档历史记录 .................................................................................................................................. 235
AWS 词汇表 ................................................................................................................................... 238
iv深度学习 AMI 开发人员指南
关于本指南
AWS Deep Learning AMI是什么?
欢迎阅读 AWS Deep Learning AMI 用户指南。
AWS Deep Learning AMI (DLAMI) 是在云中进行深度学习的一站式商店。此自定义计算机实例可用于大多数
Amazon EC2 区域中的各种实例类型,从仅包含 CPU 的小型实例到最新的高性能多 GPU 实例。它预配置了
NVIDIA CUDA 和 NVIDIA cuDNN 以及最常用的深度学习框架的最新版本。
关于本指南
本指南将帮助您启动并使用 DLAMI。它介绍了用于培训和推导的深度学习的几种常见使用案例。本指南还介
绍了如何针对您的用途选择合适的 AMI 和您喜欢的实例类型。DLAMI 针对每个框架提供多个教程。您将找
到关于如何配置 Jupyter 以在浏览器中运行教程的说明。
先决条件
您应该熟悉命令行工具和基本 Python 才能成功运行 DLAMI。框架自身提供有关如何使用每个框架的教程,但是本指南可以向您展示如何激活每个框架并找到适当的入门教程。
示例 DLAMI 用法
了解深度学习:DLAMI 是学习或教授机器学习和深度学习框架的理想选择。它不需要对每个框架的安装进行
故障排除,并在同一台计算机上运行框架。DLAMI 附带 Jupyter Notebook,可以轻松地向不熟悉机器学习和
深度学习的人运行框架提供的教程。
应用程序开发:如果您是应用程序开发人员,并且有兴趣使用深度学习来使您的应用程序利用 AI 方面的最新
进步,则 DLAMI 是理想的测试平台。每个框架都附带了关于如何开始使用深度学习的教程,其中许多教程都
有模型动物园,可以让您轻松试用深度学习,您不需要自己创建神经网络或进行模型训练。一些示例向您展
示如何在几分钟内构建映像检测应用程序,或如何为您自己的聊天自动程序构建语音识别应用程序。
机器学习和数据分析:如果您是数据科学家或有兴趣通过深度学习处理数据,您会发现许多框架都支持 R 和
Spark。您将找到关于进行简单回归的教程,以及为个性化和预测系统构建可扩展的数据处理系统的教程。
研究:如果您是一名研究人员,并且希望试用新框架、测试新模型或培训新模型,DLAMI 和 AWS 扩展功能
可以减少安装和管理多个培训节点的繁琐工作。您可以使用 EMR 和 AWS CloudFormation 模板轻松启动完
整的实例集群,它们随时可以用于可扩展的培训。
Note
虽然您的最初选择可能是将实例类型升级到具有多个 GPU(最多 8 个)的更大实例,但您也
可以通过创建 DLAMI 实例集群来进行水平扩展。要快速设置集群,您可以使用预定义的 AWS
CloudFormation 模板。有关集群构建的更多信息,请参阅 资源和支持 (p. 133)。
DLAMI 的功能
预装框架
目前有三种主要的 DLAMI,均包含与操作系统 (OS) 和软件版本相关的其他变体:
1深度学习 AMI 开发人员指南
预装 GPU 软件
采用 Conda 的 Deep Learning AMI (p. 3) - 在单独的 Python 环境中使用 conda 程序包单独安装的框
架
Deep Learning Base AMI (p. 4) - 不安装任何框架;只有 NVIDIA CUDA 和其他依赖项
新的 采用 Conda 的 Deep Learning AMI 使用 Anaconda 环境来隔离每个框架,因此您可以随意切换框架,而不用担心其依赖项发生冲突。
有关选择最佳 DLAMI 的更多信息,请查看入门 (p. 3)。
这是 采用 Conda 的 Deep Learning AMI 支持的框架的完整列表:
Apache MXNet
Caffe
Caffe2
CNTK
Keras
PyTorch
TensorFlow
Theano
预装 GPU 软件
即使您使用仅包含 CPU 的实例,DLAMI 也将具有 NVIDIA CUDA 和 NVIDIA cuDNN。无论实例类型是什
么,安装的软件都是相同的。请记住,GPU 特定工具只适用于至少包含一个 GPU 的实例。选择 DLAMI 的
实例类型 (p. 6)中包含有关此内容的更多信息。
NVIDIA CUDA 9
NVIDIA cuDNN 7
CUDA 8 也可用。有关更多信息,请参阅CUDA 安装和框架绑定 (p. 5)。
模型处理和可视化
采用 Conda 的 Deep Learning AMI 预装有两种模型服务器,一种用于 MXNet,一种用于 TensorFlow,还预
装有 TensorBoard,用于模型可视化。
适用于 Apache MXNet 的模型服务器 (MMS) (p. 68)
TensorFlow Serving (p. 69)
TensorBoard (p. 35)
2深度学习 AMI 开发人员指南
如何开始使用 DLAMI
入门
如何开始使用 DLAMI
入门很简单。本指南包括了关于选择适合您的 DLAMI、选择适合您的使用案例和预算的实例类型的技巧,以
及介绍您可能感兴趣的自定义设置的资源和支持 (p. 133)。
如果您刚开始使用 AWS 或 Amazon EC2,请先从 采用 Conda 的 Deep Learning AMI (p. 3) 开始。如果
您熟悉 Amazon EC2 和其他 AWS 服务(如 Amazon EMR、Amazon EFS 或 Amazon S3),并且有兴趣集
成这些服务以用于需要分布式培训或推导的项目,则在资源和支持 (p. 133)中查看是否有符合您的使用案例
的服务。
我们建议您查看选择 DLAMI (p. 3),以了解最适合您的应用程序的实例类型。
另一个选项是此快速教程:启动 AWS Deep Learning AMI (在 10 分钟内)。
下一步
选择 DLAMI (p. 3)
选择 DLAMI
您可能会发现 DLAMI 有很多选项,并且不清楚哪个选项最适合您的使用案例。本部分可以帮助您做出决定。
当我们提及 DLAMI 时,通常这实际上是围绕某个常见类型或功能的一组 AMI。有三种变量定义了这些类型
和或功能:
Conda 与 Base
CUDA 8、CUDA 9 与 CUDA 10
Amazon Linux、Ubuntu 与 Windows
本指南中的其他主题有助于进一步给您提供信息和进一步让您了解详情。
主题
采用 Conda 的 Deep Learning AMI (p. 3)
Deep Learning Base AMI (p. 4)
CUDA 安装和框架绑定 (p. 5)
DLAMI 操作系统选项 (p. 6)
后续步骤
采用 Conda 的 Deep Learning AMI (p. 3)
采用 Conda 的 Deep Learning AMI
Conda DLAMI 使用 Anaconda 虚拟环境。这些环境配置为单独安装不同的框架。它还可以让您轻松切换框
架。这对了解和体验 DLAMI 必须提供的所有框架很有好处。大多数用户会发现新的 采用 Conda 的 Deep
Learning AMI 非常适合他们。
3深度学习 AMI 开发人员指南
Base
这些“Conda”AMI 将是主要的 DLAMI。它将经常使用框架中的最新版本进行更新,并拥有最新的 GPU 驱动
程序和软件。在大多数文档中,它通常被称为 AWS Deep Learning AMI。
Ubuntu 和 Amazon Linux DLAMI 具有以下框架:Apache
MXNet、Caffe、Caffe2、Chainer、CNTK、Keras、PyTorch、TensorFlow 和 Theano
Amazon Linux 2 DLAMI 具有以下框架:Apache MXNet、Chainer、PyTorch、TensorFlow 和 Keras
稳定版本与候选版本
Conda AMI 使用每个框架中最新正式版本的优化二进制文件。不会有候选版本和实验性功能。优化取决
于框架对 Intel 的 MKL DNN 等加速技术的支持,这些技术可加快在 C5、C4 和 C3 CPU 实例类型上的训
练和推理速度。二进制文件也将被编译以支持高级 Intel 指令集,包括但不限于 AVX、AVX-2、SSE4.1 和
SSE4.2。这些指令将加快 Intel CPU 架构上向量和浮点运算的速度。此外,对于 GPU 实例类型,将使用最
新官方版本支持的任何版本更新 CUDA 和 cuDNN。
采用 Conda 的 Deep Learning AMI 会在框架首次激活时自动为您的 EC2 实例安装框架的最优化版本。有关
更多信息,请参阅 使用 采用 Conda 的 Deep Learning AMI (p. 17)。
如果要使用自定义或优化的版本选项从源安装,Deep Learning Base AMI (p. 4) 可能是更好的选择。
CUDA 支持
采用 Conda 的 Deep Learning AMI 的 CUDA 版本以及每个所支持的框架:
使用 cuDNN 7 的 CUDA 10:PyTorch、TensorFlow
使用 cuDNN 7 的 CUDA 9:Apache MXNet、Caffe2、Chainer、CNTK、Keras、Theano
使用 cuDNN 6 的 CUDA 8:Caffe
可以在 DLAMI:发行说明 (p. 142)中找到特定的框架版本号
选择这个 DLAMI 类型,或通过“后续步骤”选项了解有关其他 DLAMI 的更多信息。
采用 Conda 的 Deep Learning AMI 选项 (p. 136)
后续步骤
Deep Learning Base AMI (p. 4)
相关主题
有关使用采用 Conda 的 Deep Learning AMI 的教程,请参阅使用 采用 Conda 的 Deep Learning
AMI (p. 17)教程。
Deep Learning Base AMI
Deep Learning Base AMI 就像是一个用于深度学习的空白画布。它包含您需要的一切,直到安装特定的框
架。它将拥有您选择的 CUDA 版本。
为什么选择 Base DLAMI
该 AMI 团队对于那些想要分享深度学习项目和建立最新版本的项目贡献者非常有用。适用于那些希望推出自
己环境且有信心安装和使用最新 NVIDIA 软件的人员,从而他们可以专注于选择要安装的框架和版本。
选择这个 DLAMI 类型,或通过“后续步骤”选项了解有关其他 DLAMI 的更多信息。
4深度学习 AMI 开发人员指南
CUDA
Deep Learning Base AMI 选项 (p. 137)
后续步骤
CUDA 安装和框架绑定 (p. 5)
相关主题
使用 Deep Learning Base AMI (p. 20)
CUDA 安装和框架绑定
深度学习都非常一流,但每个框架都提供“稳定”版本。这些稳定版本可能不适用于最新的 CUDA 或 cuDNN
实施和功能。您决定怎么做? 这最终取决于您的使用案例和您需要的功能。如果您不确定,则使用最新的
采用 Conda 的 Deep Learning AMI.它具有所有框架的官方 PIP 二进制文件 ( 包含 CUDA 8、CUDA 9 和
CUDA 10),使用每个框架都支持的任何最新版本。如果您需要最新版本,并要自定义深度学习环境,请使用
Deep Learning Base AMI。
如需进一步指导,请在 稳定版本与候选版本 (p. 4) 上查看我们的指南。
选择具有 CUDA 的 DLAMI
Deep Learning Base AMI (p. 4) 具有 CUDA 8、9 和 10。
采用 Conda 的 Deep Learning AMI (p. 3) 具有 CUDA 8、9 和 10。
使用 cuDNN 7 的 CUDA 10:PyTorch
使用 cuDNN 7 的 CUDA 9:Apache MXNet、Caffe2、Chainer、CNTK、Keras、TensorFlow、Theano
使用 cuDNN 6 的 CUDA 8:Caffe
有关 DLAMI 类型和操作系统的安装选项,请参阅每个 CUDA 版本和 选项页面:
采用 CUDA 10 的 Deep Learning AMI 选项 (p. 138)
采用 CUDA 9 的 Deep Learning AMI 选项 (p. 138)
采用 CUDA 8 的 Deep Learning AMI 选项 (p. 139)
采用 Conda 的 Deep Learning AMI 选项 (p. 136)
Deep Learning Base AMI 选项 (p. 137)
可以在 DLAMI:发行说明 (p. 142)中找到特定的框架版本号
选择这个 DLAMI 类型,或通过“后续步骤”选项了解有关其他 DLAMI 的更多信息。
选择一个 CUDA 版本并在附录中查看具有该版本的完整 DLAMI 列表,或者使用“后续步骤”选项了解不同
DLAMI 的更多信息。
后续步骤
DLAMI 操作系统选项 (p. 6)
相关主题
有关在 CUDA 版本之间切换的说明,请参阅使用 Deep Learning Base AMI (p. 20)教程。
5深度学习 AMI 开发人员指南
OS
DLAMI 操作系统选项
DLAMI 针对以下列出的操作系统提供。如果您更熟悉 CentOS 或 RedHat,您将更能适应 AWS Deep
Learning AMI Amazon Linux 选项 (p. 140) 或 AWS Deep Learning AMI Amazon Linux 2 选项 (p. 141)。
否则,您可能更喜欢 AWS Deep Learning AMI,Ubuntu 选项 (p. 139)。
如果您需要 Windows 操作系统,可在此处找到几个选项:AWS Deep Learning AMI,Windows 选
项 (p. 141)。
选择其中一个操作系统并在附录中查看完整列表,或继续后续步骤,选择您的 AMI 和实例类型。
AWS Deep Learning AMI Amazon Linux 选项 (p. 140)
AWS Deep Learning AMI Amazon Linux 2 选项 (p. 141)
AWS Deep Learning AMI,Ubuntu 选项 (p. 139)
AWS Deep Learning AMI,Windows 选项 (p. 141)
如入门概述中所述,您有几个访问 DLAMI 的选项,但首先您应评估您所需的实例类型。您还应该确定您打算
使用的 AWS 区域。
后续步骤
选择 DLAMI 的实例类型 (p. 6)
选择 DLAMI 的实例类型
选择实例类型可能是另一个挑战,但是我们可以通过几个关于如何选择最佳实例的指针来让这个过程更容
易。请记住,DLAMI 是免费的,但底层的计算资源并不是。
如果您不熟悉深度学习,那么您可能需要一个具有单一 GPU 的“入门级”实例。
如果您注重预算,那么您将需要启动更小一点的实例,即看看只有 CPU 的实例。
如果您有兴趣运行训练模型来进行推理和预测(而不是训练),则您可能需要运行 Amazon Elastic
Inference。这将使您能够访问一部分 GPU,因此,您可以经济地进行扩展。对于大量推理服务,您可能会
发现具有大量内存的 CPU 实例(甚至是这些实例的集群)是更佳的解决方案。
如果您有兴趣训练包含大量数据的模型,那么您可能需要更大的实例,甚至是 GPU 实例集群。
DLAMI 并非在每个区域都可用,但可以将 DLAMI 复制到您选择的区域。有关更多信息,请参阅 复制 AMI。
每个区域支持不同范围的实例类型,而且不同区域的实例类型成本通常稍有不同。在每个 DLAMI 主页面上,您将看到一个实例成本列表。请注意区域选择列表,并确保您选择一个靠近您或您的客户的区域。如果您打
算使用多个 DLAMI 且可能创建一个集群,请确保为集群中的所有节点使用相同的区域。
有关实例更多详细信息,请查看 EC2 实例类型。
有关区域的更多信息,请访问 EC2 区域。
因此,在考虑到所有这些要点后,请记下最适用于您的使用案例和预算的实例类型。本指南中的其他主题有
助于进一步给您提供信息和进一步让您了解详情。
Important
Deep Learning AMI 包含由 NVIDIA Corporation 开发、拥有或提供的驱动程序、软件或工具包。您
同意仅在包含 NVIDIA 硬件的 Amazon EC2 实例上使用这些 NVIDIA 驱动程序、软件或工具包。
主题
推荐的 GPU 实例 (p. 7)
6深度学习 AMI 开发人员指南
GPU
推荐的 CPU 实例 (p. 7)
DLAMI 的定价 (p. 7)
后续步骤
推荐的 GPU 实例 (p. 7)
推荐的 GPU 实例
GPU 实例被推荐用于最深度的学习目的。在 GPU 实例上训练新模型比 CPU 实例更快。您可以在有多个
GPU 实例的情况下以线性方式进行缩放,也可以在具有 GPU 的多个实例上使用分布式训练。
Amazon EC2 P3 实例 最多具有 8 个 NVIDIA Tesla V100 GPU。
Amazon EC2 P2 实例 最多具有 16 个 NVIDIA NVIDIA K80 GPU。
Amazon EC2 G3 实例 最多具有 4 个 NVIDIA Tesla M60 GPU。
查看 EC2 实例类型 并选择“加速计算”来查看不同的 GPU 实例选项。
后续步骤
推荐的 CPU 实例 (p. 7)
推荐的 CPU 实例
无论您是在关注预算,了解深度学习,还是只是想运行一项预测服务,您在 CPU 类别中都有许多经济实惠
的选项。某些框架利用了 Intel 的 MKL DNN,这将加快 C5 (并非在所有区域中都可用)、C4 和 C3 CPU 实例
类型上的训练和推理速度。它还将加快 GPU 实例类型上的推理。
Amazon EC2 C5 实例最多具有 72 个 Intel vCPU。
Amazon EC2 C4 实例拥有多达 36 个 Intel vCPU。
查看 EC2 实例类型并查找计算优化来查看其他 CPU 实例选项。
Note
C5 实例 (并未在所有区域提供) 在科学建模、批处理、分布式分析、高性能计算 (HPC) 和机器深度
学习推理方面表现出色。
Important
如果您计划使用 Caffe,则应改为选择一个 GPU 实例。在 DLAMI 上,Caffe 仅适用于 GPU 支持,无法在 CPU 模式下运行。
后续步骤
DLAMI 的定价 (p. 7)
DLAMI 的定价
DLAMI 是免费的,但是,您仍然需要承担 Amazon EC2 或其他 AWS 服务成本。包含的深度学习框架是免费
的,每个都有自己的开源许可证。NVIDIA 的 GPU 软件是免费的,也有自己的许可证。
为何说它既免费,也不免费呢? 什么是“Amazon EC2 或其他 AWS 服务成本”?
这是一个常见的问题。Amazon EC2 上的一些实例类型被标记为免费。这些实例通常较小,但仍可以在这些
免费的实例上运行 DLAMI。这意味着当您只使用该实例的容量时,它是完全免费的。如果您需要一个功能更
7深度学习 AMI 开发人员指南
定价
强大、具有更多 CPU 核心、更多磁盘空间、更多 RAM 和一个或多个 GPU 的实例,那么这些实例很可能不
在免费套餐实例类中。这意味着,您将需要支付这些成本。一种想法是软件仍然是免费的,但是您必须为您
使用的底层硬件付费。
看看选择 DLAMI 的实例类型 (p. 6)了解更多关于可选择的实例大小的相关信息,以及每种类型的实例可
以预期完成的事情。
下一步
启动和配置 DLAMI (p. 9)
8深度学习 AMI 开发人员指南
步骤 1:启动 DLAMI
启动和配置 DLAMI
如果您在这里,您应该已经有了想要启动哪个 AMI 的想法。如果没有,请使用从整个入门 (p. 3)中找到的
AMI 选择指南选择一个 DLAMI,或使用附录部分 AMI 选项 (p. 136)中的完整 AMI 列表。
您还应该知道您要选择哪个实例类型和区域。否则,请浏览选择 DLAMI 的实例类型 (p. 6)。
Note
我们将在示例中使用 p2.xlarge 作为默认实例类型。只需将此替换为您心中的任何实例类型。
Important
如果您计划使用 Elastic Inference,您必须在启动 DLAMI 之前完成 Elastic Inference 设置。
主题
步骤 1:启动 DLAMI (p. 9)
EC2 控制台 (p. 9)
Marketplace 搜索 (p. 10)
步骤 2:连接到 DLAMI (p. 10)
步骤 3:保护 DLAMI 实例 (p. 11)
步骤 4:测试您的 DLAMI (p. 11)
清除 (p. 11)
设置 Jupyter Notebook 服务器 (p. 11)
步骤 1:启动 DLAMI
Note
在本演练中,我们可能会针对 Deep Learning AMI (Ubuntu) 进行引用。即使您选择其他 DLAMI,您
也应能按照本指南进行操作。
启动实例
1. 您可以通过几种方式启动 DLAMI。请选择一种:
EC2 控制台 (p. 9)
Marketplace 搜索 (p. 10)
Tip
CLI 选项:如果您选择使用 AWS CLI 启动 DLAMI,您将需要 AMI 的 ID、区域和实例类型、以
及您的安全令牌信息。请确保您已拥有 AMI 和实例 ID。如果您尚未设置 AWS CLI,请首先按
照安装 AWS 命令行接口指南进行设置。
2. 如果您已经完成了上述某个选项的步骤,请等待实例准备好。这通常仅需要几分钟时间。您可以在 EC2
控制台中验证实例的状态。
EC2 控制台
1. 打开 EC2 控制台.
2. 请注意最顶层的导航中的当前区域。如果这不是您所需的 AWS 区域,请更改此选项,然后再继续。有
关更多信息,请参阅 EC2 区域。
9深度学习 AMI 开发人员指南
Marketplace 搜索
3. 选择 Launch Instance。
4. 根据名称搜索所需的实例:
1. 选择 AWS Marketplace,或...
2. 选择 QuickStart。 此处只会列出一部分可用的 DLAMI。
3. 搜索 Deep Learning AMI。只查找子类型,例如所需的操作系统,或基础、Conda、源等。
4. 浏览这些选项,并在选择时单击 Select。
5. 检查详细信息,然后选择 Continue。
6. 选择一个实例类型。
Note
如果您要使用 Elastic Inference (EI),请单击 Configure Instance Details (配置实例详细信息),选择 Add an Amazon EI accelerator (添加 Amazon EI 加速器),然后选择 Amazon EI 加速器的
大小。
7. 选择 Review and Launch。
8. 检查详细信息和定价。选择 Launch。
Tip
查看 开始使用 AWS Deep Learning AMI 进行深度学习,这里有包含屏幕截图的演练!
下一步
步骤 2:连接到 DLAMI (p. 10)
Marketplace 搜索
1. 浏览 AWS Marketplace 并搜索 AWS Deep Learning AMI。
2. 浏览这些选项,并在选择时单击 Select。
3. 检查详细信息,然后选择 Continue。
4. 浏览详细信息,并记录 Region。如果这不是您所需的 AWS 区域,请更改此选项,然后再继续。有关更
多信息,请参阅 EC2 区域。
5. 选择一个实例类型。
6. 选择一个密钥对,可以使用您的默认密钥对,也可以创建新密钥对。
7. 检查详细信息和定价。
8. 选择 Launch with 1-Click。
下一步
步骤 2:连接到 DLAMI (p. 10)
步骤 2:连接到 DLAMI
从客户端(Windows、MacOS 或 Linux)连接到您启动的 DLAMI。有关更多信息,请参阅 Amazon EC2 用
户指南(适用于 Linux 实例) 中的连接到您的 Linux 实例。
如果在登录后您希望执行 Jupyter 设置,请在手边保留一份 SSH 登录命令。您将使用这个命令的各种变体连
接到 Jupyter 网页。
下一步
10深度学习 AMI 开发人员指南
步骤 3:保护 DLAMI 实例
步骤 3:保护 DLAMI 实例 (p. 11)
步骤 3:保护 DLAMI 实例
一旦有修补程序和更新推出便立即应用,从而始终保持操作系统和其他已安装软件为最新。
如果您使用的是 Amazon Linux 或 Ubuntu,则当您登录到您 DLAMI 时,便会收到更新通知(如果有)并且
会看到更新说明。有关 Amazon Linux 维护的更多信息,请参阅更新实例软件。对于 Ubuntu 实例,请参阅
官方 Ubuntu 文档。
在 Windows 上,定期检查 Windows Update 有无软件和安全更新。如果您愿意,可以自动应用更新。
Important
有关 Meltdown 和 Spectre 漏洞以及如何修补操作系统解决以这些问题的信息,请参阅安全公告
AWS-2018-013。
步骤 4:测试您的 DLAMI
根据您的 DLAMI 版本不同,您的测试选项也会不同:
采用 Conda 的 Deep Learning AMI (p. 3) – 转到 使用 采用 Conda 的 Deep Learning AMI (p. 17)。
Deep Learning Base AMI (p. 4) – 引用所需框架的安装文档。
您还可以创建 Jupyter 笔记本电脑,试用教程,或开始使用 Python 编码。有关更多信息,请参阅设置
Jupyter Notebook 服务器 (p. 11)。
清除
当您不再需要 DLAMI 时,您可以将其停止或终止,以避免产生持续的费用。停止的实例会保留,以便您可以
稍后再继续。您的配置、文件和其他非易失性信息都存储在 Amazon S3 上的卷中。在实例停止的情况下,将收取您小额 S3 费用来保留该卷,但在计算资源处于停止状态时将不再对其收取费用。当您重新启动实例
时,它将挂载该卷,且您的数据会重新恢复。如果您终止实例,它将消失,且您将无法重新启动它。您的
数据实际仍驻留在 S3 中,因此,为了防止任何进一步的费用,您还需要删除该卷。有关更多说明,请参阅
Amazon EC2 用户指南(适用于 Linux 实例) 中的 终止您的实例。
设置 Jupyter Notebook 服务器
Jupyter Notebook 是一个 Web 应用程序,可以让您使用 Web 浏览器管理笔记本文档。
要设置 Jupyter Notebook,您需要完成以下操作:
在您的 Amazon EC2 实例上配置 Jupyter Notebook 服务器。
配置您的客户端,以便您可以连接到 Jupyter Notebook 服务器。我们提供适用于 Windows、macOS 和
Linux 客户端的配置说明。
登录 Jupyter Notebook 服务器,测试设置。
有关 Jupyter Notebook 的更多信息,请参阅 Jupyter。
主题
保护您的 Jupyter 服务器 (p. 12)
11深度学习 AMI 开发人员指南
保护 Jupyter
启动 Jupyter Notebook 服务器 (p. 12)
配置客户端以连接到 Jupyter 服务器 (p. 13)
登录 Jupyter Notebook 服务器进行测试 (p. 14)
保护您的 Jupyter 服务器
下面我们使用 SSL 和自定义密码来设置 Jupyter。
连接到 Amazon EC2 实例,然后完成以下步骤。
配置 Jupyter 服务器
1. Jupyter 提供了一个密码实用工具。运行以下命令,在命令提示符处输入您的首选密码。
jupyter notebook password
输出类似如下:
Enter password:
Verify password:
[NotebookPasswordApp] Wrote hashed password to homeubuntu.jupyter
jupyter_notebook_config.json
2. 创建自签名 SSL 证书。按照提示填写您认为适当的区域。您的答案将不会影响证书的功能性。
cd ~
mkdir ssl
cd ssl
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout mykey.key -out mycert.pem
Note
您可能希望创建一个常规的 SSL 证书,该证书为第三方签名,且不会导致浏览器向您发出安全警
告。此过程涉及内容较多。访问 Jupyter 的文档以了解更多信息。
下一步
启动 Jupyter Notebook 服务器 (p. 12)
启动 Jupyter Notebook 服务器
现在,您可以通过登录实例,然后运行以下命令来启动 Jupyter 服务器,该命令将使用您在上一步中创建的
SSL 证书。
jupyter notebook --certfile=~sslmycert.pem --keyfile ~sslmykey.key
启动服务器后,即可通过 SSH 隧道从您的客户端计算机连接到服务器。当服务器运行时,您将看到来自
Jupyter 的一些输出,这些输出证实服务器正在运行。此时,请忽略称您可以通过本地主机 URL 访问服务器
的标注,因为这其实不可以,直到您创建了隧道为止。
Note
当您使用 Jupyter Web 界面切换框架时,Jupyter 将处理切换环境。更多有关信息见于通过 Jupyter
切换环境 (p. 22)。
下一步
12深度学习 AMI 开发人员指南
配置客户端
配置客户端以连接到 Jupyter 服务器 (p. 13)
配置客户端以连接到 Jupyter 服务器
配置您的客户端连接到 Jupyter Notebook 服务器后,您可以在您的工作区中的服务器上创建和访问笔记本,并在服务器上运行深度学习代码。
有关配置信息,请选择以下链接之一。
主题
配置 Windows 客户端 (p. 13)
配置 Linux 或 macOS 客户端 (p. 13)
配置 Windows 客户端
准备
请确保您拥有设置 SSH 隧道所需的以下信息:
Amazon EC2 实例的公有 DNS 名称。您可以在 EC2 控制台中找到公有 DNS 名称。
私有密钥文件的密钥对。有关访问密钥对的更多信息,请参阅 Amazon EC2 用户指南(适用于 Linux 实
例) 中的 Amazon EC2 密钥对。
从 Windows 客户端使用 Jupyter 笔记本
请参阅这些关于从 Windows 客户端连接到您的 Amazon EC2 实例的指南。
1. 排查实例的连接问题
2. 使用 PuTTY 从 Windows 连接到 Linux 实例
要创建连接 Jupyter 服务器的隧道,建议先在您的 Windows 客户端上安装 Git Bash,然后按照 Linux
macOS 客户端说明操作。不过,您可以使用任何方法打开包含端口映射的 SSH 隧道。请参阅 Jupyter 的文
档了解更多信息。
下一步
配置 Linux 或 macOS 客户端 (p. 13)
配置 Linux 或 macOS 客户端
1. 打开终端。
2. 运行以下命令,将本地端口 8888 上的所有请求转发到远程 Amazon EC2 实例上的端口 8888。通过替
换密钥位置来更新命令,以访问 Amazon EC2 实例和您的 Amazon EC2 实例的公有 DNS 名称。注意,对于 Amazon Linux AMI,用户名是 ec2-user 而非 ubuntu。
ssh -i ~mykeypair.pem -N -f -L 8888:localhost:8888 ubuntu@ec2----
.compute-1.amazonaws.com
该命令在您的客户端与运行 Jupyter Notebook 服务器的远程 Amazon EC2 实例之间打开一个隧道。
下一步
登录 Jupyter Notebook 服务器进行测试 (p. 14)
13深度学习 AMI 开发人员指南
登录 Jupyter Notebook 服务器
登录 Jupyter Notebook 服务器进行测试
现在,您已准备就绪,可登录到 Jupyter Notebook 服务器。
接下来,通过浏览器测试与服务器的连接。
1. 在浏览器的地址栏中,键入以下 URL,或单击此链接:https:localhost:8888
2. 借助自签名 SSL 证书,您的浏览器会警告和提示您避免继续访问网站。
由于这是您自己设置的,所以可以安全地继续。根据您的浏览器情况,有可能出现“高级”、“显示详细信
息”等类似按钮。
14深度学习 AMI 开发人员指南
登录 Jupyter Notebook 服务器
单击此消息,然后单击“proceed to localhost”(前进到本地主机)链接。如果连接成功,则会看到
Jupyter Notebook 服务器网页。此时,系统将要求您提供先前设置的密码。
15深度学习 AMI 开发人员指南
登录 Jupyter Notebook 服务器
现在,您可以访问 DLAMI 上运行的 Jupyter Notebook 服务器了。您可以创建新的笔记本或运行提供
的教程 (p. 22)。
16深度学习 AMI 开发人员指南
Conda DLAMI
使用 DLAMI
主题
使用 采用 Conda 的 Deep Learning AMI (p. 17)
使用 Deep Learning Base AMI (p. 20)
运行 Jupyter 笔记本电脑教程 (p. 21)
教程 (p. 22)
以下部分介绍如何使用 采用 Conda 的 Deep Learning AMI 切换环境、从每个框架运行示例代码以及运行
Jupyter,以便您可以尝试不同的笔记本教程。
使用 采用 Conda 的 Deep Learning AMI
主题
采用 Conda 的 Deep Learning AMI 简介 (p. 17)
步骤 1:登录您的 DLAMI (p. 17)
步骤 2:启动 MXNet Python 3 环境 (p. 18)
步骤 3:测试某些 MXNet 代码 (p. 19)
步骤 4:切换到 TensorFlow 环境 (p. 19)
删除环境 (p. 20)
采用 Conda 的 Deep Learning AMI 简介
Conda 是一个开源程序包管理系统和环境管理系统,在 Windows、macOS 和 Linux 上运行。Conda 快速安
装、运行和更新程序包及其依赖项。Conda 可轻松创建、保存、加载和切换本地计算机上的环境。
采用 Conda 的 Deep Learning AMI 已完成配置,以便让您轻松切换深度学习环境。以下说明为您介绍与
conda 相关的一些基本命令。它们还可以帮助您验证框架的基本导入正常运行,并且您可以使用框架运行一
些简单操作。然后,您可以继续查看随 DLAMI 提供的更全面的教程,或者每个框架的项目站点上提供的框架
示例。
步骤 1:登录您的 DLAMI
登录服务器后,您会看到服务器的“每日消息”(MOTD),它介绍了可以用来切换不同深度学习框架的各种
Conda 命令。以下是示例 MOTD。由于新版本 DLAMI 的发布,您的特定 MOTD 可能不同。
=============================================================================
__| __|_ )
_| ( Deep Learning AMI (Ubuntu)
___|\___|___|
=============================================================================
Welcome to Ubuntu 16.04.4 LTS (GNULinux 4.4.0-1062-aws x86_64v)
Please use one of the following commands to start the required environment with the
framework of your choice:
17深度学习 AMI 开发人员指南
步骤 2:启动 MXNet Python 3 环境
for MXNet(+Keras2) with Python3 (CUDA 9.0 and Intel MKL-DNN)
_______________________________ source activate mxnet_p36
for MXNet(+Keras2) with Python2 (CUDA 9.0 and Intel MKL-DNN)
_______________________________ source activate mxnet_p27
for TensorFlow(+Keras2) with Python3 (CUDA 9.0 and Intel MKL-DNN) _____________________
source activate tensorflow_p36
for TensorFlow(+Keras2) with Python2 (CUDA 9.0 and Intel MKL-DNN) _____________________
source activate tensorflow_p27
for Theano(+Keras2) with Python3 (CUDA 9.0) _______________________________________________
source activate theano_p36
for Theano(+Keras2) with Python2 (CUDA 9.0) _______________________________________________
source activate theano_p27
for PyTorch with Python3 (CUDA 9.0 and Intel MKL) ________________________________________
source activate pytorch_p36
for PyTorch with Python2 (CUDA 9.0 and Intel MKL) ________________________________________
source activate pytorch_p27
for CNTK(+Keras2) with Python3 (CUDA 9.0 and Intel MKL-DNN)
_________________________________ source activate cntk_p36
for CNTK(+Keras2) with Python2 (CUDA 9.0 and Intel MKL-DNN)
_________________________________ source activate cntk_p27
for Caffe2 with Python2 (CUDA 9.0) ________________________________________________________
source activate caffe2_p27
for Caffe with Python2 (CUDA 8.0)
__________________________________________________________ source activate caffe_p27
for Caffe with Python3 (CUDA 8.0)
__________________________________________________________ source activate caffe_p35
for Chainer with Python2 (CUDA 9.0 and Intel iDeep) ______________________________________
source activate chainer_p27
for Chainer with Python3 (CUDA 9.0 and Intel iDeep) ______________________________________
source activate chainer_p36
for base Python2 (CUDA 9.0)
__________________________________________________________________ source activate python2
for base Python3 (CUDA 9.0)
__________________________________________________________________ source activate python3
每个 Conda 命令具有以下模式:
source activate framework_python-version
例如,您可能会看到 for MXNet(+Keras1) with Python3 (CUDA 9) _____________________
source activate mxnet_p36,这意味着该环境具有 MXNet、Keras 1、Python 3 和 CUDA 9。要激活
此环境,您可以使用以下命令:
source activate mxnet_p36
此命令的另一个变体是:
source activate mxnet_p27
这意味着该环境具有 MXNet 和 Python 2 (使用 Keras 1 和 CUDA 9)。
步骤 2:启动 MXNet Python 3 环境
我们首先测试 MXNet,以便让您了解它有多么简单。
Note
在启动您的第一个 Conda 环境时,请在其加载期间耐心等待。采用 Conda 的 Deep Learning AMI
会在框架首次激活时自动为您的 EC2 实例安装框架的最优化版本。您不应期望后续的延迟。
18深度学习 AMI 开发人员指南
步骤 3:测试某些 MXNet 代码
激活适用于 Python 3 的 MXNet 虚拟环境。
source activate mxnet_p36
这将激活使用 Python 3 的 MXNet 环境。或者,您也可以激活 mxnet_p27,以构建使用 Python 2 的环境。
步骤 3:测试某些 MXNet 代码
要测试您的安装,请使用 Python 编写 MXNet 代码,以使用 NDArray API 创建并打印数组。有关更多信
息,请参阅 NDArray API。
1. 启动 iPython 终端。
(mxnet_p36) ipython
2. 导入 MXNet。
import mxnet as mx
您可能会看到一条关于第三方软件包的警告消息。您可以忽略它。
3. 创建一个 5x5 矩阵、一个 NDArray 实例,将元素初始化为 0。打印数组。
mx.ndarray.zeros((5,5)).asnumpy
验证结果。
array([[ 0., 0., 0., 0., 0.],[ 0., 0., 0., 0., 0.],[ 0., 0., 0., 0., 0.],[ 0., 0., 0., 0., 0.],[ 0., 0., 0., 0., 0.]], dtype=float32)
您可以在 MXNet 教程部分找到 MXNet 的更多示例。
步骤 4:切换到 TensorFlow 环境
现在我们将切换到 TensorFlow! 如果您仍然处于 iPython 控制台中,则使用 quit,然后准备切换环境。
1. 激活适用于 Python 3 的 TensorFlow 虚拟环境。
source activate tensorflow_p36
2. 启动 iPython 终端。
(tensorflow_36) ipython
3. 运行快速 TensorFlow 程序。
import tensorflow as tf
hello = tf.constant('Hello, TensorFlow!')
sess = tf.Session
19深度学习 AMI 开发人员指南
删除环境
print(sess.run(hello))
您应该会看到“Hello, Tensorflow!” 现在,您已测试了两种不同的深度学习框架,您已了解如何切换框架。
Tip
有关已知问题的信息,请参阅发行说明:
Deep Learning AMI (Ubuntu) 已知问题 (p. 162)
Deep Learning AMI (Amazon Linux) 已知问题 (p. 159)
后续步骤
运行 Jupyter 笔记本电脑教程 (p. 21)
删除环境
注意:如果您用尽了 DLAMI 上的空间,则可以选择卸载不用的 Conda 软件包:
conda env list
conda env remove –name
使用 Deep Learning Base AMI
使用 Deep Learning Base AMI
Base AMI 附带 GPU 驱动程序基础平台,以及可用来部署您自己的自定义深度学习环境的加速库。默认情况
下,该 AMI 配置为采用 NVIDIA CUDA 10 环境。但是,您也可以切换到 CUDA 9 或 CUDA 8 环境。有关如
何执行此操作,请参阅以下说明。
配置 CUDA 版本
您可以使用以下 bash 命令选择并验证特定 CUDA 版本。
CUDA 10:
sudo rm usrlocalcuda
sudo ln -s usrlocalcuda-10.0 usrlocalcuda
CUDA 9.2:
sudo rm usrlocalcuda
sudo ln -s usrlocalcuda-9.2 usrlocalcuda
CUDA 9:
sudo rm usrlocalcuda
sudo ln -s usrlocalcuda-9.0 usrlocalcuda
CUDA 8:
20深度学习 AMI 开发人员指南
Jupyter 笔记本电脑
sudo rm usrlocalcuda
sudo ln -s usrlocalcuda-8.0 usrlocalcuda
Tip
然后,您可以通过运行 NVIDIA 的 deviceQuery 程序验证 CUDA 版本。
cd usrlocalcudasamples1_UtilitiesdeviceQuery
sudo make
.deviceQuery
运行 Jupyter 笔记本电脑教程
每个深度学习项目的源代码都附带了教程和示例,大多数情况下,它们可以在任何 DLAMI 上运行。如果您选
择了 采用 Conda 的 Deep Learning AMI (p. 3),那么您将获得一些已经建立并准备好尝试的精选教程的额外
好处。
Important
要运行安装在 DLAMI 上的 Jupyter 笔记本电脑教程,您需要设置 Jupyter Notebook 服务
器 (p. 11)。
Jupyter 服务器运行后,您可以通过 Web 浏览器运行这些教程。如果您正在运行 采用 Conda 的 Deep
Learning AMI 或者如果您已经建立了 Python 环境,则可以从 Jupyter 笔记本界面切换 Python 内核。在尝试
运行特定于框架的教程之前,请选择合适的内核。我们为 采用 Conda 的 Deep Learning AMI 用户提供了更
多这方面的示例。
Note
许多教程需要一些额外 Python 模块,它们在您的 DLAMI 上可能尚未设置。如果您收到类似 xyz
module not found 的错误,请登录到 DLAMI,激活环境(如上所述),然后安装必要的模
块。
Tip
深度学习教程和示例通常依赖于一个或多个 GPU。如果您的实例类型没有 GPU,您可能需要更改
一些示例代码才能使其运行。
导航已安装的教程
一旦您登录到 Jupyter 服务器且可以看到教程目录(仅限 采用 Conda 的 Deep Learning AMI 上)时,也会
看到按每个框架名称排列的教程文件夹。如果您没有看到某个框架,则表明在您当前 DLAMI 上该框架的教程
不可用。单击框架名称以查看列出的教程,然后单击一个教程,将其启动。
在 采用 Conda 的 Deep Learning AMI 上第一次运行笔记本电脑时,它会想知道您想使用哪个环境。它会提
示您从列表中进行选择。每个环境都根据以下模式命名:
Environment (conda_framework_python-version)
例如,您可能会看到 Environment (conda_mxnet_p36),这意味着该环境具有 MXNet 和 Python 3。您
也可能会看到 Environment (conda_mxnet_p27),这意味着该环境具有 MXNet 和 Python 2。
21深度学习 AMI 开发人员指南
通过 Jupyter 切换环境
Tip
如果您想知道哪个版本的 CUDA 处于活动状态,一种查看方法是在首次登录到 DLAMI 时在 MOTD
中查看。
通过 Jupyter 切换环境
如果您决定尝试一个不同框架的教程,一定要验证当前正在运行的内核。此信息可以在 Jupyter 界面
的右上方看到,就在注销按钮的下方。您可以在任何打开的笔记本电脑上更改内核,方法是依次单击
Kernel、Change Kernel 菜单项,然后单击正运行的笔记本电脑适合的环境。
此时您需要重新运行任何单元,因为内核中的更改将会擦除之前运行的任何内容的状态。
Tip
在框架之间进行切换可能很有趣而且很有教育意义,但是可能导致耗尽内存。如果您开始遇到错
误,请查看运行 Jupyter 服务器的终端窗口。这里包含有用的消息和错误记录,您可能会看到内存
不足的错误。要解决这一问题,您可以转到 Jupyter 服务器的主页中,单击 Running 选项卡,然后
为每个教程单击 Shutdown,因为这些教程可能仍然在后台运行,导致耗尽了所有内存。
后续步骤
有关每个框架的更多示例和示例代码,请单击 Next 或继续 Apache MXNet (incubating) (p. 23)。
教程
以下是有关如何使用 采用 Conda 的 Deep Learning AMI 的软件的教程。
主题
10 分钟教程 (p. 22)
激活框架 (p. 22)
调试和可视化 (p. 33)
分布式训练 (p. 36)
GPU 监控和优化 (p. 52)
推理 (p. 57)
将框架用于 ONNX (p. 60)
模型处理 (p. 68)
10 分钟教程
启动 AWS Deep Learning AMI (在 10 分钟内)
在 Amazon EC2 上使用 AWS Deep Learning Containers 训练深度学习模型(10 分钟)
激活框架
以下是 采用 Conda 的 Deep Learning AMI 上安装的深度学习框架。单击某个框架即可了解如何将其激活。
主题
22深度学习 AMI 开发人员指南
激活框架
Apache MXNet (incubating) (p. 23)
Caffe2 (p. 24)
Chainer (p. 25)
CNTK (p. 26)
Keras (p. 27)
PyTorch (p. 28)
TensorFlow (p. 30)
TensorFlow with Horovod (p. 31)
Theano (p. 32)
Apache MXNet (incubating)
激活 MXNet
本教程介绍如何在运行 采用 Conda 的 Deep Learning AMI (DLAMI on Conda) 的实例上激活 MXNet 并运行
MXNet 程序。
当框架的稳定的 Conda 程序包发布时,它会在 DLAMI 上进行测试并预安装。如果您希望运行最新的、未经
测试的每日构建版本,您可以手动安装 MXNet 的每日构建版本(试验) (p. 23)。
在 DLAMI with Conda 上运行 MXNet
1. 要激活该框架,请打开 DLAMI with Conda 的 Amazon Elastic Compute Cloud (Amazon EC2) 实例。
对于使用 CUDA 9.0 和 MKL-DNN 的 Python 3 上的 MXNet 和 Keras 2,运行以下命令:
source activate mxnet_p36
对于使用 CUDA 9.0 和 MKL-DNN 的 Python 2 上的 MXNet 和 Keras 2,运行以下命令:
source activate mxnet_p27
2. 启动 iPython 终端。
(mxnet_p36) ipython
3. 运行快速 MXNet 程序。创建一个 5x5 矩阵、一个 NDArray 实例,将元素初始化为 0。打印数组。
import mxnet as mx
mx.ndarray.zeros((5,5)).asnumpy
4. 验证结果。
array([[ 0., 0., 0., 0., 0.],[ 0., 0., 0., 0., 0.],[ 0., 0., 0., 0., 0.],[ 0., 0., 0., 0., 0.],[ 0., 0., 0., 0., 0.]], dtype=float32)
安装 MXNet 的每日构建版本(试验)
您可以将最新的 MXNet 工作版本安装到您的 采用 Conda 的 Deep Learning AMI 上的任一或两个 MXNet
Conda 环境。
23深度学习 AMI 开发人员指南
激活框架
从每日构建版本安装 MXNet
1. ? 对于 Python 3 MXNet 环境,请运行以下命令:
source activate mxnet_p36
对于 Python 2 MXNet 环境,请运行以下命令:
source activate mxnet_p27
2. 删除当前安装的 MXNet。
Note
其余步骤假定您使用的是 mxnet_p36 环境。
(mxnet_p36) pip uninstall mxnet-cu90mkl
3. 安装 MXNet 的最新的每日构建版本。
(mxnet_p36) pip install --pre mxnet-cu90mkl
4. 要验证您是否已成功安装最新的每日构建版本,请启动 IPython 终端并检查 MXNet 版本。
(mxnet_p36) ipython
import mxnet
print (mxnet.__version__)
输出应打印 MXNet 的最新稳定版本。
更多教程
您可以在 DLAMI 主目录的 采用 Conda 的 Deep Learning AMI 教程文件夹中找到更多教程。
1. 将 Apache MXNet for Inference 与 ResNet 50 模型结合使用 (p. 58)
2. 将适用于推理的 Apache MXNet 与 ONNX 模型结合使用 (p. 57)
3. 适用于 Apache MXNet 的模型服务器 (MMS) (p. 68)
有关更多教程和示例,请参阅该框架的官方 Python 文档、适用于 MXNet 的 Python API 或 Apache MXNet
网站。
Caffe2
Caffe2 教程
要激活框架,请按照您的 采用 Conda 的 Deep Learning AMI 上的这些说明进行操作。
只有使用 CUDA 9 和 cuDNN 7 的 Python 2 选项:
source activate caffe2_p27
启动 iPython 终端。
24深度学习 AMI 开发人员指南
激活框架
(caffe2_p27) ipython
运行快速 Caffe2 程序。
from caffe2.python import workspace, model_helper
import numpy as np
Create random tensor of three dimensions
x = np.random.rand(4, 3, 2)
print(x)
print(x.shape)
workspace.FeedBlob(my_x, x)
x2 = workspace.FetchBlob(my_x)
print(x2)
您应该会看到系统输出初始 numpy 随机数组,然后这些数组加载到了 Caffe2 blob 中。请注意,加载之后,它们是相同的。
更多教程
如需查看更多教程和示例,请参阅该框架的官方 Python 文档、Python API for Caffe2 和 Caffe2 网站。
Chainer
Chainer 是一种基于 Python 的灵活框架,用于轻松直观地编写复杂的神经网络架构。利用 Chainer,您可以
轻松使用多 GPU 实例进行训练。Chainer 还会自动记录结果、图表损失和精度并生成用于使用计算图来可视
化神经网络的输出。Chainer 包含在 采用 Conda 的 Deep Learning AMI (DLAMI with Conda) 中。
激活 Chainer
1. 连接到正在运行 采用 Conda 的 Deep Learning AMI 的实例。有关如何选择或连接到实例,请参阅the
section called “实例选择” (p. 6)或 Amazon EC2 文档。
2. ? 激活 Python 3 Chainer 环境:
source activate chainer_p36
激活 Python 2 Chainer 环境:
source activate chainer_p27
3. 启动 iPython 终端:
(chainer_p36) ipython
4. 测试导入 Chainer 以验证其是否运行正常:
import chainer
您可能会看到几条警告消息,但没有错误。
更多信息
请尝试有关Chainer (p. 36) 的教程。
25深度学习 AMI 开发人员指南
激活框架
您之前下载的位于源内的 Chainer 示例文件夹包含更多示例。请试用这些示例以了解其性能。
要了解有关 Chainer 的更多信息,请参阅 Chainer 文档网站。
CNTK
激活 CNTK
本教程介绍如何在运行 采用 Conda 的 Deep Learning AMI (DLAMI on Conda) 的实例上激活 CNTK 并运行
CNTK 程序。
当框架的稳定的 Conda 程序包发布时,它会在 DLAMI 上进行测试并预安装。如果您希望运行最新的、未经
测试的每日构建版本,您可以手动安装 CNTK 的每日构建版本(试验) (p. 26)。
在 DLAMI with Conda 上运行 CNTK
1. 要激活 CNTK,请打开 DLAMI with Conda 的 Amazon Elastic Compute Cloud (Amazon EC2) 实例。
对于使用 CUDA 9 和 cuDNN 7 的 Python 3:
source activate cntk_p36
对于使用 CUDA 9 和 cuDNN 7 的 Python 2:
source activate cntk_p27
2. 启动 iPython 终端。
(cntk_p36) ipython
3. ? 如果您具有 CPU 实例,请运行此快速 CNTK 程序。
import cntk as C
C.__version__
c = C.constant(3, shape=(2,3))
c.asarray
您应该看到 CNTK 版本,然后输出一个 2x3 的 3 数组。
如果您有 GPU 实例,可以使用以下代码示例对其进行测试。如果 CNTK 可以访问 GPU,则 True
的结果就是您所期望的。
from cntk.device import try_set_default_device, gpu
try_set_default_device(gpu(0))
安装 CNTK 的每日构建版本(试验)
您可以将最新的 CNTK 版本安装到 采用 Conda 的 Deep Learning AMI 上的任一或两个 CNTK Conda 环
境。
从每日构建安装 CNTK
1. ? 对于使用 CUDA 9.0 和 MKL-DNN 的 Python 3 上的 CNTK 和 Keras 2,运行以下命令:
source activate cntk_p36
26深度学习 AMI 开发人员指南
激活框架
对于使用 CUDA 9.0 和 MKL-DNN 的 Python 2 上的 CNTK 和 Keras 2,运行以下命令:
source activate cntk_p27
2. 其余步骤假定您使用的是 cntk_p36 环境。删除当前安装的 CNTK。
(cntk_p36) pip uninstall cntk
3. 要安装 CNTK 每日构建,您首先需要从 CNTK 每日构建网站查找您要安装的版本。
4. ? (适用于 GPU 实例的选项)- 要安装每日构建版本,您将使用以下内容,从而在所需的构建版本中
进行替换:
(cntk_p36) pip install https:cntk.aiPythonWheelGPUlatest-nightly-build
将上一条命令中的 URL 替换为您的当前 Python 环境的 GPU 版本。
(适用于 CPU 实例的选项)- 要安装每日构建版本,您将使用以下内容,从而在所需的构建版本中
进行替换:
(cntk_p36) pip install https:cntk.aiPythonWheelCPU-Onlylatest-nightly-build
将上一条命令中的 URL 替换为您的当前 Python 环境的 CPU 版本。
5. 要验证您已成功安装最新的每日构建版本,请启动 IPython 终端并检查 CNTK 的版本。
(cntk_p36) ipython
import cntk
print (cntk.__version__)
输出应类似于以下内容:2.6-rc0.dev20181015
更多教程
有关更多教程和示例,请参阅该框架的官方 Python 文档、Python API for CNTK 或 CNTK 网站。
Keras
Keras 教程
1. 要激活此框架,请在您的the section called “Conda DLAMI” (p. 17) CLI 上使用这些命令。
对于使用 CUDA 9 和 cuDNN 7 的 Python 3 上的具有 MXNet 后端的 Keras 2:
source activate mxnet_p36
对于使用 CUDA 9 和 cuDNN 7 的 Python 2 上的具有 MXNet 后端的 Keras 2:
source activate mxnet_p27
对于使用 CUDA 9 和 cuDNN 7 的 Python 3 上具有 TensorFlow 后端的 Keras 2:
source activate tensorflow_p36
对于在使用 CUDA 9 和 cuDNN 7 的 Python 2 上具有 TensorFlow 后端的 Keras 2:
27深度学习 AMI 开发人员指南
激活框架
source activate tensorflow_p27
2. 要测试导入 Keras 以验证激活哪些后端,请使用这些命令:
ipython
import keras as k
以下内容应显示您的屏幕上:
Using MXNet backend
如果 Keras 使用的是 TensorFlow,则会显示以下内容:
Using TensorFlow backend
Note
如果您收到错误,或如果仍在使用错误的后端,则可以手动更新您的 Keras 配置。编辑
~.keraskeras.json 文件并将后端设置更改为 mxnet 或 tensorflow。
更多教程
有关使用具有 MXNet 后端的 Keras 的多 GPU 教程,请尝试Keras-MXNet Multi-GPU 训练教
程 (p. 45)。
您可以在 采用 Conda 的 Deep Learning AMI ~exampleskeras-mxnet 目录中查找有关具有 MXNet
后端的 Keras 的示例。
您可以在 采用 Conda 的 Deep Learning AMI ~exampleskeras 目录中查找有关具有 TensorFlow 后端
的 Keras 的示例。
有关其他教程和示例,请参阅 Keras 网站。
PyTorch
激活 PyTorch
当框架的稳定的 Conda 程序包发布时,它会在 DLAMI 上进行测试并预安装。如果您希望运行最新的、未经
测试的每日构建版本,您可以手动安装 PyTorch 的每日构建版本(试验) (p. 29)。
要激活当前安装的框架,请按照您的 采用 Conda 的 Deep Learning AMI 上的这些说明进行操作。
对于具有 CUDA 10 和 MKL-DNN 的 Python 3 上的 PyTorch,运行以下命令:
source activate pytorch_p36
对于具有 CUDA 10 和 MKL-DNN 的 Python 2 上的 PyTorch,运行以下命令:
source activate pytorch_p27
启动 iPython 终端。
(pytorch_p36) ipython
28深度学习 AMI 开发人员指南
激活框架
运行快速 PyTorch 程序。
import torch
x = torch.rand(5, 3)
print(x)
print(x.size)
y = torch.rand(5, 3)
print(torch.add(x, y))
您应该会看到系统输出初始随机数组,然后输出大小,然后添加另一个随机数组。
安装 PyTorch 的每日构建版本(试验)
如何从每日构建安装 PyTorch
您可以将最新的 PyTorch 工作版本安装到您的 采用 Conda 的 Deep Learning AMI 上的任一或两个 PyTorch
Conda 环境。
1. ? (适用于 Python 3 的选项)- 激活 Python 3 PyTorch 环境:
source activate pytorch_p36
(适用于 Python 2 的选项)- 激活 Python 2 PyTorch 环境:
source activate pytorch_p27
2. 其余步骤假定您使用的是 pytorch_p36 环境。删除当前安装的 PyTorch:
(pytorch_p36) pip uninstall torch
3. ? (适用于 GPU 实例的选项)- 使用 CUDA 10.0 安装最新的 PyTorch 每日构建版本:
(pytorch_p36) pip install torch_nightly -f https:download.pytorch.orgwhl
nightlycu100torch_nightly.html
(适用于 CPU 实例的选项)- 对于不使用 GPU 的实例,安装最新的 PyTorch 每日构建版本:
(pytorch_p36) pip install torch_nightly -f https:download.pytorch.orgwhl
nightlycputorch_nightly.html
4. 要验证您已成功安装最新的每日构建版本,请启动 IPython 终端并检查 PyTorch 版本。
(pytorch_p36) ipython
import torch
print (torch.__version__)
输出应类似于以下内容:1.0.0.dev20180922
5. 要验证 PyTorch 每日构建版本是否适用于 MNIST 示例,您可以从 PyTorch 的示例存储库运行测试脚
本:
(pytorch_p36) cd ~
(pytorch_p36) git clone https:github.compytorchexamples.git pytorch_examples
(pytorch_p36) cd pytorch_examplesmnist
(pytorch_p36) python main.py || exit 1
29深度学习 AMI 开发人员指南
激活框架
更多教程
您可以在 DLAMI 主目录的 采用 Conda 的 Deep Learning AMI 教程文件夹中找到更多教程。如需查看更多教
程和示例,请参阅该框架的官方文档、PyTorch 文档和 PyTorch 网站。
有关将 PyTorch 转换为 ONNX,然后加载到 MXNet 的教程 (p. 66)
有关将 PyTorch 转换为 ONNX,然后加载到 CNTK 的教程 (p. 64)
TensorFlow
激活 TensorFlow
本教程介绍如何在运行 采用 Conda 的 Deep Learning AMI (DLAMI on Conda) 的实例上激活 TensorFlow 并
运行 TensorFlow 程序。
当框架的稳定的 Conda 程序包发布时,它会在 DLAMI 上进行测试并预安装。如果您希望运行最新的、未经
测试的每日构建版本,您可以手动安装 TensorFlow 的每日构建版本(试验) (p. 30)。
在 DLAMI with Conda 上运行 TensorFlow
1. 为了激活 TensorFlow,打开 DLAMI with Conda 的 Amazon Elastic Compute Cloud (Amazon EC2) 实
例。
对于具有 CUDA 9.0 和 MKL-DNN 的 Python 3 上的 TensorFlow 和 Keras 2,运行以下命令:
source activate tensorflow_p36
对于具有 CUDA 9.0 和 MKL-DNN 的 Python 2 上的 TensorFlow 和 Keras 2,运行以下命令:
source activate tensorflow_p27
2. 启动 iPython 终端:
(tensorflow_p36) ipython
3. 运行 TensorFlow 程序以验证其是否正常运行:
import tensorflow as tf
hello = tf.constant('Hello, TensorFlow!')
sess = tf.Session
print(sess.run(hello))
Hello, TensorFlow! 应显示在您的屏幕上。
安装 TensorFlow 的每日构建版本(试验)
您可以将最新的 TensorFlow 版本安装到您的 采用 Conda 的 Deep Learning AMI 上的任一或两个
TensorFlow Conda 环境。
从每日构建版本安装 TensorFlow
1. ? 对于 Python 3 TensorFlow 环境,运行以下命令:
source activate tensorflow_p36
30深度学习 AMI 开发人员指南
激活框架
对于 Python 2 TensorFlow 环境,运行以下命令:
source activate tensorflow_p27
2. 删除当前安装的 TensorFlow。
Note
其余步骤假定您使用的是 mxnet_p36 环境。
(tensorflow_p36) pip uninstall tensorflow
3. 安装 TensorFlow 的最新每日构建版本。
(tensorflow_p36) pip install tf-nightly
4. 要验证您是否已成功安装最新的每日构建版本,请启动 IPython 终端并检查 TensorFlow 版本。
(tensorflow_p36) ipython
import tensorflow
print (tensorflow.__version__)
输出应类似于以下内容:1.12.0-dev20181012
更多教程
TensorFlow with Horovod (p. 46)
TensorBoard (p. 35)
TensorFlow Serving (p. 69)
有关教程,请参阅 DLAMI 的主目录中名为 Conda Deep Learning AMI tutorials 的文件夹。
有关更多教程和示例,请参阅 TensorFlow Python API 的 TensorFlow 文档或访问 TensorFlow 网站。
TensorFlow with Horovod
本教程介绍如何在 AWS Deep Learning AMI (DLAMI) with Conda 上激活 TensorFlow with
Horovod。Horovod 已为 TensorFlow 预安装在 Conda 环境中。推荐使用 Python3 环境。
Note
仅支持 P3.、P2. 和 G3. 实例类型。
在 DLAMI with Conda 上激活 TensorFlow 并测试 Horovod
1. 打开 DLAMI with Conda 的 Amazon Elastic Compute Cloud (Amazon EC2) 实例。有关 DLAMI 入门帮
助,请参阅the section called “如何开始使用 DLAMI” (p. 3)。
(推荐)对于使用 CUDA 9 的 Python 3 上的 TensorFlow with Horovod,请运行此命令:
source activate tensorflow_p36
对于使用 CUDA 9 的 Python 2 上的 TensorFlow with Horovod,请运行此命令:
source activate tensorflow_p27
31深度学习 AMI 开发人员指南
激活框架
2. 启动 iPython 终端:
(tensorflow_p36) ipython
3. 测试导入 TensorFlow with Horovod 以验证其是否运行正常:
import horovod.tensorflow as hvd
hvd.init
以下内容可能显示在您的屏幕上(您可能会忽略任何警告消息)。--------------------------------------------------------------------------
[[55425,1],0]: A high-performance Open MPI point-to-point messaging module
was unable to find any relevant network interfaces:
Module: OpenFabrics (openib)
Host: ip-172-31-72-4
Another transport will be used instead, although this may result in
lower performance.--------------------------------------------------------------------------
更多信息
TensorFlow with Horovod (p. 46)
有关教程,请参阅 DLAMI 的主目录中的 exampleshorovod 文件夹。
有关更多教程和示例,请参阅 Horovod GitHub 项目。
Theano
Theano 教程
要激活框架,请按照您的 采用 Conda 的 Deep Learning AMI 上的这些说明进行操作。
对于使用 CUDA 9 和 cuDNN 7 的 Python 3 中的 Theano + Keras:
source activate theano_p36
对于使用 CUDA 9 和 cuDNN 7 的 Python 2 中的 Theano + Keras:
source activate theano_p27
启动 iPython 终端。
(theano_p36) ipython
运行快速 Theano 程序。
32深度学习 AMI 开发人员指南
调试和可视化
import numpy
import theano
import theano.tensor as T
from theano import pp
x = T.dscalar('x')
y = x 2
gy = T.grad(y, x)
pp(gy)
您应该会看到 Theano 计算符号梯度。
更多教程
如需查看更多教程和示例,请参阅该框架的官方文档、Theano Python API 和 Theano 网站。
调试和可视化
了解适用于 DLAMI 的调试和可视化选项。单击其中一个选项可了解如何使用该选项。
主题
MXBoard (p. 33)
TensorBoard (p. 35)
MXBoard
MXBoard 可让您使用 TensorBoard 软件目视检查和解释您的 MXNet 运行和图表。它运行了一个 Web 服务
器,该服务器提供了一个用于查看 MXBoard 可视化并与之交互的网页。
MXNet、TensorBoard 和 MXBoard 随 采用 Conda 的 Deep Learning AMI (DLAMI with Conda) 一起预安
装。在本教程中,您使用 MXBoard 功能生成与 TensorBoard 兼容的日志。
主题
将 MXNet 与 MXBoard 结合使用 (p. 33)
更多信息 (p. 35)
将 MXNet 与 MXBoard 结合使用
生成与 TensorBoard 兼容的 MXBoard 日志数据
1. 连接到 DLAMI with Conda 的 Amazon Elastic Compute Cloud (Amazon EC2) 实例。
2. 激活 Python 3 MXNet 环境。
source activate mxnet_p36
3. 准备 Python 脚本以将一般运算符生成的数据写入事件文件中。数据生成 10 次,标准偏差减小,然后每
次将写入到事件文件中。您将看到数据分布逐渐以平均值为中心。请注意,您将在日志文件夹中指定事
件文件。您将此文件夹路径传递到 TensorBoard 二进制文件。
vi mxboard_normal.py
4. 将以下内容粘贴到文件中并保存它:
33深度学习 AMI 开发人员指南
调试和可视化
import mxnet as mx
from mxboard import SummaryWriter
with SummaryWriter(logdir='.logs') as sw:
for i in range(10):
create a normal distribution with fixed mean and decreasing std
data = mx.nd.normal(loc=0, scale=10.0(i+1), shape=(10, 3, 8, 8))
sw.add_histogram(tag='norml_dist', values=data, bins=200, global_step=i)
5. 运行脚本。这将在 logs 文件夹中生成可用于可视化的日志。
python mxboard_normal.py
6. 现在,您必须切换到 TensorFlow 环境以使用 TensorBoard 和 MXBoard 可视化日志。这是 MXBoard 和
TensorBoard 所需的依赖项。
source activate tensorflow_p36
7. 将日志的位置传递到 tensorboard:
tensorboard --logdir=.logs --host=127.0.0.1 --port=8888
TensorBoard 在端口 8888 上启动了可视化 Web 服务器。
8. 为了方便从您的本地浏览器进行访问,您可以将 Web 服务器端口更改为端口 80 或其他端口。无论您使
用哪个端口,都需要在 EC2 安全组中为您的 DLAMI 打开此端口。您还可以使用端口转发。有关更改安
全组设置和端口转发的说明,请参阅设置 Jupyter Notebook 服务器 (p. 11)。默认设置如下一步中所述。
Note
如果您需要同时运行 Jupyter 服务器和 MXBoard 服务器,请对每个服务器使用不同的端口。
9. 在您的 EC2 实例上打开端口 8888 (或您分配给可视化 Web 服务器的端口)。
a. 在 https:console.aws.amazon.comec2 上的 Amazon EC2 控制台中打开您的 EC2 实例。
b. 在 Amazon EC2 控制台中,选择 Network Security (网络与安全),然后选择 Security Groups (安
全组)。
c. 对于 Security Group (安全组),选择最近创建的一个安全组 (请参阅描述中的时间戳)。
d. 选择 Inbound (入站) 选项卡,然后选择 Edit (编辑)。
e. 选择 Add Rule。
f. 在新行中,键入以下内容:
类型:自定义 TCP Rule
协议:TCP
端口范围:8888(或您分配给可视化服务器的端口)
源:Anywhere (0.0.0.00,::0)
10. 如果您需要从本地浏览器可视化数据,请键入以下命令以将 EC2 实例上渲染的数据转发到本地计算机。
ssh -Y -L localhost:8888:localhost:8888 user_id@ec2_instance_ip
11. 使用运行 DLAMI with Conda 的 EC2 实例的公有 IP 或 DNS 地址以及您为 MXBoard 打开的端口打开用
于 MXBoard 可视化的网页:
http:127.0.0.1:8888
34深度学习 AMI 开发人员指南
调试和可视化
更多信息
要了解有关 MXBoard 的更多信息,请参阅 MXBoard 网站。
TensorBoard
TensorBoard 可让您以视觉方式检查和解释您的 TensorFlow 运行和图表。它运行了一个 Web 服务器,该服
务器提供了一个用于查看 TensorBoard 可视化并与之交互的网页。
TensorFlow 和 TensorBoard 随 采用 Conda 的 Deep Learning AMI (DLAMI with Conda) 一起预安
装。DLAMI with Conda 还包含一个示例脚本,该脚本使用 TensorFlow 通过启用额外的日志记录功能训练
MNIST 模型。MNIST 是通常用于训练图像识别模型的手写编号的数据库。在本教程中,您将使用该脚本来
训练 MNIST 模型、TensorBoard 和日志,以创建可视化。
主题
训练 MNIST 模型并使用 TensorBoard 将训练可视化 (p. 35)
更多信息 (p. 36)
训练 MNIST 模型并使用 TensorBoard 将训练可视化
使用 TensorBoard 将 MNIST 模型训练可视化
1. 连接到 DLAMI with Conda 的 Amazon Elastic Compute Cloud (Amazon EC2) 实例。
2. 激活 Python 2.7 TensorFlow 环境并导航到包含带 TensorBoard 示例脚本的文件夹所在的目录:
source activate tensorflow_p27
cd ~examplestensorboard
3. 运行训练启用了延长日志记录的 MNIST 模型的脚本:
python mnist_with_summaries.py
该脚本将日志写入 tmptensorflowmnist。
4. 将日志的位置传递到 tensorboard:
tensorboard --logdir=tmptensorflowmnist
TensorBoard 在端口 6006 上启动了可视化 Web 服务器。
5. 为了方便从您的本地浏览器进行访问,您可以将 Web 服务器端口更改为端口 80 或其他端口。无论您使
用哪个端口,都需要在 EC2 安全组中为您的 DLAMI 打开此端口。您还可以使用端口转发。有关更改安
全组设置和端口转发的说明,请参阅设置 Jupyter Notebook 服务器 (p. 11)。默认设置如下一步中所述。
Note
如果您需要同时运行 Jupyter 服务器和 TensorBoard 服务器,请对每个服务器使用不同的端
口。
6. 在您的 EC2 实例上打开端口 6006 (或您分配给可视化 Web 服务器的端口)。
a. 在 https:console.aws.amazon.comec2 上的 Amazon EC2 控制台中打开您的 EC2 实例。
b. 在 Amazon EC2 控制台中,选择 Network Security (网络与安全),然后选择 Security Groups (安
全组)。
c. 对于 Security Group (安全组),选择最近创建的一个安全组(请参阅描述中的时间戳)。
d. 选择 Inbound (入站) 选项卡,然后选择 Edit (编辑)。
35深度学习 AMI 开发人员指南
分布式训练
e. 选择 Add Rule。
f. 在新行中,键入以下内容:
类型:自定义 TCP Rule
协议:TCP
端口范围:6006(或您分配给可视化服务器的端口)
源:Anywhere (0.0.0.00,::0)
7. 使用运行 DLAMI with Conda 的 EC2 实例的公有 IP 或 DNS 地址以及您为 TensorBoard 打开的端口打
开用于 TensorBoard 可视化的网页:
http: YourInstancePublicDNS:6006
更多信息
要了解有关 TensorBoard 的更多信息,请参阅 TensorBoard 网站。
分布式训练
了解 DLAMI 中用于训练多个 GPU 的选项。单击其中一个选项可了解如何使用该选项。
主题
Chainer (p. 36)
带 MXNet 的 Keras (p. 45)
TensorFlow with Horovod (p. 46)
Chainer
Chainer 是一种基于 Python 的灵活框架,用于轻松直观地编写复杂的神经网络架构。利用 Chainer,您可以
轻松使用多 GPU 实例进行训练。Chainer 还会自动记录结果、图表损失和精度并生成用于使用计算图来可视
化神经网络的输出。Chainer 包含在 采用 Conda 的 Deep Learning AMI (DLAMI with Conda) 中。
以下主题介绍如何在多个 GPU、单个 GPU 和一个 CPU 上进行训练,如何创建可视化以及如何测试您的
Chainer 安装。
主题
使用 Chainer 训练模型 (p. 36)
使用 Chainer 在多个 GPU 上训练 (p. 37)
使用 Chainer 在单个 GPU 上训练 (p. 39)
使用 Chainer 在 CPU 上训练 (p. 40)
绘制结果 (p. 41)
测试 Chainer (p. 45)
更多信息 (p. 45)
使用 Chainer 训练模型
本教程介绍如何使用示例 Chainer 脚本来通过 MNIST 数据集训练模型。MNIST 是通常用于训练图像识别模
型的手写编号的数据库。本教程还将介绍在一个 CPU 上训练与在一个或多个 GPU 上训练之间的训练速度差
异。
36深度学习 AMI 开发人员指南
分布式训练
使用 Chainer 在多个 GPU 上训练
在多个 GPU 上训练
1. 连接到正在运行 采用 Conda 的 Deep Learning AMI 的实例。有关如何选择或连接到实例,请参阅the
section called “实例选择” (p. 6)或 Amazon EC2 文档。要运行此教程,您将需要使用带至少两个 GPU
的实例。
2. 激活 Python 3 Chainer 环境:
source activate chainer_p36
3. 要获取最新教程,请克隆 Chainer 存储库并导航到示例文件夹:
(chainer_p36) :~ cd ~src
(chainer_p36) :~src git clone https:github.comchainerchainer.git
(chainer_p36) :~src cd chainerexamplesmnist
4. 在 train_mnist_data_parallel.py 脚本中运行示例。默认情况下,该脚本使用在 采用 Conda 的
Deep Learning AMI 的实例上运行的 GPU。该脚本最多可在两个 GPU 上运行。它将忽略前两个 GPU
之后的所有 GPU。它会自动检测其中一个 GPU 或检测到这两个 GPU。如果您运行的是不带 GPU 的实
例,请跳到本教程后面的使用 Chainer 在 CPU 上训练 (p. 40)。
(chainer_p36) :~srcchainerexamplesmnist python train_mnist_data_parallel.py
Note
由于包含未在 DLAMI 中包含 beta 功能,此示例将返回以下错误。
chainerx ModuleNotFoundError: No module named 'chainerx'
当 Chainer 脚本使用 MNIST 数据库训练模型时,您会看到每个纪元的结果。
然后,您会在脚本运行时看到示例输出。以下示例输出是在 p3.8xlarge 实例上运行的。该脚本的输出显
示“GPU: 0, 1”,这表示它正在使用 4 个可用 GPU 中的前两个。这些脚本通常使用的是以零开头而不是
以总计数开头的 GPU 索引。
GPU: 0, 1
unit: 1000
Minibatch-size: 400
epoch: 20
epoch mainloss validationmainloss mainaccuracy validationmainaccuracy
elapsed_time
1 0.277561 0.114709 0.919933 0.9654
6.59261
2 0.0882352 0.0799204 0.973334 0.9752
8.25162
3 0.0520674 0.0697055 0.983967 0.9786
9.91661
4 0.0326329 0.0638036 0.989834 0.9805
11.5767
5 0.0272191 0.0671859 0.9917 0.9796
13.2341
6 0.0151008 0.0663898 0.9953 0.9813
14.9068
7 0.0137765 0.0664415 0.995434 0.982
16.5649
8 0.0116909 0.0737597 0.996 0.9801
18.2176
37深度学习 AMI 开发人员指南
分布式训练
9 0.00773858 0.0795216 0.997367 0.979
19.8797
10 0.00705076 0.0825639 0.997634 0.9785
21.5388
11 0.00773019 0.0858256 0.9978 0.9787
23.2003
12 0.0120371 0.0940225 0.996034 0.9776
24.8587
13 0.00906567 0.0753452 0.997033 0.9824
26.5167
14 0.00852253 0.082996 0.996967 0.9812
28.1777
15 0.00670928 0.102362 0.997867 0.9774
29.8308
16 0.00873565 0.0691577 0.996867 0.9832
31.498
17 0.00717177 0.094268 0.997767 0.9802
33.152
18 0.00585393 0.0778739 0.998267 0.9827
34.8268
19 0.00764773 0.107757 0.9975 0.9773
36.4819
20 0.00620508 0.0834309 0.998167 0.9834
38.1389
5. 当您的训练正在运行时,查看您的 GPU 利用率会很有用。您可以验证哪些 GPU 处于活动状态并查看
它们的负载。NVIDIA 为此提供了一种工具,可使用命令 nvidia-smi 运行该工具。但是,它只会为您
提供利用率的快照,因此,将该工具与 Linux 命令 watch 结合使用更具参考性。以下命令将 watch 与
nvidia-smi 结合使用,以便以十分之一秒的时间间隔刷新当前 GPU 利用率。打开指向您的 DLAMI 的
另一个终端会话,然后运行以下命令:
(chainer_p36) :~ watch -n0.1 nvidia-smi
您将看到一个类似于以下结果的输出。使用 ctrl-c 关闭该工具,或者在您在第一个终端会话中试用其
他示例的同时保持其运行。
Every 0.1s: nvidia-smi Wed Feb 28 00:28:50 2018
Wed Feb 28 00:28:50 2018
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 384.111 Driver Version: 384.111 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:UsageCap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 Tesla V100-SXM2... On | 00000000:00:1B.0 Off | 0 |
| NA 46C P0 56W 300W | 728MiB 16152MiB | 10% Default |
+-------------------------------+----------------------+----------------------+
| 1 Tesla V100-SXM2... On | 00000000:00:1C.0 Off | 0 |
| NA 44C P0 53W 300W | 696MiB 16152MiB | 4% Default |
+-------------------------------+----------------------+----------------------+
| 2 Tesla V100-SXM2... On | 00000000:00:1D.0 Off | 0 |
| NA 42C P0 38W 300W | 10MiB 16152MiB | 0% Default |
+-------------------------------+----------------------+----------------------+
| 3 Tesla V100-SXM2... On | 00000000:00:1E.0 Off | 0 |
| NA 46C P0 40W 300W | 10MiB 16152MiB | 0% Default |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: GPU Memory |
| GPU PID Type Process name Usage |
38深度学习 AMI 开发人员指南
分布式训练
|=============================================================================|
| 0 54418 C python 718MiB |
| 1 54418 C python 686MiB |
+-----------------------------------------------------------------------------+
在本示例中,GPU 0 和 GPU 1 处于活动状态,而 GPU 2 和 3 不处于活动状态。您还可以查看每个
GPU 的内存利用率。
6. 在训练完成后,记下您的第一个终端会话的已用时间。在本示例中,已用时间为 38.1389 秒。
使用 Chainer 在单个 GPU 上训练
本示例介绍如何在单个 GPU 上训练。如果您只有一个 GPU 可用或者只是想了解多 GPU 训练如何利用
Chainer 进行扩展,则可以执行此操作。
使用 Chainer 在单个 GPU 上训练
在本示例中,您使用另一个脚本 train_mnist.py,并指示它仅使用带 --gpu=0 参数的 GPU 0。要
查看不同的 GPU 如何在 nvidia-smi 控制台中激活,您可以通过使用 --gpu=1 来指示脚本使用 GPU
编号 1。
(chainer_p36) :~srcchainerexamplesmnist python train_mnist.py --gpu=0
GPU: 0
unit: 1000
Minibatch-size: 100
epoch: 20
epoch mainloss validationmainloss mainaccuracy validationmainaccuracy
elapsed_time
1 0.192348 0.0909235 0.940934 0.9719
5.3861
2 0.0746767 0.069854 0.976566 0.9785
8.97146
3 0.0477152 0.0780836 0.984982 0.976
12.5596
4 0.0347092 0.0701098 0.988498 0.9783
16.1577
5 0.0263807 0.08851 0.991515 0.9793
19.7939
6 0.0253418 0.0945821 0.991599 0.9761
23.4643
7 0.0209954 0.0683193 0.993398 0.981
27.0317
8 0.0179036 0.080285 0.994149 0.9819
30.6325
9 0.0183184 0.0690474 0.994198 0.9823
34.2469
10 0.0127616 0.0776328 0.996165 0.9814
37.8693
11 0.0145421 0.0970157 0.995365 0.9801
41.4629
12 0.0129053 0.0922671 0.995899 0.981
45.0233
13 0.0135988 0.0717195 0.995749 0.9857
48.6271
14 0.00898215 0.0840777 0.997216 0.9839
52.2269
15 0.0103909 0.123506 0.996832 0.9771
55.8667
39深度学习 AMI 开发人员指南
分布式训练
16 0.012099 0.0826434 0.996616 0.9847
59.5001
17 0.0066183 0.101969 0.997999 0.9826
63.1294
18 0.00989864 0.0877713 0.997116 0.9829
66.7449
19 0.0101816 0.0972672 0.99 ......
您现在查看是摘要介绍页, 详见PDF附件(2002KB,242页)。





