NGC(NVIDIA GPU CLOUD)是NVIDIA开发的一套深度学习生态系统,方便您免费访问深度学习软件堆栈,建立适合深度学习的开发环境。本文以搭建TensorFlow深度学习框架为例,为您介绍如何在GPU实例上部署NGC环境以实现深度学习开发环境的预安装。
背景信息
- NGC网站提供了目前主流深度学习框架不同版本的镜像,例如Caffe、Caffe2、CNTK、MxNet、TensorFlow、Theano、Torch,您可以选择需要的镜像部署NGC容器环境。本文以搭建TensorFlow深度学习框架为例。
- 阿里云在云市场镜像中提供了针对NVIDIA Pascal GPU优化的NGC容器镜像,创建GPU实例时选择NGC容器镜像,可以简单快速地部署NGC容器环境,即时访问优化后的深度学习框架,极大程度缩减产品开发以及业务部署时间,实现开发环境的预安装;同时该NGC容器镜像支持调优后的算法框架,并且阿里云会对其持续更新。
使用限制
仅以下GPU实例规格族支持部署NGC环境:
- gn5i、gn6v、gn6i、gn6e、gn7i、gn7e、gn7s
- ebmgn6i、ebmgn6v、ebmgn6e、ebmgn7i、ebmgn7e、ebmgn7ex、sccgn7ex
更多信息,请参见GPU计算型。
准备工作
说明
在操作本文前,请您提前在NGC网站注册自己的NGC账号。
在部署NGC环境前,请提前获取TensorFlow容器镜像路径。
- 登录NGC网站。
- 在搜索区域输入TensorFlow后,选择并单击TensorFlow。
- 在TensorFlow页面,单击Tags页签,复制对应版本的TensorFlow容器镜像。
以下载TensorFlow22.05-tf1-py3
镜像为例,TensorFlow容器镜像路径为nvcr.io/nvidia/tensorflow:22.05-tf1-py3,该路径用于后续在GPU实例中下载TensorFlow镜像时使用。
重要
TensorFlow镜像中的CUDA版本必须与GPU实例的驱动版本相匹配,否则会导致部署TensorFlow开发环境时失败。关于TensorFlow镜像版本、CUDA版本以及GPU实例的驱动版本对应匹配关系,请参见TensorFlow Release Notes。
操作步骤
本文以gn7i实例为例,为您演示创建GPU实例时部署NGC环境的操作步骤。
- 创建GPU实例。
具体操作,请参见自定义购买实例。主要配置参数说明如下:
配置参数 | 说明 |
地域 | 请根据GPU实例可购买地域,选择相应地域。 您可以前往ECS实例可购买地域,查看GPU实例在各地域的可购情况。 |
实例 | 选择实例规格,本示例以gn7i为例。 |
镜像 |
|
公网IP | 选择分配公网IPv4地址。 说明 如果这里没有分配公网IP地址,则在GPU实例创建成功后,需要绑定EIP地址。具体操作,请参见绑定EIP。 |
安全组 | 选择一个安全组。安全组里必须开放TCP 22端口。如果您的实例需要支持HTTPS或DIGITS 6服务,必须开放TCP 443(用于HTTPS)或TCP 5000(用于DIGITS 6)端口。 |
- 选择以下任一方式远程连接GPU实例。
连接方式 | 操作指引 |
Workbench | 通过密码或密钥认证登录Linux实例 |
VNC | 使用VNC登录实例 |
- 执行
nvidia-smi
命令,查看当前GPU相关信息。
查看Driver Version为515.48.07,该GPU实例的驱动版本(515版本或更高版本)与22.05-tf1-py3
版本的TensorFlow镜像中的11.7版本CUDA相匹配。 - 执行以下命令,下载对应版本的TensorFlow容器镜像。
docker pull nvcr.io/nvidia/tensorflow:22.05-tf1-py3
重要
下载TensorFlow容器镜像可能需要较长时间,请您耐心等待。
- 执行以下命令,查看下载的TensorFlow容器镜像信息。
docker image ls
- 执行以下命令,运行容器完成TensorFlow开发环境的部署。
docker run --gpus all --rm -it nvcr.io/nvidia/tensorflow:22.05-tf1-py3
- 依次执行以下命令,简单测试TensorFlow。
python
import tensorflow as tf
hello = tf.constant('Hello, TensorFlow!')
with tf.compat.v1.Session() as sess:
result = sess.run(hello)
print(result.decode())
如果TensorFlow正确加载了GPU设备,会成功返回Hello, TensorFlow!
字符串,如下图所示。
- 保存修改后的TensorFlow镜像。
- 在GPU连接页面,打开一个新的远程连接窗口。
- 执行以下命令,查询容器ID(即
CONTAINER_ID
)。
docker ps
- 执行以下命令,保存修改后的TensorFlow镜像。
# CONTAINER_ID请替换为通过docker ps命令查询的容器ID,例如f76a5a4347d。
docker commit -m "commit docker" CONTAINER_ID nvcr.io/nvidia/tensorflow:20.01-tf1-py3
重要
请您妥善保存修改后的TensorFlow镜像,否则会导致下次登录时配置丢失。