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
更多信息,请参见GPU计算型。
准备工作
在操作本文前,请您提前在NGC网站注册自己的NGC账号。
在部署NGC环境前,请提前获取TensorFlow容器镜像路径。
登录NGC网站。
在搜索区域输入TensorFlow后,选择并单击TensorFlow。
在TensorFlow页面,单击Tags页签,复制对应版本的TensorFlow容器镜像。
以下载TensorFlow
22.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为例。
镜像
在云市场镜像页签下,单击从云市场获取更多选择(含操作系统)。
在弹出的镜像市场页面,输入NVIDIA GPU Cloud Virtual Machine Image并单击搜索。
找到对应镜像后并单击选择。
公网IP
选择分配公网IPv4地址。
说明如果这里没有分配公网IP地址,则在GPU实例创建成功后,需要绑定EIP地址。具体操作,请参见绑定EIP。
安全组
选择一个安全组。安全组里必须开放TCP 22端口。如果您的实例需要支持HTTPS或DIGITS 6服务,必须开放TCP 443(用于HTTPS)或TCP 5000(用于DIGITS 6)端口。
选择以下任一方式远程连接GPU实例。
连接方式
操作指引
Workbench
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镜像,否则会导致下次登录时配置丢失。