将 NGC 与您的 NVIDIA TITAN 或 Quadro PC 配合使用设置指南

本设置指南介绍了如何设置 NVIDIA TITAN 或 Quadro PC 以运行 NGC 容器。

1. 简介

NVIDIA® GPU Cloud (NGC) 容器利用了基于 NVIDIA Pascal™、Volta™ 或 Turing™ 架构的 GPU 的强大功能。NVIDIA DGX 系统以及云服务提供商托管的基于 NVIDIA Turing、Volta 或 Pascal 的虚拟机均利用了这些 GPU。

除了这些硬件类别外,NGC 容器还可以在安装了以下 NVIDIA 产品的 PC 上运行:
  • NVIDIA TITAN RTX (Turing)
  • NVIDIA TITAN V (Volta)
  • NVIDIA TITAN X (Pascal)
  • NVIDIA TITAN Xp (Pascal)
  • NVIDIA Quadro GV100 (Volta)
  • NVIDIA Quadro GP100 (Pascal)
  • NVIDIA Quadro P6000 (Pascal)
本文档介绍了如何设置 NVIDIA TITAN 或 Quadro PC 以运行 NGC 容器。在 Ubuntu 桌面上打开命令行,并将代码块粘贴到命令行中。
注意: 与基于 Tesla GPU 的系统产品不同,这些产品不支持 CUDA 兼容性包。仅支持使用本文档中的说明获得的软件和驱动程序。

先决条件

这些说明假定以下条件:

2. 安装 NVIDIA 驱动程序

NGC 容器利用了 NVIDIA GPU 的强大功能。请确保您的系统已安装相应的 NVIDIA 驱动程序。

2.1. 设置驱动程序存储库

安装 NVIDIA Developer 存储库,为安装 NVIDIA 驱动程序做准备。以下代码块
  1. 安装 apt-transport-https。
  2. 安装 curl。
  3. 设置 /etc/apt/sources.list.d/cuda.list 文件。
  4. 安装 CUDA 存储库密钥。
  5. 提高 NVIDIA 存储库的优先级。
对于 Ubuntu 16.04
sudo apt-get install -y apt-transport-https curl
cat <<EOF | sudo tee /etc/apt/sources.list.d/cuda.list > /dev/null
deb https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64 /
EOF

curl -s \
 https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/7fa2af80.pub \
 | sudo apt-key add -

cat <<EOF | sudo tee /etc/apt/preferences.d/cuda > /dev/null
Package: *
Pin: origin developer.download.nvidia.com
Pin-Priority: 600
EOF
对于 Ubuntu 18.04
sudo apt-get install -y apt-transport-https curl
cat <<EOF | sudo tee /etc/apt/sources.list.d/cuda.list > /dev/null
deb https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64 /
EOF

curl -s \
 https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/7fa2af80.pub \
 | sudo apt-key add -

cat <<EOF | sudo tee /etc/apt/preferences.d/cuda > /dev/null
Package: *
Pin: origin developer.download.nvidia.com
Pin-Priority: 600
EOF

2.2. 安装 NVIDIA 驱动程序

  1. 设置存储库后,安装 NVIDIA 驱动程序包并重新启动。
    sudo apt-get update && sudo apt-get install -y --no-install-recommends cuda-drivers
    sudo reboot
    
  2. 重新启动后,确认您可以在 nvidia-smi 输出中看到已安装的 NVIDIA 硬件。
    nvidia-smi
    
    示例输出(粗体显示的为 TITAN 卡)
    +-----------------------------------------------------------------------------+
    | NVIDIA-SMI 384.90                 Driver Version: 384.90                    |
    |-------------------------------+----------------------+----------------------+
    | GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
    | Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
    |===============================+======================+======================|
    |   0 TITAN X (Pascal)     Off  | 00000000:02:00.0  On |                  N/A |
    | 23%   30C    P8    10W / 250W |    468MiB / 12188MiB |      0%      Default |
    +-------------------------------+----------------------+----------------------+

3. 安装 Docker 和适用于 Docker 的 NVIDIA Container Runtime

