部署NGC容器环境构建深度学习开发环境

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容器镜像路径。

  1. 登录NGC网站

  2. 在搜索区域输入TensorFlow后,选择并单击TensorFlow

    Tensorflow.jpg

  3. TensorFlow页面,单击Tags页签,复制对应版本的TensorFlow容器镜像。

    以下载TensorFlow22.05-tf1-py3镜像为例,TensorFlow容器镜像路径为nvcr.io/nvidia/tensorflow:22.05-tf1-py3,该路径用于后续在GPU实例中下载TensorFlow镜像时使用。

    TensorFlow路径.jpg

    重要

    TensorFlow镜像中的CUDA版本必须与GPU实例的驱动版本相匹配,否则会导致部署TensorFlow开发环境时失败。关于TensorFlow镜像版本、CUDA版本以及GPU实例的驱动版本对应匹配关系,请参见TensorFlow Release Notes

操作步骤

本文以gn7i实例为例,为您演示创建GPU实例时部署NGC环境的操作步骤。

  1. 创建GPU实例。

    具体操作,请参见自定义购买实例。主要配置参数说明如下:

    配置参数

    说明

    地域

    请根据GPU实例可购买地域,选择相应地域。

    您可以前往ECS实例可购买地域,查看GPU实例在各地域的可购情况。

    实例

    选择实例规格,本示例以gn7i为例。

    镜像

    1. 云市场镜像页签下,单击从云市场获取更多选择(含操作系统)

    2. 在弹出的镜像市场页面,输入NVIDIA GPU Cloud VM Image并单击搜索

    3. 找到对应镜像后并单击使用

    公网IP

    选择分配公网IPv4地址

    说明

    如果这里没有分配公网IP地址,则在GPU实例创建成功后,需要绑定EIP地址。具体操作,请参见绑定EIP

    安全组

    选择一个安全组。安全组里必须开放TCP 22端口。如果您的实例需要支持HTTPS或DIGITS 6服务,必须开放TCP 443(用于HTTPS)或TCP 5000(用于DIGITS 6)端口。

  2. 选择以下任一方式远程连接GPU实例。

    连接方式

    操作指引

    Workbench

    通过密码或密钥认证登录Linux实例

    VNC

    使用VNC登录实例

  3. 执行nvidia-smi命令,查看当前GPU相关信息。

    查看Driver Version515.48.07,该GPU实例的驱动版本(515版本或更高版本)与22.05-tf1-py3版本的TensorFlow镜像中的11.7版本CUDA相匹配。

    nvidia-smi.png

  4. 执行以下命令,下载对应版本的TensorFlow容器镜像。

    docker pull nvcr.io/nvidia/tensorflow:22.05-tf1-py3
    重要

    下载TensorFlow容器镜像可能需要较长时间,请您耐心等待。

  5. 执行以下命令,查看下载的TensorFlow容器镜像信息。

    docker image ls

    容器镜像信息.jpg

  6. 执行以下命令,运行容器完成TensorFlow开发环境的部署。

    docker run --gpus all --rm -it nvcr.io/nvidia/tensorflow:22.05-tf1-py3

    Dingtalk_20240819173529.jpg

  7. 依次执行以下命令,简单测试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!字符串,如下图所示。

    Dingtalk_20240821121930.jpg

  8. 保存修改后的TensorFlow镜像。

    1. 在GPU连接页面,打开一个新的远程连接窗口。

    2. 执行以下命令,查询容器ID(即CONTAINER_ID)。

      docker ps

      Dingtalk_20240821144414.jpg

    3. 执行以下命令,保存修改后的TensorFlow镜像。

      # CONTAINER_ID请替换为通过docker ps命令查询的容器ID,例如f76a5a4347d。
      docker commit   -m "commit docker" CONTAINER_ID  nvcr.io/nvidia/tensorflow:20.01-tf1-py3
      重要

      请您妥善保存修改后的TensorFlow镜像,否则会导致下次登录时配置丢失。