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容器镜像。 以下载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)端口。 在云市场镜像页签下,单击从云市场获取更多选择(含操作系统)。 在弹出的镜像市场页面,输入NVIDIA GPU Cloud VM Image并单击搜索。 找到对应镜像后并单击使用。 选择以下任一方式远程连接GPU实例。 连接方式 操作指引 Workbench VNC 执行 查看Driver Version为515.48.07,该GPU实例的驱动版本(515版本或更高版本)与 执行以下命令,下载对应版本的TensorFlow容器镜像。 重要 下载TensorFlow容器镜像可能需要较长时间,请您耐心等待。 执行以下命令,查看下载的TensorFlow容器镜像信息。 执行以下命令,运行容器完成TensorFlow开发环境的部署。 依次执行以下命令,简单测试TensorFlow。 如果TensorFlow正确加载了GPU设备,会成功返回 保存修改后的TensorFlow镜像。 在GPU连接页面,打开一个新的远程连接窗口。 执行以下命令,查询容器ID(即 执行以下命令,保存修改后的TensorFlow镜像。 重要 请您妥善保存修改后的TensorFlow镜像,否则会导致下次登录时配置丢失。背景信息
使用限制
准备工作
22.05-tf1-py3
镜像为例,TensorFlow容器镜像路径为nvcr.io/nvidia/tensorflow:22.05-tf1-py3,该路径用于后续在GPU实例中下载TensorFlow镜像时使用。操作步骤
nvidia-smi
命令,查看当前GPU相关信息。22.05-tf1-py3
版本的TensorFlow镜像中的11.7版本CUDA相匹配。docker pull nvcr.io/nvidia/tensorflow:22.05-tf1-py3
docker image ls
docker run --gpus all --rm -it nvcr.io/nvidia/tensorflow:22.05-tf1-py3
python
import tensorflow as tf
hello = tf.constant('Hello, TensorFlow!')with tf.compat.v1.Session() as sess:
result = sess.run(hello) print(result.decode())
Hello, TensorFlow!
字符串,如下图所示。CONTAINER_ID
)。docker ps
# CONTAINER_ID请替换为通过docker ps命令查询的容器ID,例如f76a5a4347d。docker commit -m "commit docker" CONTAINER_ID nvcr.io/nvidia/tensorflow:20.01-tf1-py3