运行 NGC 容器需要 Docker 运行时。此外,适用于 Docker 的 NVIDIA Container Runtime (nvidia-docker2) 可确保在运行 NVIDIA 优化的 Docker 容器时,能够充分利用 GPU 的高性能。

3.1. 安装 Docker 存储库

以下代码块将安装“docker-ce”存储库。有关更多信息,请参阅 http://docs.docker.net.cn/engine/installation/linux/docker-ce/ubuntu/#install-docker-ce

以下代码块

  1. 安装 Docker 先决条件。
  2. 添加 Docker 官方 GPG 密钥。
  3. 添加官方稳定版 Docker 存储库。
sudo apt-get install -y ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository \
 "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

3.2. 安装适用于 Docker 的 NVIDIA Container Runtime

  1. 发出以下命令以安装适用于 Docker 的 NVIDIA Container Runtime (nvidia-docker2) 存储库、安装 nvidia-docker2,然后设置权限以便每次无需 sudo 即可使用 Docker。
    curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | \
      sudo apt-key add -
    distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
    curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | \
      sudo tee /etc/apt/sources.list.d/nvidia-docker.list
    sudo apt-get update
    sudo apt-get install -y nvidia-docker2
    sudo usermod -aG docker $USER
    

    有关更多信息,请参阅 https://github.com/NVIDIA/nvidia-docker

  2. 重新启动系统。
    sudo reboot
    
  3. 重新启动后,使用最新的官方 CUDA 映像测试 nvidia-smi
    docker run --runtime=nvidia --rm nvcr.io/nvidia/cuda nvidia-smi
    

3.3. 为 NGC 容器启用 GPU 支持

为了在运行 NGC 容器时获得最佳性能,开发了三种为 Docker 容器提供 GPU 支持的方法:
  • 原生 GPU 支持(包含在 Docker-ce 19.03 或更高版本中)
  • 适用于 Docker 的 NVIDIA Container Runtime(nvidia-docker2 包)
  • 适用于 NVIDIA GPU 的 Docker Engine Utility(nvidia-docker 包)
系统中实施的方法取决于已安装的 DGX OS 版本(对于 DGX 系统)、云服务提供商提供的特定 NGC Cloud Image 或您为在 TITAN PC、Quadro PC 或 vGPU 上运行 NGC 容器而安装的软件。

请参阅下表以帮助确定系统中实施的方法。

GPU 支持方法 何时使用 如何确定
原生 GPU 支持 包含在 Docker-ce 19.03 或更高版本中 运行 docker version 以确定已安装的 Docker 版本。
适用于 Docker 的 NVIDIA Container Runtime 如果安装了 nvidia-docker2 运行 nvidia-docker version 并检查 NVIDIA Docker 版本 2.0 或更高版本
适用于 NVIDIA GPU 的 Docker Engine Utility 如果安装了 nvidia-docker 运行 nvidia-docker version 并检查 NVIDIA Docker 版本 1.x

每种方法都通过使用特定的 Docker 命令来调用,如下所述。

使用原生 GPU 支持

注意: 如果在已安装 nvidia-docker 或 nvidia-docker2 的系统上将 Docker 更新到 19.03,则仍然可以使用相应的方法。
  • 要在 Docker 的新安装中使用原生支持,请先在 Docker 中启用新的 GPU 支持。
    $ sudo apt-get install -y docker nvidia-container-toolkit 

    如果您已在安装了 nvidia-docker2 的系统上将 Docker 更新到 19.03,则无需执行此步骤。原生支持将自动启用。

  • 使用 docker run --gpus 运行启用 GPU 的容器。
    • 使用所有 GPU 的示例
      $ docker run --gpus all ...
    • 使用两个 GPU 的示例
      $ docker run --gpus 2 ...
    • 使用特定 GPU 的示例
      $ docker run --gpus "device=1,2" ... 
      $ docker run --gpus "device=UUID-ABCDEF,1" ... 

使用适用于 Docker 的 NVIDIA Container Runtime

