将 NGC 与 NVIDIA Virtual GPU 软件安装指南结合使用

本安装指南介绍如何设置 NVIDIA Virtual GPU 软件以运行 NGC 容器。

1. 简介

NVIDIA® GPU Cloud (NGC) 容器利用了基于 NVIDIA Pascal™、Volta™ 和 Turing 架构的 GPU 的强大功能。NGC 容器可以在虚拟机 (VM) 中运行,这些虚拟机 (VM) 配置了 NVIDIA Virtual GPU (vGPU) 软件,用于 NVIDIA vGPU 和 GPU 直通部署。

本文档介绍了如何设置配置了 NVIDIA Virtual GPU 软件的 VM 以运行 NGC 容器。在 VM 中打开命令行,并将代码块粘贴到命令行中。

先决条件

以下说明假定满足以下先决条件:
  • 已配置客户虚拟机,运行受支持的 Linux 版本,并配置了 NVIDIA vGPU 或直通 GPU。
  • NVIDIA Virtual GPU 软件图形驱动程序已安装在客户虚拟机中。
    注意: 确保安装的驱动程序是与 NVIDIA Virtual GPU 软件捆绑在一起的图形驱动程序。
  • 您正在使用的任何 NVIDIA Virtual GPU 软件产品均已通过 NVIDIA Quadro® Virtual Data Center Workstation (Quadro vDWS) 获得许可。
有关说明,请访问 https://docs/nvidia.com/grid

NVIDIA Virtual GPU 软件支持

支持以下 vGPU 软件和硬件。
  • vGPU 软件版本:8.x、11.x 以及更高版本,直到最新版本
  • NVIDIA vGPU 部署

    仅在 NVIDIA Maxwell™ 架构之后的 NVIDIA GPU 架构上支持以下 vGPU 类型

    • 所有 Q 系列 vGPU 类型
    • 所有 C 系列 vGPU 类型
  • GPU 直通部署

    支持所有基于 NVIDIA Maxwell™ 架构之后的 NVIDIA GPU 架构且支持 NVIDIA vGPU 软件的 GPU。

Hypervisor 和客户操作系统支持

2. 安装 Docker 和适用于 Docker 的 NVIDIA 容器运行时

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

2.1. 安装 Docker 存储库

以下代码块

  1. 安装 apt-transport-https。
  2. 安装 curl。
  3. 安装 Docker 先决条件。
  4. 添加 Docker 官方 GPG 密钥。
  5. 添加官方稳定 Docker 存储库。 有关更多信息,请参阅 http://docs.docker.net.cn/engine/installation/linux/docker-ce/ubuntu/#install-docker-ce
sudo apt-get install -y apt-transport-https\
 curl ca-certificates\
 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"

2.2. 安装适用于 Docker 的 NVIDIA 容器运行时

  1. 发出以下命令以安装适用于 Docker 的 NVIDIA 容器运行时 (nvidia-docker2) 存储库,安装 nvidia-docker2,然后设置权限以在每次使用 Docker 时无需 sudo(其中 $USER 指的是用户名)。
    curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | \
      sudo apt-key add -
    curl -s -L https://nvidia.github.io/nvidia-docker/ubuntu16.04/amd64/nvidia-docker.list | \
      sudo tee /etc/apt/sources.list.d/nvidia-docker.list
    sudo apt update
    sudo apt 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:latest nvidia-smi
    

    Docker 逐层拉取 nvidia/cuda 容器映像,然后运行 nvidia-smi。

    完成后,输出应显示 NVIDIA 驱动程序版本和每个已安装 GPU 的描述

2.3. 为 NGC 容器启用 GPU 支持

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

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

GPU 支持方法 何时使用 如何确定
原生 GPU 支持 包含在 Docker-ce 19.03 或更高版本中 运行 docker version 以确定已安装的 Docker 版本。
适用于 Docker 的 NVIDIA 容器运行时 如果安装了 nvidia-docker2 软件包 运行 nvidia-docker version 并检查 NVIDIA Docker 版本 2.0 或更高版本
适用于 NVIDIA GPU 的 Docker Engine 实用程序 如果安装了 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 容器运行时

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

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

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

    您可以将 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 实用程序

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

$ nvidia-docker run ... 

3. 使用 NGC 容器

确保您已执行 NGC 网站上的以下步骤(请参阅NGC 入门指南
  • https://ngc.nvidia.com/signup 注册了 NGC 帐户。
  • 创建了 NGC API 密钥以访问 NGC 容器注册表。
  • 浏览了 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. 在美国和/或其他国家/地区的商标或注册商标。

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