安装适用于 Docker 的 NVIDIA Container Runtime (nvidia-docker2) 后,您可以通过以下方式之一运行 GPU 加速的容器。
  • 使用 docker run 并指定 runtime=nvidia
    $ docker run --runtime=nvidia ...
  • 使用 nvidia-docker run
    $ nvidia-docker run ...

    新软件包提供向后兼容性,因此您仍然可以使用此命令运行 GPU 加速的容器,并且将使用新的运行时。

  • nvidia 作为默认运行时,使用 docker run

    您可以将 nvidia 设置为默认运行时,例如,通过将以下行添加到 /etc/docker/daemon.json 配置文件中作为第一个条目。

    "default-runtime": "nvidia",

    以下示例说明了添加的行在 JSON 文件中的外观。进行此更改时,请勿删除任何预先存在的内容。

    {
     "default-runtime": "nvidia",
      "runtimes": {
         "nvidia": {
             "path": "/usr/bin/nvidia-container-runtime",
             "runtimeArgs": []
         }
     },
    
    }

    然后,您可以使用 docker run 运行 GPU 加速的容器。

    $ docker run ...
    注意
    如果在 nvidia 设置为默认运行时的情况下构建 Docker 映像,请确保 Dockerfile 执行的构建脚本指定容器将需要的 GPU 架构。否则可能会导致容器仅针对构建它的 GPU 架构进行优化。有关指定 GPU 架构的说明取决于应用程序,并且超出了本文档的范围。有关指导,请查阅特定的应用程序构建过程。

使用适用于 NVIDIA GPU 的 Docker Engine Utility

安装适用于 NVIDIA GPU 的 Docker Engine Utility (nvidia-docker) 后,按如下所示运行启用 GPU 的容器。

$ nvidia-docker run ... 

4. 使用 NGC 容器

有关使用 NGC 网站和运行 NGC 容器的详细说明,请参阅以下文档。

声明

声明

本指南中的信息以及本指南中引用的 NVIDIA 文档中包含的所有其他信息均“按原样”提供。NVIDIA 不对产品信息的完整性做出任何明示、暗示、法定或其他方面的保证,并且明确声明不对产品的非侵权性、适销性和针对特定用途的适用性的所有暗示保证负责。尽管客户可能因任何原因而遭受任何损失,但 NVIDIA 对本指南中描述的产品对客户承担的总体和累积责任应根据 NVIDIA 产品销售条款和条件进行限制。

本指南中描述的 NVIDIA 产品不具有容错功能,并非设计、制造或旨在用于与以下任何系统的设计、构造、维护和/或操作相关的用途,如果此类系统的使用或故障可能导致危及人类生命安全或严重人身伤害或财产损失的情况(包括但不限于与任何核、航空电子、生命支持或其他生命攸关的应用相关的用途)。NVIDIA 明确声明不对将产品用于此类高风险用途的适用性作任何明示或暗示的保证。对于因将产品用于此类高风险用途而引起的任何索赔或损失,NVIDIA 在任何程度上均不对客户或任何第三方承担责任。

对于本指南中描述的产品在未经进一步测试或修改的情况下是否适用于任何特定用途,NVIDIA 不作任何陈述或保证。NVIDIA 不一定会对每种产品的所有参数进行测试。客户全权负责确保产品适用于客户计划的应用并适合该应用,并为该应用进行必要的测试,以避免应用或产品发生故障。客户产品设计中的缺陷可能会影响 NVIDIA 产品的质量和可靠性,并可能导致超出本指南所包含的附加或不同条件和/或要求。对于可能基于或归因于以下原因的任何故障、损坏、成本或问题,NVIDIA 不承担任何责任:(i) 以任何违反本指南的方式使用 NVIDIA 产品;或 (ii) 客户产品设计。

除客户有权将本指南中的信息与产品一起使用外,本指南未授予 NVIDIA 任何其他明示或暗示的许可。仅当信息复制已获得 NVIDIA 书面批准、未经修改地复制且附带所有相关的条件、限制和声明时,才允许复制本指南中的信息。

商标

NVIDIA、NVIDIA 徽标和 Volta 是 NVIDIA Corporation 在美国和其他国家/地区的商标和/或注册商标。

Docker 和 Docker 徽标是 Docker, Inc. 在美国和/或其他国家/地区的商标或注册商标。

其他公司和产品名称可能是与其关联的各自公司的商标。