用户指南

NGC 目录用户指南

NGC 目录用户指南

本用户指南详细介绍了如何浏览 NGC 目录,以及关于下载和使用内容的逐步说明。


NGC 目录是精选的 GPU 优化软件集,适用于 AI、HPC 和可视化。

由 NVIDIA 和第三方 ISV 提供的内容简化了构建、自定义和集成 GPU 优化软件到工作流程的过程,加快了用户获得解决方案的时间。

NGC 目录包含容器、预训练模型、用于 Kubernetes 部署的 Helm Chart,以及带有软件开发工具包 (SDK) 的行业专用 AI 工具包。

容器

NGC 目录托管了广泛的容器,包括深度学习框架、机器学习、HPC 和可视化应用程序,这些容器最大程度地利用了 GPU 环境。容器将软件包应用程序、库、依赖项和运行时编译器打包到自包含的环境中,以便在各种计算环境中轻松部署它们。它们实现了软件的可移植性,用户只需一个命令即可在云、数据中心和边缘拉取、运行和扩展应用程序。

模型和资源

NGC 目录为各种常见的 AI 任务提供预训练模型,这些模型针对 NVIDIA Tensor Core GPU 进行了优化。预训练模型可用于推理或通过迁移学习进行微调,从而为数据科学家和开发人员节省宝贵的时间。

资源提供文档、代码示例和许多其他资产,例如 Jupyter Notebook、部署管道以及用于创建深度学习模型的逐步说明和脚本,从而轻松开始使用深度学习。

Helm Chart

Kubernetes 是一个容器编排器,可促进容器化应用程序和微服务的部署和管理。Helm Chart 是一个包管理器,允许 DevOps 更有效地跨 Kubernetes 环境配置、部署和更新应用程序。NGC 目录提供用于部署 GPU 优化应用程序和 SDK 的 Helm Chart。

软件开发工具包

SDK 提供了用户构建和部署跨医学影像、对话式 AI 或视频分析等领域的 AI 应用程序所需的所有工具。它们包括用于数据标记的注释工具、用于通过迁移学习进行自定义的预训练模型,以及支持跨云、数据中心或边缘部署以实现低延迟推理的 SDK。

要了解有关 NGC 目录内容的更多信息,请访问 NGC 目录 网站。


以下是本文档中使用的常用术语。
术语定义
已身份验证/注册用户已使用其电子邮件帐户登录 NGC 的用户。该用户继承所有“访客用户”权限,并且可以访问某些需要用户登录的免费/免费试用实体/功能。
容器镜像NGC 中运行的所有应用程序都容器化为 Docker 容器,并在我们的运行时环境中执行。容器存储在 NGC 注册表 nvcr.io 中,可从 CLI 和 Web UI 访问。
容器端口创建作业时打开端口将创建一个 URL,该 URL 可用于使用 Web 协议访问该端口上的容器。以这种方式访问的 Web 应用程序(例如 Jupyterlab)的安全性由用户负责。请参阅下面的注释。
企业目录

企业目录包括 NVIDIA AI Enterprise 软件,并且只能由具有有效订阅的客户访问。NVIDIA AI Enterprise 还包括公共/免费目录中提供的软件,这些软件被设计为“NVIDIA AI Enterprise 支持..”。

企业目录的现有实施将与本文档中描述的 NGC 目录集成。

企业专有功能NGC 目录的功能仅适用于拥有产品(即订阅者)的用户。
企业专有软件容器、Helm Chart、资源、模型和集合,仅适用于拥有 NVIDIA AI Enterprise 订阅的用户。
实体容器、模型、Helm Chart 或资源。在本文档中,它们也称为“软件”。
访客用户未经身份验证的用户,可以访问(查看和下载)公共目录中的实体,而无需登录。
模型NGC 提供了一系列最先进的预训练深度学习模型,这些模型可以轻松地开箱即用、重新训练或微调。
NVIDIA AI Enterprise

NVIDIA AI 平台,NVIDIA AI Enterprise 的软件层,加速了数据科学管道,并简化了生产 AI(包括生成式 AI、计算机视觉、语音 AI 等)的开发和部署。定期的安全审查、API 稳定性和可靠的支持 SLA 确保 AI 项目保持在正轨上。

NVIDIA AI Enterprise 订阅包括实体、支持和独有的软件功能/模型。

私有注册表NGC 私有注册表提供了一个安全的空间,用于在您的企业内存储和共享自定义容器、模型、资源和 Helm Chart。
发布者发布者是 NGC 上托管的实体的所有者。
资源NGC 提供了创建深度学习模型的逐步说明和脚本,您可以在团队或组织内共享这些模型。
订阅者

已使用其电子邮件帐户登录(即注册)到 NGC 并且是组织一部分的用户,该组织有权访问产品(例如,“nv-ai-enterprise”、“riva-enterprise”)。

订阅者的免费产品示例是购买了许可证或被授予在限定时间内免费访问门控软件权限的人员。


NGC 提供软件来满足具有不同 AI 专业知识水平的数据科学家、开发人员和研究人员的需求。

NGC 上托管的所有软件都经过全面扫描,以查找常见漏洞和暴露 (CVE)、加密和私钥。

除了安全扫描之外,NGC 软件还针对各种支持 GPU 的平台进行了测试,包括公有云实例、工作站和专为数据中心或边缘部署设计的 OEM 服务器。支持的 GPU 包括 H100、V100、A100、T4、Jetson 和 RTX Quadro。

NGC 软件经过测试和保证可以跨多个 GPU 扩展,在某些情况下可以跨多个节点扩展,确保用户可以开箱即用地充分利用其 GPU 驱动的服务器。

对于选定的容器,NVIDIA 提供 NGC 支持服务,以在 DGX 平台或经过认证的 OEM 服务器上运行软件。该服务使企业 IT 可以直接访问 NVIDIA 主题专家,以快速解决软件问题并最大限度地减少系统停机时间。


有四种方法可以浏览和访问 NGC 上的软件。

访客访问:访客访问下的内容不需要用户注册或登录即可拉取或下载软件。

访客用户可以查看 NGC 目录中的所有公开可用的软件和大多数有权内容,但不能下载有权内容。

NGC 目录上的大多数软件都属于访客访问。但是,重要的是要注意,许多第三方应用程序需要许可证密钥,该密钥可以直接从 ISV 获取。虽然从 NGC 目录拉取公共软件不需要登录,但用户可能需要联系 ISV 以获得许可证密钥以供进一步使用。

已身份验证的访问:已身份验证的访问下的软件要求用户使用 NVIDIA 帐户登录其 NGC 组织,或者如果用户的组织已联合到其外部 SSO/IdP 服务,则登录 NGC 使用 SSO。拉取或下载软件需要用户提供其 API 密钥。

注册用户可以查看和下载 NGC 目录中的所有公开可用的软件。有权内容也可以查看,但不能下载。请注意,注册用户可能无法查看专门针对该产品的用户门控的内容。

已批准的访问:发布者必须授予用户批准才能访问此类别下的软件。获得访问权限后,用户将收到包含进一步访问软件说明的通知。请求访问的说明在相应软件的概述部分中提供。

订阅:要访问基于订阅的软件,用户必须提供企业地址详细信息和令牌(序列号、激活码等)。请注意,此类别也需要已身份验证的访问。

订阅者可以查看和下载 NGC 目录中的所有公开可用的软件,包括有权内容和独有内容。

下表概述了与每个用户访问级别(访客用户、注册用户、订阅者)关联的权限和功能。

访问级别查看公共实体下载公共实体查看有权内容下载有权内容查看/下载独有内容
访客用户
注册用户
订阅者


注册和激活新的 NGC 组织的说明。

5.1. 注册 NVIDIA 云帐户并激活个人 NGC 组织

本节介绍注册 NCA 帐户并激活个人 NGC 组织的步骤。

  1. 从浏览器转到 NGC 登录页面,输入您的电子邮件地址,然后单击继续

    login-new-org.png

  2. 在此步骤中,您将使用 NVIDIA 的默认 IdP 创建您的 NVIDIA 登录身份。在创建您的帐户屏幕上,创建一个密码,确保查看 NVIDIA 帐户使用条款和隐私政策,然后单击创建帐户以接受并继续帐户创建。您将收到一封电子邮件以验证您的电子邮件地址。

    create-an-account-dark.png

    验证电子邮件已发送到您的电子邮件地址。

    verify-email-dark.png

  3. 打开 NVIDIA 帐户创建电子邮件,然后单击验证电子邮件地址

    account-created-email.png

    您将自动定向到 nvidia.com,并看到电子邮件已成功验证页面。此窗口将自动关闭

    email-verified-dark.png

  4. 即将完成!对话框中,设置您的通信首选项,然后单击提交

    almost-done-dark-slim.png

  5. 输入您刚刚创建的密码以继续设置您的 NVIDIA 云帐户。(这是一项必需的安全措施)。

    ngc-sign-in-existing-user-dark.png

  6. 为您的 NVIDIA 云帐户 (NCA) 命名,这将有助于您在下次登录时轻松识别它。

    create-nvidia-cloud-account.png

  7. 设置您的个人资料屏幕上完成您的用户个人资料,同意 NVIDIA GPU 云使用条款,然后单击提交

    set-your-profile.png

    您的 NVIDIA 帐户已创建,您将自动重定向到您的个人 NGC 组织。

    ngc-default-landing-page.png

    您对 NVIDIA NGC 组织的访问已完成,您可以选择立即完成 NVIDIA 云帐户的设置,也可以稍后完成。

5.2. NGC API 密钥

使用 NCG CLI、Docker CLI 或 API 通信对 NGC 服务进行身份验证需要 NVIDIA NGC API 密钥。NVIDIA NGC 支持三种类型的 API 密钥,用于 NGC 目录和私有注册表,包括 API 密钥(原始)、API 服务密钥和 API 个人密钥。

个人密钥和服务密钥都提供了配置不同权限级别的能力。对于服务密钥和个人密钥,我们可以通过更新现有密钥的授权策略来修改现有密钥的权限,而无需更改密钥值。支持在不更改密钥值的情况下更新密钥权限的能力将允许开发人员和生产工程师将更新插入到他们的软件中,而不会影响服务正常运行时间。

注意

要获取 NGC CLI 中的工件列表,请使用原始或个人 API 密钥。


API 密钥(原始)
这是自 NGC 成立以来 NGC 中提供的原始类型的 API 密钥。此类型允许您一次仅创建一个“API 密钥”。生成新密钥会自动撤销之前的密钥,因为它们无法轮换。当您创建新密钥时,活动密钥立即失效。
注意

NVIDIA 将继续支持尚未过渡到下一代 API 密钥的服务的这种密钥类型。但是,我们鼓励客户尽可能迁移到我们的下一代 API 密钥。

NVIDIA NGC 推出了两种新型 API 密钥,支持基于角色的访问控制 (RBAC) 配置以及管理每个密钥状态的能力。

个人 API 密钥
任何作为 NGC 组织成员的用户都可以生成个人 API 密钥。这些密钥与用户在 NGC 组织中的生命周期相关联,并且可以访问分配给用户的权限和服务。在密钥生成步骤中,用户可以配置 API 密钥可以访问哪些 NGC 服务以及从一小时到“永不过期”的生存时间。
服务 API 密钥
服务 API 密钥不与个人用户帐户关联;相反,它们链接到 NVIDIA 云帐户,并在创建它们的 NGC 组织中管理它们的生命周期。组织所有者和分配了 user_admin 角色的成员可以创建和管理服务 API 密钥。必须分配 user_admin 角色以及用户将为其生成和管理服务密钥的特定应用程序角色。
注意

服务密钥目前不支持在 NGC CLI 或 Docker CLI 中列出工件。此功能将在未来添加。在此期间,请使用个人 API 密钥列出工件。

5.2.1. 生成个人 API 密钥

  1. 登录到 NGC 网站。

    从浏览器中,转到 https://ngc.nvidia.com/signin,然后输入您的电子邮件和密码。

  2. 单击右上角的用户帐户图标,然后选择设置

    ngc-user-profile-menu-setup.png

  3. 从可用选项中单击生成个人密钥

    个人密钥允许访问一组 NGC 服务 API。

    api-key-generate-personal-key-menu.png

  4. 设置 > 个人密钥页面上,单击菜单或窗格上的+ 生成个人密钥

    api-key-generate-personal-key-page.png

  5. 生成个人密钥对话框中,填写密钥的必需信息。

    api-key-generate-personal-key-dialog.png

    • 密钥名称:输入密钥的唯一名称。
    • 过期时间:选择密钥的到期日期。

      api-key-generate-personal-key-expiration.png

    • 包含的服务:从密钥允许访问的可用服务中进行选择。请参阅 将服务分配给您的个人 API 密钥,以了解有关每个服务的更多信息以及何时为您的个人密钥分配服务访问权限。
  6. 完成后单击生成个人密钥

    您的 API 密钥将显示在以下对话框中。

  7. NGC 不会保存您的密钥,因此请安全地存储它。您可以通过选择复制个人密钥或使用 API 密钥右侧的复制图标将您的 API 密钥复制到剪贴板。

    api-key-generate-personal-key-confirm.png

    您可以生成最多八个个人密钥,并从设置 > 个人密钥仪表板管理它们。要激活或停用密钥,请单击活动切换按钮。操作(省略号)菜单允许您轮换或删除个人密钥。

    api-key-generate-personal-key-dashboard.png

5.2.1.1. 将服务分配给您的个人 API 密钥

您可以分配给个人 API 密钥的服务取决于两个因素

  • 为您生成 API 密钥的 NGC 组织启用的服务。
  • 您的 NGC 组织所有者或管理员分配给您的服务角色。

例如,考虑一个启用了以下服务的 NGC 组织

ngc-org-subscriptions.png

NGC 用户帐户可能分配了以下访问角色

ngc-user-account-example.png

在这种情况下,NGC 组织已启用 NVIDIA Microservices、私有注册表、NVIDIA AI Enterprise 和云函数 (NVCF)。用户帐户已被授予对所有这些服务的访问角色。因此,可以生成具有访问其中一项或所有项权限的个人 API 密钥。

ngc-generate-personal-key-dialog.png

如果某个服务不可用于分配给 API 密钥,则表明组织所有者或管理员未授予用户该服务所需的角色。

有关上面列出的每个服务及其功能的详细信息,请参见下文。

Secrets Manager:NGC Secrets Manager 服务使 NGC 用户能够存储访问 NVIDIA 或需要程序化身份验证的外部服务所需的密钥对。

如果您需要使用个人 API 密钥从 Secrets Manager 保险库检索这些密钥,则必须将 Secrets Manager 服务权限分配给您的 API 密钥。

NGC 目录:NGC 目录服务提供对可供下载的 NVIDIA AI 工件的访问。用户可以浏览可用的工件并访问有关每个工件的信息。对门控目录工件的访问由 NVIDIA AI Enterprise 订阅控制。

如果您需要使用个人 API 密钥来访问 NGC 目录 API 端点(例如下载 NIM 工件),请授予您的个人 API 密钥 NGC 目录服务权限。

公共 API 端点:调用 NVIDIA NIM 推理端点需要公共 API 端点服务。尽管 NIM 推理端点在所有 NGC 组织上都已启用,并且在 NGC 订阅门户中不显示为服务,但调用它们会消耗组织积分。因此,用户必须具有分配给他们的适当角色才能将此服务添加到他们的个人 API 密钥并使用组织积分。

云函数 (NVCF):访问私有或与特定 NGC 组织共享的函数需要云函数服务。如果启用,NVCF 服务允许创建和管理函数。这些函数的权限(创建、读取、更新、删除、列表)可以分配给用户,然后由他们的个人 API 密钥继承。

如果您需要使用个人 API 密钥来调用、管理或列出私有或共享组织函数,请授予您的个人 API 密钥对云函数服务的访问权限。

私有注册表:私有注册表服务为具有适当角色访问权限的 NGC 组织用户提供私有存储库,以管理和存储私有工件。具有私有注册表访问权限的 NGC 用户可以上传、下载、创建、删除、共享和列出工件。

如果您需要使用个人 API 密钥通过私有注册表 API 端点以编程方式管理组织注册表中的私有工件,请将私有注册表访问权限分配给您的个人 API 密钥。

5.2.2. 生成服务 API 密钥

  1. 登录到 NGC 网站。

    从浏览器中,转到 https://ngc.nvidia.com/signin,然后输入您的电子邮件和密码。

  2. 从右上角的用户帐户菜单中选择组织

    ngc-catalog-user-account-menu-org.png

    在组织仪表板上选择服务密钥

    ngc-org-dashboard-service-keys.png

  3. 组织 > 服务密钥页面上,单击+ 创建服务密钥按钮以创建密钥。

    api-key-create-service-key-page.png

  4. 创建服务密钥对话框中,填写所需的配置。服务密钥目前支持 NVIDIA NIM、NGC 目录和私有注册表等服务。将作用域和资源权限分配给密钥。

    api-key-create-service-key-form.png

    实体类型字段中,从可用选项中选择要授予 API 密钥的权限。

    api-key-create-service-key-entity-type.png

    作用域字段中,从可用选项中选择。

    api-key-create-service-key-scope.png

  5. 单击下一步以查看您的密钥配置。

    api-key-create-service-key-form-next-step.png

  6. 验证配置后,单击确认以生成您的服务密钥。您的服务密钥将显示在下一个对话框中。

    api-key-create-service-key-confirm.png

  7. NGC 不会保存您的密钥,因此请安全地存储它。您可以通过单击 API 密钥右侧的复制图标或复制服务密钥按钮将您的 API 密钥复制到剪贴板。

    api-key-create-service-key-copy-key.png

    确保在离开此页面之前复制密钥值。一旦您离开,密钥值将无法检索,更换它将需要生成新密钥。

    NGC 支持多个服务 API 密钥,这些密钥从组织 > 服务密钥仪表板进行管理。

    要激活或停用密钥,请单击活动切换按钮。操作(省略号)菜单允许您轮换或删除服务密钥。

    api-key-create-service-key-dashboard.png

    注意

    管理容器时,请确保将作用域获取容器获取容器列表分配给您的服务密钥。对于其他类型的工件,请添加作用域获取工件获取工件列表。这些作用域是发现需要管理的工件所需的最低要求。有关更多信息,请参阅 NGC 目录用户指南私有注册表用户指南

5.2.3. 生成 NGC API 密钥

本节介绍如何获取 API 密钥以访问 NGC 注册表中的锁定容器镜像。

  1. 登录到 NGC 网站。

    从浏览器中,转到 https://ngc.nvidia.com/signin,然后输入您的电子邮件和密码。

  2. 单击右上角的用户帐户图标,然后选择设置

    ngc-user-profile-menu-setup.png

  3. 单击生成 API 密钥以打开API 密钥页面。

    API 密钥是对 NGC 容器注册表进行身份验证的机制。

    generate-api-key.jpg

  4. API 密钥页面上,单击+ 生成 API 密钥以生成您的 API 密钥。

    将显示一条警告消息,提示如果您创建新密钥,您的旧 API 密钥将失效。

  5. 单击确认以生成密钥。

    您的 API 密钥将显示。

    您只需生成一次 API 密钥。NGC 不会保存您的密钥,因此请安全地存储它。

    提示

    您可以通过单击 API 密钥右侧的复制图标将您的 API 密钥复制到剪贴板。

    如果您丢失了 API 密钥,您可以从 NGC 网站生成一个新密钥。当您生成新的 API 密钥时,旧的 API 密钥将失效。

统一的 NGC 和企业目录

注意

企业目录(托管由 NVIDIA AI Enterprise (NVAIE) 支持的软件)现已集成到 NGC 目录(公共)中,为用户提供了一个有凝聚力且全面的平台。拥有有效 NVAIE 授权的 NVAIE 客户可以从 NGC 目录中访问他们独有的软件和功能。

NGC 目录旨在提供公共可用实体(例如,容器、模型、资源)以及作为称为有权实体产品一部分的集中目录。这种方法使用户能够无缝搜索和过滤所有实体,从而获得更高效和改进的用户体验。

用户可以通过登录 NGC 来查看和下载有权实体。NGC CLI 也可用于使用 API 密钥下载软件。即使在切换组织/团队上下文时,对所有已授予产品的访问权限也将保持不变。当尝试下载门控功能或有权实体时,未经身份验证的用户将看到登录或获得产品访问权限的提示。

发布者可以将实体发布和映射到产品。对实体的访问受到实体类型、实体访问类型、用户订阅和角色的限制,从而增强了安全性和控制。对于有权实体,鼓励访客用户转换为注册或订阅状态以访问特定于产品的实体。

NGC CLI 简介

NGC CLI 是用于管理 NGC 注册表中内容的命令行界面。CLI 在 shell 中运行,允许您使用脚本来自动化命令。

NGC 目录 CLI

如果您具有对 NGC 注册表的访客访问权限,则可以使用 NGC 目录 CLI,使用它可以

  • 查看 GPU 加速的 Docker 容器镜像、预训练深度学习模型和用于创建深度学习模型的脚本列表。
  • 下载容器镜像、模型和资源。

NGC 注册表 CLI

如果您使用自己的 NGC 帐户或 NGC 私有注册表帐户登录,则可以使用 NGC 注册表 CLI,使用它可以

  • 查看可用的 GPU 加速 Docker 容器列表以及有关每个镜像的详细信息。
  • 查看深度学习模型和资源列表以及有关它们的详细信息。
  • 下载容器镜像、模型和资源。
  • 上传容器镜像、模型和资源。
  • 创建和管理用户和团队(适用于 NGC 私有注册表管理员)。

有关更多详细信息和最佳实践,请访问 NGC CLI 文档页面

6.1. 安装 NGC 目录 CLI

要安装 NGC 目录 CLI,

  1. 以访客用户身份进入 NGC 网站 (https://ngc.nvidia.com)。
  2. 在右上角,单击欢迎访客,然后从菜单中选择设置
  3. 从“设置”页面单击 CLI 下的下载
  4. 从“CLI 安装”页面,根据您将运行 NGC 目录 CLI 的平台,单击 WindowsLinuxmacOS 选项卡。
  5. 按照说明安装 CLI。
  6. 通过输入 ngc --version 验证安装。输出应为 NGC CLI x.y.z,其中 x.y.z 表示版本。

6.2. 安装 NGC 注册表 CLI

要安装 NGC 注册表 CLI,

  1. 在 NGC 网站 (https://ngc.nvidia.com) 上登录到您的企业帐户。
  2. 在右上角,单击您的用户帐户图标,然后选择设置,然后从“设置”页面单击 CLI 下的下载
  3. 从“CLI 安装”页面,根据您将运行 NGC 注册表 CLI 的平台,单击 WindowsLinuxmacOS 选项卡。
  4. 按照说明安装 CLI。
  5. 通过输入 ngc --version 验证安装。输出应为 NGC CLI x.y.z,其中 x.y.z 表示版本。


在过去几年中,软件容器的使用急剧增加,以简化大规模数据中心应用程序的部署。容器封装了应用程序及其库和其他依赖项,以提供可重现且可靠的应用程序和服务执行,而无需完整的虚拟机开销。

Docker 容器内的 GPU 支持使基于 GPU 的应用程序能够像 Docker 使基于 CPU 的应用程序能够跨多台机器部署一样,在多台机器之间实现可移植性。

Docker 容器
Docker 容器是 Docker 镜像的实例。一个 Docker 容器为每个容器部署单个应用程序或服务。
Docker 镜像
Docker 镜像只是您在 Docker 容器中运行的软件(包括文件系统和参数)。

7.1. 什么是 Docker 容器?

Docker 容器是一种将 Linux 应用程序与其所有库、数据文件和环境变量捆绑在一起的机制,以便执行环境始终相同,无论它在哪个 Linux 系统上运行以及同一主机上的实例之间。

与具有自己隔离内核的 VM 不同,容器使用主机系统内核。因此,来自容器的所有内核调用都由主机系统内核处理。用户可以使用 Docker 容器作为在本地、云端或边缘部署深度学习框架的机制。

Docker 容器是 Docker 镜像的运行实例。

7.2. 为什么要使用容器?

使用容器允许您将应用程序、依赖项和环境变量打包到单个镜像中,而不是在您运行的每个系统上都进行打包。使用容器的其他好处包括:

  • 同一应用程序的多个版本(可能具有冲突的软件依赖项)可以在同一服务器上运行。

  • 容器化应用程序可以部署在本地、云端或边缘

  • 可以将特定的 GPU 资源分配给容器,以实现隔离和更好的性能。

  • 在不同环境之间轻松共享、协作和测试应用程序。

  • 通过在启动容器时将容器端口映射到特定的外部可见端口,解决应用程序之间的网络端口冲突。

7.3. 搜索和筛选容器

要查看 NGC 容器,请导航到左侧菜单中的目录 > 容器。使用页面顶部的搜索栏查找特定容器,或使用下拉菜单中的条件对列表进行排序。您可以使用 NVIDIA 平台、NVIDIA AI Enterprise、快速部署和许多其他过滤器来优化搜索。筛选选项的描述如下

  • 用例:从可用的常见用例中选择。

  • NVIDIA 平台:从 Clara、DeepStream、TensorFlow 和许多其他平台中选择。

  • NVIDIA AI Enterprise 支持: 选择此选项以查找 NVAIE 容器支持的公开可用容器。

  • NVIDIA AI Enterprise 独有:在此项下选择产品以查看有权实体。

  • 快速部署:选择此选项以查找容器,从而在 Jupyter 环境中快速部署您的工件。

  • 行业:按可用行业选择。

  • 解决方案:选择与您的用例最匹配的解决方案。

  • 发布者:按发布者筛选。

  • 架构:选择此选项以获得多架构支持。

  • 签名镜像:选择此选项以获得带有数字签名的容器镜像。

  • 多节点:选择此选项以获得多节点支持。

  • 其他:其他选项。

以下页面显示了访客用户的示例容器列表

ngc-catalog-containers-guest.png

从列表中选择一个容器以查看其详细信息。所有用户都可以访问概览信息,无论他们是否已登录。这是一个 NVIDIA AI Enterprise Supported 容器的示例

ngc-catalog-containers-nvaie-supported-example.png

用户必须登录才能查看 Security Scanning 选项卡的内容。

ngc-catalog-containers-nvaie-supported-example-security-tab.png

同样,当筛选 NVIDIA AI Enterprise Essentials 时,将显示可用的容器

ngc-catalog-containers-nvaie-supported-example-filtered.png

一旦您选择一个容器,它将在 Overview 选项卡中显示信息

ngc-catalog-containers-nvaie-supported-example-overview.png

如果用户未订阅 NVIDIA AI Enterprise Software Exclusive 产品,他们在查看其他选项卡时会看到以下消息

ngc-catalog-containers-nvaie-supported-example-unsubscribed.png

如果用户尝试下载容器,他们将看到一条消息,指示需要订阅

ngc-catalog-containers-nvaie-supported-example-sub-req.png

但是,一旦用户订阅 NVIDIA AI Enterprise Software Exclusive 产品,他们就可以查看容器信息。

ngc-catalog-containers-nvaie-supported-example-subscribed.png


NGC 容器旨在实现以最小操作系统要求为中心的软件平台,服务器或工作站上安装 Docker 和驱动程序,以及通过 NGC 容器注册表在 NGC 容器中配置所有应用程序和 SDK 软件。

NGC 目录是一组精选的、完全集成和优化的容器镜像,用于深度学习、HPC 和可视化应用程序。

  • 深度学习框架容器充分利用了单 GPU 和多 GPU 配置中的 NVIDIA GPU。它们包括 CUDA 工具包、DIGITS 工作流程和深度学习框架:NVCaffe、Caffe2、Microsoft Cognitive Toolkit (CNTK)、MXNet、PyTorch、TensorFlow、Theano 和 Torch。这些框架容器已准备就绪,包括所有必要的依赖项,如 CUDA 运行时、NVIDIA 库和操作系统。NVIDIA 每月更新这些深度学习容器,以确保它们继续提供最佳性能。
  • NGC 还托管 HPC 应用程序目录,例如 NAMD、GROMACS、LAMMPS、RELION、CHROMA、MILC 等等。
  • 除了 HPC 应用程序外,NGC 还托管行业领先的可视化工具,包括带有 NVIDIA IndeX 体积渲染器的 ParaView、NVIDIA OptiX 光线追踪库和用于交互式实时可视化和高质量视觉效果的 NVIDIA Holodeck。
  • NGC 还托管流行的第三方 GPU 就绪应用程序容器,这些容器符合 NGC 容器标准和最佳实践,从而可以轻松充分利用 NVIDIA GPU。
  • 借助 NGC 快速部署功能,许多 NGC 容器可以用作内核,在 Google Cloud Vertex AI Workbench 上启动 JupyterLab 实例,并具有最佳配置和所有预加载的软件依赖项。

8.1. 为什么选择 NGC 容器镜像?

NGC 目录上托管的每个镜像都经过 NGC 团队的安全扫描和 GPU 性能测试。

8.1.1. NGC 容器安全策略

企业风险和安全评估流程的一项关键职能是确保在开发或部署中使用的所有容器镜像都经过已知漏洞测试。发布到 NGC 目录的容器会根据 NGC 容器安全策略进行扫描。

安全扫描包括以下检查:

  • 过时的软件包,例如漏洞扫描

  • 元数据检查,例如 Dockerfile 中指定的开放端口等

  • 加密密钥材料泄漏

CVE 的扫描策略使用通用漏洞评分系统 (CVSS) 将严重程度评为严重、高、中和低漏洞。扫描结果和 NVIDIA 安全风险等级将提供给用户。已发布的镜像每 30 天重新扫描一次,以反映最新的 CVE 发现。

8.1.2. NVIDIA 安全风险等级

NVIDIA 安全风险等级评估给定容器镜像对开发/生产基础设施环境构成的风险级别。

此评级考虑了操作系统和非操作系统软件包的漏洞扫描。

等级描述软件包详细信息
AAA评级为具有最低安全风险。0没有具有漏洞的软件包
AA评级为具有较低安全风险。11 个软件包具有严重或高危漏洞
A评级为具有中等安全风险,需要根据环境工作负载进行一些推测性判断2-32-3 个软件包具有严重或高危漏洞
B评级为具有高安全风险,需要根据环境工作负载进行一些推测性判断3+4-5 个软件包具有严重或高危漏洞
C评级为具有最高安全风险5+5 个以上软件包具有严重或高危漏洞

8.1.3. NGC 目录容器镜像的 GPU 性能测试

为了确保 NVIDIA GPU 所有者可以使用 NGC 托管的镜像获得良好的性能,所有容器镜像都经过 GPU 上的基本安装、功能、可扩展性和性能测试。

这些测试在一系列 GPU 上执行,范围从 NVIDIA T4 到 A100 再到 DGX 系统,用于性能和多 GPU 用于扩展。支持的 GPU 选择可能仅限于少数架构或单/多 GPU,具体取决于应用程序容器的业务用例。

这些测试在裸机安装和云部署实例上执行,以确保本地部署和云部署用例。

8.2. NVIDIA 容器工具包

NVIDIA 容器工具包允许用户构建和运行 GPU 加速容器。该工具包包括容器运行时 和实用程序,以自动配置容器以利用 NVIDIA GPU。它与许多流行的容器运行时集成,包括 Docker、podman、CRI-O、LXC 等。

为了在利用 NVIDIA GPU 的 Docker 镜像中实现可移植性,NVIDIA 开发了 nvidia-docker,这是一个托管在 Github 上的开源项目,它提供了便携式基于 GPU 的容器所需的两个关键组件:

  1. 与驱动程序无关的 CUDA 镜像。
  2. 一个 Docker 命令行包装器,它在启动时将驱动程序的用户模式组件和 GPU(字符设备)挂载到容器中。

nvidia-docker 是一个 Docker 命令行包装器,它为容器提供必要的组件以在 GPU 上执行代码。

当使用利用 GPU 的容器时,唯一必须通过 nvidia-docker 命令执行的命令是 run 命令。对于所有其他功能,可以使用 docker 命令。

但为了简化本文档,我们对所有命令都使用 nvidia-docker

8.3. NVIDIA CUDA 工具包

NVIDIA® CUDA® 工具包为创建高性能 GPU 加速应用程序提供了开发环境。借助 CUDA 工具包,您可以在 GPU 加速的嵌入式系统、桌面工作站、企业数据中心、基于云的平台和 HPC 超级计算机上开发、优化和部署您的应用程序。该工具包包括 GPU 加速库、调试和优化工具、C/C++ 编译器以及部署应用程序的运行时库。

GPU 加速的 CUDA 库支持跨多个领域的即插即用加速,例如线性代数、图像和视频处理、深度学习和图分析。为了开发自定义算法,您可以使用与常用语言和数值包的可用集成以及已发布的开发 API。您的 CUDA 应用程序可以部署在本地和云中 GPU 实例上可用的所有 NVIDIA GPU 系列中。利用用于在多 GPU 配置中分配计算的内置功能,科学家和研究人员可以开发从单 GPU 工作站扩展到具有数千个 GPU 的云安装的应用程序。

8.4. 运行 Singularity 容器

NGC 支持 Docker 和 Singularity 容器运行时。虽然 Docker 主要在企业中流行,但 Singularity 已在 HPC 社区中普及。开发 Singularity 是为了更好地满足 HPC 用户和系统管理员的需求,包括在没有超级用户权限的情况下运行容器的能力。

NGC 容器可以轻松地与 Singularity 一起使用。让我们使用 NGC NAMD 容器 进行说明。NAMD 是一款并行分子动力学应用程序,专为大型生物分子系统的高性能模拟而设计,由伊利诺伊大学的理论与计算生物物理学小组开发。

先决条件

以下说明假定满足以下条件。

  • 您的系统上已安装 Singularity v2.6+

  • 您已从 NGC 网站执行了以下步骤。

    • https://ngc.nvidia.com/signup 注册了 NGC 帐户。

    • 创建了 NGC API 密钥以访问 NGC 容器注册表

    • 浏览了 NGC 网站并确定了要运行的可用 NGC 容器和标签

  • 确保您已正确设置 udev 规则,详细信息请参见(此处

注意

建议您安装 nvidia-container-cli,因为如果安装了,Singularity 将使用它。更多信息可以在此处找到。

8.4.2. 转换为 Singularity 镜像

在使用 Singularity 运行之前,您必须设置 NGC 容器注册表身份验证凭据。

最容易实现这一点的方法是设置以下环境变量。

bash

复制
已复制!
            

$ export SINGULARITY_DOCKER_USERNAME='$oauthtoken' $ export SINGULARITY_DOCKER_PASSWORD=<NVIDIA NGC API key>


tcsh

复制
已复制!
            

> setenv SINGULARITY_DOCKER_USERNAME '$oauthtoken' > setenv SINGULARITY_DOCKER_PASSWORD <NVIDIA NGC API key>


有关如何获取和使用您的 NVIDIA NGC API 密钥的更多信息,请参见此处

一旦在环境中设置了凭据,就可以将 NGC 容器拉取到本地 Singularity 镜像。

复制
已复制!
            

$ singularity build <app_tag>.simg docker://nvcr.io/<repository>/<app:tag>


这将容器保存到当前目录,如下所示

复制
已复制!
            

<app_tag>.simg


例如,要将 NGC 上托管的 HPC 应用程序 NAMD 转换为 Singularity 镜像,请运行

复制
已复制!
            

$ singularity build namd_2.12-171025.simg docker://nvcr.io/hpc/namd:2.12-171025


构建完成后,Singularity 镜像文件 namd_2.12-171025.simg 将在当前工作目录中可用。

8.4.3. 运行 Singularity 容器

一旦拉取了本地 Singularity 镜像,就支持以下运行模式。

要利用 NVIDIA GPU,您必须在运行容器时使用 Singularity 标志 --nv。更多 singularity 标志在此处进行了解释。

重要提示

对于 Amazon Machine Image 用户 Amazon Web Service 上的 Amazon Machine Images 具有 077 的默认根 umask。Singularity 必须以 022 的 umask 安装才能正常运行。要使用正确的权限(重新)安装 Singularity:

  • 卸载 Singularity(如果已安装)

  • 使用以下命令更改 umask:$ umask 0022

  • 安装 Singularity

  • 恢复 umask:$ umask 0077

这会导致已安装的 Singularity 文件具有权限 0755 而不是默认的 0700。请注意,umask 命令仅对当前 shell 应用更改。请在同一 shell 会话中使用 umask 并安装 Singularity。


8.4.3.1. 目录访问

Singularity 容器本身表面上是只读的。为了提供应用程序输入并持久化应用程序输出,我们将主机目录绑定到我们的容器中,这通过 Singularity -B 标志完成。此标志的格式为 -B <host_src_dir>:<container_dst_dir>。一旦主机目录绑定到容器中,我们就可以从容器内部与此目录交互,就像我们在容器外部一样。

使用  --pwd <container_dir> 标志通常也很方便,它会将容器内要运行的命令的当前工作目录设置为容器目录。

下面的 Singularity 命令会将主机上的当前工作目录挂载到容器进程中的 /host_pwd,并将容器进程的当前工作目录设置为 /host_pwd。使用这组标志,要运行的 <cmd> 将从调用 Singularity 的主机目录启动。

复制
已复制!
            

$ singularity exec --nv -B $(pwd):/host_pwd --pwd /host_pwd <image.simg> <cmd>


注意

绑定到容器镜像中不存在的目录需要内核和配置支持,这可能并非在所有系统上都可用,尤其是在运行旧内核(如 CentOS/RHEL 6)的系统上。如有疑问,请联系您的系统管理员。

8.4.3.2. 使用 Singularity 进行命令行执行

从命令行使用 Singularity 运行容器类似于以下命令。

复制
已复制!
            

$ singularity exec --nv <app_tag>.simg <command_to_run>


例如,要在容器中运行 NAMD 可执行文件

复制
已复制!
            

$ singularity exec --nv namd_2.12-171025.simg /opt/namd/namd-multicore

8.4.3.3. 使用 Singularity 进行交互式 Shell

要在容器内启动 shell,请运行以下命令

复制
已复制!
            

$ singularity exec --nv <app_tag>.simg /bin/bash


例如,要在 NAMD 容器中启动交互式 shell

复制
已复制!
            

$ singularity exec --nv namd_2.12-171025.simg


为了在利用 GPU 的 Docker 镜像中实现可移植性,已经开发了三种为 Docker 容器提供 GPU 支持的方法。

  • 运行 Docker-ce 19.03 或更高版本以获得原生 GPU 支持
  • nvidia-docker2
  • nvidia-docker

这些方法中的每一种都在启动时将 NVIDIA 驱动程序的用户模式组件和 GPU 挂载到 Docker 容器中。它们允许 NGC 容器充分利用 NVIDIA GPU。

9.1. 在 DGX 系统上使用 NGC 容器的先决条件

DGX™ 用户应遵循 准备您的 DGX 系统以与 NVIDIA 容器运行时一起使用 中的说明。

9.2. 在云平台上使用 NGC 容器的先决条件

在每个主要的公有云提供商上,NVIDIA 都发布了定制的虚拟机镜像 (VMI),其中包含更新的操作系统和 NVIDIA 驱动程序,这些镜像已经过 NGC 容器的测试。这些 VMI 预装了 NVIDIA 容器工具包,使您可以立即开始从 NGC 拉取和运行 Docker 容器。要在云平台上使用 NVIDIA NGC GPU 优化型 VMI,您需要 -

9.3. 在其他 NVIDIA GPU 上使用 NGC 容器的先决条件

  • 在其他 NVIDIA GPU 或虚拟 GPU 环境中运行 NGC 容器的用户应遵循 TITAN PC、Quadro PCvGPU 的相应说明。

  • 其他用户应遵循 nvidia-docker 安装文档 nvidia-docker 安装,并为您的操作系统安装适用于您的 GPU 产品类型和系列的最新 NVIDIA 驱动程序。如果您的系统上尚未配置 NVIDIA 驱动程序,请从此位置安装:下载驱动程序

  • 确保您拥有支持计算统一设备架构® (CUDA) 版本且计算能力为 6.0.0 或更高的 NVIDIA GPU。例如,Pascal GPU 架构代或更高版本。

9.4. HPC 可视化容器

除了访问 NVIDIA 优化的框架 和 HPC 容器之外,NVIDIA GPU Cloud (NGC) 容器注册表还托管以下用于 HPC 的科学可视化容器。这些容器依赖于名为 ParaView 的流行科学可视化工具。HPC 环境中的可视化通常需要远程可视化,也就是说,数据驻留在远程 HPC 系统或云中并在其上处理,用户从其工作站以图形方式与此应用程序交互。由于某些可视化容器需要专门的客户端应用程序,因此 HPC 可视化容器由两个组件组成

服务器容器
服务器容器需要访问服务器系统上的文件。下面提供了有关如何授予此访问权限的详细信息。服务器容器可以在串行模式或并行模式下运行。对于此 alpha 版本,我们专注于串行节点配置。如果您对并行配置感兴趣,请联系 hpcviscontainer@nvidia.com。
客户端容器
为了确保客户端应用程序和服务器容器的版本匹配,NVIDIA 在容器中提供了客户端应用程序。与服务器容器类似,客户端容器需要访问一些端口才能建立与服务器容器的连接。

此外,客户端容器需要访问用户的 X 服务器才能显示图形用户界面。

9.4.1. HPC 可视化容器的先决条件

  • 安装 docker-cenvidia-docker2。首先安装 docker-ce,然后为您的操作系统和 Docker 版本安装 nvidia-docker2。有关安装 nvidia-docker2 的脚本,请参阅 安装 NVIDIA Docker 2.0
    注意

    如果您已经安装了 nvidia-docker1 并打算保留它,则可以安装 nvidia-container-runtime

  • 安装 NVIDIA 显示驱动程序版本 384.57 或更高版本,具体取决于您的操作系统适用的 GPU 产品类型和系列。有关更多信息,请参阅 下载驱动程序
  • 确保您拥有支持计算统一设备架构® (CUDA) 版本且计算能力为 6.0.0 或更高的 NVIDIA GPU。例如,Pascal GPU 架构代或更高版本。
  • 使用您的 NGC API 密钥登录位于 nvcr.io 的 NVIDIA® GPU Cloud (NGC) 容器注册表。有关如何获得访问权限和获取 API 密钥的分步说明,请参阅 生成 NGC API 密钥

9.4.2. 安装 NVIDIA Docker 2.0

以下脚本安装 NVIDIA Docker 2.0,这是拉取带有 NVIDIA IndeX HPC 可视化容器的 ParaView 的先决条件。

NVIDIA Docker 2.0 完全支持容器中的并发图形和计算功能。NGC 的当前安装在 NVIDIA Docker 1.0 上运行。在任何这些实例上使用容器之前,必须安装 NVIDIA Docker 2.0。使用以下脚本在您的实例上安装 NVIDIA Docker 2.0。

复制
已复制!
            

# Install NVIDIA Docker 2.0 docker volume ls -q -f driver=nvidia-docker | \ xargs -r -I{} -n1 docker ps -q -a -f volume={} | xargs -r docker rm -f sudo apt-get purge -y nvidia-docker curl -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add - sudo tee /etc/apt/sources.list.d/nvidia-docker.list <<< \ "deb https://nvidia.github.io/libnvidia-container/ubuntu16.04/amd64 / deb https://nvidia.github.io/nvidia-container-runtime/ubuntu16.04/amd64 / deb https://nvidia.github.io/nvidia-docker/ubuntu16.04/amd64 /" sudo apt-get -y update sudo apt-get install -y nvidia-docker2 sudo pkill -SIGHUP dockerd # Tests #docker run --runtime=nvidia --rm nvidia/cuda nvidia-smi

9.4.3. 带有 NVIDIA Holodeck 的 ParaView

目前,带有 NVIDIA Holodeck 容器的 ParaView 需要在服务器主机和客户端主机上都运行 X 服务器。因此,只需要一个容器镜像。

  1. 为您的容器创建 X 转发变量。
    复制
    已复制!
                

    XSOCK=/tmp/.X11-unix; XAUTH=/tmp/.docker.xauth; touch /tmp/.docker.xauth; xauth nlist :0 | sed -e 's/^..../ffff/' | xauth -f /tmp/.docker.xauth nmerge -

  2. 在服务器主机上,启动 ParaView Holodeck 服务器
    复制
    已复制!
                

    docker run --rm -it --runtime=nvidia \ -v /tmp/.X11-unix:/tmp/.X11-unix -v /tmp/.docker.xauth:/tmp/.docker.xauth \ -e XAUTHORITY=/tmp/.docker.xauth -e DISPLAY=:0 \ -p 11111:11111 \ --shm-size=4g \ nvcr.io/nvidia-hpcvis/paraview-holodeck:glx-17.11.13-beta \ ./service.sh externalvis pvserver

    将显示显示太空场景的 Holodeck 渲染窗口。

    在您收到类似于以下内容的消息后,服务器容器即可就绪

    复制
    已复制!
                

    "Accepting connection(s): [...]:11111"

  3. 设置 X 访问权限并在客户端主机上启动客户端容器。确保替换 your_server_hostname
    复制
    已复制!
                

    XSOCK=/tmp/.X11-unix; XAUTH=/tmp/.docker.xauth touch /tmp/.docker.xauth xauth nlist :0 | sed -e 's/^..../ffff/' \ | xauth -f /tmp/.docker.xauth nmerge -docker run --rm -it --runtime=nvidia \ -v /tmp/.X11-unix:/tmp/.X11-unix -v /tmp/.docker.xauth:/tmp/.docker.xauth \ -e XAUTHORITY=/tmp/.docker.xauth -e DISPLAY=:0 \ nvcr.io/nvidia-hpcvis/paraview-holodeck:glx-17.11.13-beta \ sh -c paraview\ --server-url=cs://your_server_hostname:11111

    将显示 ParaView 用户界面。

9.4.4. 带有 NVIDIA IndeX 的 ParaView

为了支持启用 X 和无头主机,带有 GLX 和 EGL 支持的 ParaView IndeX 容器镜像可用。以下部分介绍如何针对不同的用例启动 IndeX 容器。

有关 ParaView 的更多信息,请参阅 ParaView 用户指南NVIDIA IndeX SDK

9.4.4.1. 带有 GLX 的单机

  1. 登录到 docker 存储库并在您的工作站上拉取启用 X 显示的容器
    复制
    已复制!
                

    docker pull nvcr.io/nvidia-hpcvis/paraview-index:glx-17.11.13-beta

  2. 指定 X 转发变量
    复制
    已复制!
                

    XSOCK=/tmp/.X11-unix; XAUTH=/tmp/.docker.xauth touch /tmp/.docker.xauth xauth nlist :0 | sed -e 's/^..../ffff/' \ | xauth -f /tmp/.docker.xauth nmerge

  3. 运行镜像。在此示例中,主机系统数据在当前目录 $(pwd) 中挂载到容器中的 /work。应根据用户需要修改此设置。
    复制
    已复制!
                

    docker run --rm -it --runtime=nvidia \ -v /tmp/.X11-unix:/tmp/.X11-unix -v /tmp/.docker.xauth:/tmp/.docker.xauth \ -v $(pwd):/work -e XAUTHORITY=/tmp/.docker.xauth -e DISPLAY=:0 \ nvcr.io/nvidia-hpcvis/paraview-index:glx-17.11.13-beta \ sh -c paraview

9.4.4.2. 带有 EGL 的服务器容器


在典型的客户端-服务器设置中,一个充当服务器的容器将在远程无显示器机器上运行,连接到在工作站上本地运行并提供图形前端的第二个容器。使用以下命令从服务器主机上的 NGC 注册表中拉取启用 EGL 的无显示器容器

复制
已复制!
            

docker pull nvcr.io/nvidia-hpcvis/paraview-index:egl-17.11.13-beta


在服务器主机上运行服务器组件。我们在默认端口 11111 上监听

复制
已复制!
            

docker run --runtime=nvidia -p 11111:11111 --rm -it \ nvcr.io/nvidia-hpcvis/paraview-index:egl-17.11.13-beta sh -c pvserver

9.4.4.3. 连接到服务器的 GLX 客户端


在您的工作站上拉取启用 X 显示的容器

复制
已复制!
            

docker pull nvcr.io/nvidia-hpcvis/paraview-index:glx-17.11.13-beta


设置 X 访问权限并启动客户端应用程序容器(确保将 your_server_hostname 替换为您的 ParaView 服务器主机的地址)

复制
已复制!
            

XSOCK=/tmp/.X11-unix; XAUTH=/tmp/.docker.xauth touch /tmp/.docker.xauth xauth nlist :0 | sed -e 's/^..../ffff/' \ | xauth -f /tmp/.docker.xauth nmerge -

复制
已复制!
            

docker run --rm -it --runtime=nvidia \ -v /tmp/.X11-unix:/tmp/.X11-unix -v /tmp/.docker.xauth:/tmp/.docker.xauth \ -e XAUTHORITY=/tmp/.docker.xauth -e DISPLAY=:0 \ nvcr.io/nvidia-hpcvis/paraview-index:glx-17.11.13-beta \ sh -c paraview\ --server-url=cs://your_server_hostname:11111

9.4.5. 带有 NVIDIA OptiX 的 ParaView

带有 NVIDIA OptiX 容器的 ParaView 旨在让 ParaView 像用户通常在容器外部一样运行。以下部分介绍如何针对不同的用例启动 OptiX 容器。

有关 ParaView 的更多信息,请参阅 ParaView 用户指南NVIDIA OptiX SDK

9.4.5.1. 带有 GLX 的单机容器

在具有物理显示器的系统上,或者在运行 ParaView 客户端时,用户希望启动具有 GLX 支持的容器。这可以通过以下方式完成。

  1. 拉取 docker 镜像
    复制
    已复制!
                

    docker pull nvcr.io/nvidia-hpcvis/paraview-optix:glx-17.11.13-beta

  2. 设置 X11 转发变量
    复制
    已复制!
                

    XSOCK=/tmp/.X11-unix; XAUTH=/tmp/.docker.xauth; touch /tmp/.docker.xauth; xauth nlist :0 | sed -e 's/^..../ffff/' | xauth -f /tmp/.docker.xauth nmerge -

  3. 运行镜像。在此示例中,主机系统数据在当前目录 $(pwd) 中挂载到容器中的 /work。应根据需要修改此设置。
    复制
    已复制!
                

    docker run --rm -it --runtime=nvidia -v /tmp/.X11-unix:/tmp/.X11-unix -v /tmp/.docker.xauth:/tmp/.docker.xauth -e XAUTHORITY=/tmp/.docker.xauth -e DISPLAY=:0 -v $(pwd):/work:rw nvcr.io/nvidia-hpcvis/paraview-optix-glx-beta:17.11.10 sh -c paraview

9.4.5.2. 带有 EGL 的服务器容器

在 GPU HPC 资源上启动 ParaView 服务器通常需要 EGL 支持,这需要单独构建 ParaView,我们为此提供了单独的容器。

  1. 拉取容器
    复制
    已复制!
                

    docker pull nvcr.io/nvidia-hpcvis/paraview-optix:egl-17.11.13-beta

  2. 指定连接端口并按如下方式启动容器(在此示例中,我们在默认端口 11111 上监听)
    复制
    已复制!
                

    docker run --runtime=nvidia -p 11111:11111 --rm -it \ nvcr.io/nvidia-hpcvis/paraview-optix:egl-17.11.13-beta sh -c pvserver

  3. 对于希望在具有 GLX 功能的工作站上运行服务器的用户,同样可以使用带有 pvserver 参数的 GLX 镜像。

9.4.5.3. 运行 GLX 客户端并连接到服务器


启动服务器后,可以直接使用 GLX 镜像来运行客户端,并按如下方式连接到服务器。这里我们假设服务器正在端口 11111 上监听,可在 your.server.address 寻址。

复制
已复制!
            

docker pull nvcr.io/nvidia-hpcvis/paraview-optix:glx-17.11.13-beta XSOCK=/tmp/.X11-unix; XAUTH=/tmp/.docker.xauth touch /tmp/.docker.xauth xauth nlist :0 | sed -e 's/^..../ffff/' \ | xauth -f /tmp/.docker.xauth nmerge - docker run --rm -it --runtime=nvidia \ -v /tmp/.X11-unix:/tmp/.X11-unix -v /tmp/.docker.xauth:/tmp/.docker.xauth \ -e XAUTHORITY=/tmp/.docker.xauth -e DISPLAY=:0 \ nvcr.io/nvidia-hpcvis/paraview-optix:glx-17.11.13-beta \ sh -c paraview\ --server-url=cs://your.server.address:11111

9.4.5.4. 可选:使用 ParaView .config 文件

重用 ParaView 配置文件以在 ParaView 会话中保持设置非常有用。为此,首先为 ParaView 创建一个新目录以存储其设置。

复制
已复制!
            

mkdir pvsettings


在发出 docker run 命令时,添加以下命令作为参数

复制
已复制!
            

-v $(pwd)/pvsettings:/home/paraview/.config/ParaView


在镜像 URL 之前插入命令。例如,

复制
已复制!
            

docker run --rm -it --runtime=nvidia \ -v /tmp/.X11-unix:/tmp/.X11-unix -v /tmp/.docker.xauth:/tmp/.docker.xauth \ -e XAUTHORITY=/tmp/.docker.xauth -e DISPLAY=:0 \ nvcr.io/nvidia-hpcvis/paraview-optix:glx-17.11.13-beta \ -v $(pwd)/pvsettings:/home/paraview/.config/ParaView \ sh -c paraview\ --server-url=cs://your.server.address:11111


在使用 NGC 目录中的容器之前,请查看 先决条件 部分中描述的先决条件。

要成为注册的 NGC 用户,请按照 注册和激活新的 NGC 组织以获得身份验证访问权限 中说明的步骤进行操作。

10.1. 关键 NGC 容器注册表术语

为了发出拉取和运行命令,请确保您熟悉以下概念。拉取命令类似于

复制
已复制!
            

docker pull nvcr.io/nvidia/caffe2:17.10


运行命令类似于

复制
已复制!
            

docker run --gpus all -it --rm –v local_dir:container_dir nvcr.io/nvidia/caffe2:<xx.xx>


注意

基本命令 docker run --gpu all 假定您的系统已安装 Docker 19.03-CE。请参阅 为 NGC 容器启用 GPU 支持 部分,了解用于早期版本 Docker 的命令。


以下概念描述了构成这两个命令的单独属性。

nvcr.io
容器注册表的名称,对于 NGC 容器注册表,为 nvcr.io
nvidia
注册表中包含容器的空间的名称。对于 NVIDIA 提供的容器,注册表空间为 nvidia。有关更多信息,请参阅 NGC 容器镜像在 NGC 目录中
-it
您希望在交互模式下运行容器。
--rm
您希望在完成后删除容器。
–v
您希望挂载目录。
local_dir
您希望从容器内部访问的主机系统中的目录或文件(绝对路径)。例如,以下路径中的 local_dir/home/jsmith/data/mnist
复制
已复制!
            

-v /home/jsmith/data/mnist:/data/mnist

如果您在容器内部,例如,使用命令 ls /data/mnist,您将看到与从容器外部发出 ls /home/jsmith/data/mnist 命令时相同的文件。

container_dir
当您在容器内部时,目标目录。例如,/data/mnist 是示例中的目标目录
复制
已复制!
            

-v /home/jsmith/data/mnist:/data/mnist

<xx.xx>
标签。例如,17.10。

您可以通过在安装了 Docker 的任何可以访问互联网的 Linux 计算机上运行 Docker 命令来访问 NGC 容器注册表。您可以通过 Docker CLI 在 nvcr.io 访问 NGC 容器注册表。

在访问 NGC 容器注册表之前,请参阅 NGC 入门指南,以获取有关如何访问网站的说明,如果您打算访问锁定的 NGC 内容,请了解如何注册 NGC 帐户并获取 API 密钥。

10.2. 通过 Docker CLI 访问和拉取 NGC 容器镜像

10.2.1. 登录到 NGC 容器注册表

在访问锁定的 NGC 内容之前,您必须注册 NGC 帐户并获取 API 密钥,如 生成 NGC API 密钥 部分中所述。然后从命令行登录到 NGC 注册表,如下所示。

  1. 登录到 NGC 容器注册表。
    复制
    已复制!
                

    $ docker login nvcr.io

  2. 当提示您输入用户名时,输入以下文本
    复制
    已复制!
                

    $oauthtoken

    $oauthtoken 用户名是一个特殊用户名,指示您将使用 API 密钥而不是用户名和密码进行身份验证。
  3. 当提示您输入密码时,请输入您的 NGC API 密钥,如以下示例所示。
    复制
    已复制!
                

    Username: $oauthtoken Password: k7cqFTUvKKdiwGsPnWnyQFYGnlAlsCIRmlP67Qxa

    提示

    当您获得 API 密钥时,将其复制到剪贴板,以便在提示您输入密码时,可以将 API 密钥粘贴到命令 shell 中。

  4. 确认“登录成功”。

10.2.2. 使用 Docker CLI 从 NGC 容器注册表拉取容器

您可以通过使用 Web 浏览器打开 NGC 网站 来浏览 NGC 容器注册表中的可用容器

  1. 浏览 NGC 目录,选择要拉取的镜像,然后复制拉取命令。

    下图显示了 PyTorch 容器页面上的拉取命令。

    pytorch-page.png

  2. 单击下载图标将拉取命令复制到剪贴板。
  3. 登录到 nvcr.io,然后将命令粘贴到您的终端中。例如,要拉取 PyTorch 容器
    复制
    已复制!
                

    $ docker pull nvcr.io/nvidia/pytorch:20.03-py3

    有关使用 NGC 网站的详细信息,请参阅 NGC 入门指南
  4. 列出系统上的 Docker 镜像以确认已拉取容器。
    复制
    已复制!
                

    $ docker images

    有关特定容器的更多信息,请参阅容器内的 /workspace/README.md 文件。

拉取容器后,您可以在容器中运行作业,以运行科学工作负载、训练神经网络、部署深度学习模型或执行 AI 分析。

使用 NGC CLI 访问和拉取 NGC 目录容器

如果您要从注册表中拉取容器,则需要在本地计算机上安装 Docker。要在您的客户端计算机上安装 Docker,请按照以下说明之一操作:

本文档介绍了如何使用 NGC Catalog CLI。有关命令和选项的完整列表,请使用 -h 选项,如 index.html#getting-help 中所述。

10.3.1. 查看容器镜像信息

有几个命令可以查看有关可用容器镜像的信息。

列出容器镜像

复制
已复制!
            

C:\>ngc registry image list


示例输出

复制
已复制!
            

+-----------+----------------+------------+------------+--------------+------------+ | Name | Repository | Latest Tag | Image Size | Updated Date | Permission | +-----------+----------------+------------+------------+--------------+------------+ | BigDFTZ | hpv/bigdftfe | cuda10-ubun| 2.37 GB | Oct 18, 2019 | unlocked | | | | tu1804-ompi| | 2019 | | | CANDLE | hpc/candle | 201803263 | 1.52 GB | Oct 18, 2019 | unlocked | ...|

要查看有关特定镜像的详细信息,请指定镜像和标签。

示例:

复制
已复制!
            

C:\>ngc registry image info nvidia/caffe:19.02-py2 -------------------------------------------------- Image Information Name: nvidia/caffe:19.02-py2 Architecture: amd64 Schema Version: 1 --------------------------------------------------

拉取容器镜像

使用 NGC Registry CLI,您可以将镜像拉取(下载)到您的系统。

要将镜像拉取到您的注册表空间,请指定镜像,以及可选的标签。

复制
已复制!
            

C:\>ngc registry image pull <image-name>[:<tag>]


如果未指定标签,则将使用标签 'latest'。

注意

nvcr.io/nvidia、nvcr.io/partners 和 nvcr.io/hpc 是保留的命名空间,不授予用户推送或删除容器镜像、模型、helm 和所有工件的权限。


NGC 镜像的每个版本都由版本“标签”标识。对于较简单的镜像,此版本标签通常包含镜像中主要软件包的版本。包含多个软件包或版本的更复杂镜像可能会使用单独的版本,仅表示容器化软件配置。一种常见的方案是按镜像发布的年份和月份进行版本控制。例如,20.01 版本的镜像于 2020 年 1 月发布。

镜像名称由冒号分隔的两部分组成。第一部分是仓库中容器的名称,第二部分是与容器关联的“标签”。图 2 显示了这两部分信息,这是发出 docker images 命令的输出。

图 1. docker images 命令的输出

image_versions.png

图 2 显示了镜像名称的简单示例,例如:

  • nvidia-cuda:8.0-devel
  • ubuntu:latest
  • nvcr.io/nvidia/tensorflow:17.01

如果您选择不为镜像添加标签,默认情况下会添加单词“latest”作为标签,但是所有 NGC 容器都有显式的版本标签。

在接下来的章节中,您将使用这些镜像名称来运行容器。在文档的后面部分,还有一个关于创建您自己的容器或自定义和扩展现有容器的章节。


软件签名是分发软件、确定信任哪些软件以及允许执行的标准机制。

容器镜像签名向镜像添加数字签名。此签名允许用户验证镜像的来源并验证镜像是否未被篡改。

从 2023 年 7 月开始,NGC 目录上发布的所有 NVIDIA 容器镜像都将进行签名。

12.1. 检查签名容器镜像

有两种方法可以确定哪些容器已签名。

12.1.1. 使用 NGC 目录 UI

从左侧导航菜单中单击目录 > 容器。展开左侧的 签名镜像 过滤器,然后选择 。标有 签名镜像 标签的容器镜像将显示。

ngc-catalog-containers-signed-ann-1280x905.png

选择一个容器镜像以查看详细信息。在详细信息页面上,您将在左侧面板上看到 签名镜像 徽章,并在 标签 选项卡中的窗格中看到 已签名 徽章。

ngc-catalog-containers-signed-details-ann-1280x666.png

12.1.2. 使用 NGC CLI

要使用 CLI 查找签名容器镜像,请发出以下命令

复制
已复制!
            

$ ngc registry image list <image_name>


示例:列出所有名称包含“nginx”的镜像

复制
已复制!
            

$ ngc registry image list '*nginx*'

ngc-catalog-containers-signed-cli-980x396.png

如果镜像已签名,您可以在 最新标签 列中看到填充的值。

12.2. 查找 NVIDIA 的公钥

与签名镜像关联的公钥可用于验证其真实性。您可以通过以下方式找到容器的公钥。

12.2.1. 使用 NGC 目录 UI

在容器详细信息页面上,选择 标签 选项卡。单击横幅中的“查看所有公钥”。

ngc-catalog-containers-signed-details-view-public-ann-1280x666.png

公钥 URL 将显示在对话框中。

ngc-catalog-containers-view-all-public-rounded.png

12.2.2. 使用 NGC CLI

要使用 CLI 查找 NVIDIA 的公钥,请发出以下命令

ngc-public-key-643x174.png

12.3. 验证 NVIDIA 的签名

以下工具是您可以用来验证签名的示例。还有其他工具可用。

使用 Cosign

Cosign 是一个用于签名容器镜像的工具。首先,按照以下 URL 提供的安装说明设置 Cosign

https://docs.sigstore.dev/cosign/installation/

设置 Cosign 后,发出以下命令以验证容器镜像的签名

复制
已复制!
            

$ cosign verify [--key <key path>|<key url>|<kms uri>] <image uri>

确保将方括号内的占位符替换为适当的值

  • <key path>:密钥文件的路径(如果使用本地密钥)。

  • <key URL>:指向密钥文件的 URL(如果使用远程密钥)。

  • <KMS URI>:密钥管理服务 (KMS) 的 URI(如果使用 KMS 进行密钥管理)。

  • <image URI>:您要验证的容器镜像的 URI。

Cosign 2.x 版本为使用 cosign verify 命令进行基于密钥的签名引入了一个新的标志 --insecure-ignore-tlog=true。使用 Cosign 2.x 版本时,请包含此标志。在 2.x 版本之前,不需要此标志,因为它设置为默认行为。

复制
已复制!
            

cosign verify --insecure-ignore-tlog [--key <key path>|<key url>|<kms uri>] <image uri>

12.3.2. 在 Kubernetes 集群中使用准入控制器

一些开源软件 (OSS) 准入控制器提供基于 sigstore 的镜像验证功能。这些强大的工具允许您验证部署在 Kubernetes 环境中的容器的完整性和真实性。

例如,Connaisseur 是一个 Kubernetes 准入控制器,可用于将容器镜像签名验证和信任锚定集成到集群中。它确保只有签名镜像才允许在集群中运行。

要设置 Connaisseur,请按照以下文档中概述的步骤操作

配置 Connaisseur 验证器后,您可以通过在 Kubernetes (K8s) 集群中使用以下命令运行签名镜像的容器来对其进行测试

复制
已复制!
            

kubectl run test --image=${IMAGE}

当您使用该命令运行容器时,如果镜像已签名并通过验证,则请求将被允许进入集群。Kubernetes 将返回以下响应

复制
已复制!
            

pod/test created


在您可以运行 NGC 深度学习框架容器之前,您的 Docker 环境必须支持 NVIDIA GPU。要运行容器,请按照本章中的说明发出适当的命令,指定注册表、仓库和标签。

13.1. 为 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 的示例

      复制
      已复制!
                  

      $ sudo docker run --gpus all ...

    • 使用两个 GPU 的示例

      复制
      已复制!
                  

      $ sudo docker run --gpus 2 ...

    • 使用特定 GPU 的示例

      复制
      已复制!
                  

      $ sudo docker run --gpus "device=1,2" ...

      复制
      已复制!
                  

      $ sudo docker run --gpus "device=UUID-ABCDEF,1" ...

使用 Docker 的 NVIDIA 容器运行时

在安装了 Docker 的 NVIDIA 容器运行时 (nvidia-docker2) 的情况下,您可以通过以下方式之一运行 GPU 加速容器。

  • 使用 docker run 并指定 runtime=nvidia。

    复制
    已复制!
                

    $ sudo docker run --runtime=nvidia ...

  • 使用 nvidia-docker run。

    复制
    已复制!
                

    $ sudo 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 加速容器。

复制
已复制!
            

$ sudo docker run ...


注意

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

使用 NVIDIA GPU 的 Docker Engine 实用程序

在安装了 NVIDIA GPU 的 Docker Engine 实用程序 (nvidia-docker) 的情况下,按如下所示运行启用 GPU 的容器。

复制
已复制!
            

$ sudo nvidia-docker run ...

13.2. 使用运行时资源运行 NGC 容器

在具有 NGC 容器 GPU 支持的系统上,运行容器时会发生以下情况。

  • Docker Engine 将镜像加载到运行软件的容器中。
  • 您可以通过包含与命令一起使用的其他标志和设置来定义容器的运行时资源。以下各节将介绍这些标志和设置。
  • GPU 显式定义用于 Docker 容器(默认为所有 GPU,可以使用 NV_GPU 环境变量指定)。
注意

基本命令 docker run --gpu all 假定您的系统已安装 Docker 19.03-CE。请参阅 为 NGC 容器启用 GPU 支持 部分,了解用于早期版本 Docker 的命令。


  1. 作为用户,以交互方式运行容器。
    复制
    已复制!
                

    $ docker run --gpus all -it --rm –v local_dir:container_dir nvcr.io/nvidia/<repository>:<xx.xx>

    以下示例以交互模式运行 2016 年 12 月发布的 (16.12) NVCaffe 容器。当用户退出容器时,容器将自动删除。

    复制
    已复制!
                

    $ docker run --gpus all --rm -ti nvcr.io/nvidia/caffe:16.12 =========== == Caffe == =========== NVIDIA Release 16.12 (build 6217) Container image Copyright (c) 2016, NVIDIA CORPORATION. All rights reserved. Copyright (c) 2014, 2015, The Regents of the University of California (Regents) All rights reserved. Various files include modifications (c) NVIDIA CORPORATION. All rights reserved. NVIDIA modifications are covered by the license terms that apply to the underlying project or file. root@df57eb8e0100:/workspace#

  2. 在容器内,启动您要运行的作业。要运行的精确命令取决于您正在运行的容器中的深度学习框架以及您要运行的作业。有关详细信息,请参阅容器的 /workspace/README.md 文件。

    以下示例在一个 GPU 上运行 caffe time 命令,以测量 deploy.prototxt 模型的执行时间。

    复制
    已复制!
                

    # caffe time -model models/bvlc_alexnet/ -solver deploy.prototxt -gpu=0

  3. 可选:以非交互模式运行相同 NVCaffe 容器的 2016 年 12 月版本 (16.12)。
    复制
    已复制!
                

    % docker run --gpus all --rm nvcr.io/nvidia/caffe:16.12 caffe time -model /workspace/models/bvlc_alexnet -solver /workspace/deploy.prototxt -gpu=0

13.2.1. 指定用户

除非另有说明,否则容器内部的用户是 root 用户。在容器内运行时,root 用户可以访问在主机操作系统或网络卷上创建的文件。这对某些用户来说是不可接受的,他们希望设置容器中用户的 ID。例如,要将容器中的用户设置为当前正在运行的用户,请发出以下命令

复制
已复制!
            

% docker run --gpus all -ti --rm -u $(id -u):$(id -g) nvcr.io/nvidia/<repository>:<tag>


通常,这会导致警告,因为指定的用户名和组在容器中不存在。您可能会看到类似于以下消息的消息

复制
已复制!
            

groups: cannot find name for group ID 1000I have no name! @c177b61e5a93:/workspace$

通常可以忽略该警告。

13.2.2. 设置删除标志


默认情况下,Docker 容器在运行后仍保留在系统上。重复的拉取或运行操作会占用本地磁盘上越来越多的空间,即使在退出容器后也是如此。因此,在退出后清理 nvidia-docker 容器非常重要。

注意

如果您对容器进行了要保存的更改,或者如果您想在运行完成后访问作业日志,请勿使用 --rm 标志。


要退出时自动删除容器,请将 --rm 标志添加到运行命令。

复制
已复制!
            

% docker run --gpus all --rm nvcr.io/nvidia/<repository>:<tag>

13.2.3. 设置交互标志

默认情况下,容器以批处理模式运行;也就是说,容器运行一次,然后在没有任何用户交互的情况下退出。容器也可以作为服务以交互模式运行。要以交互模式运行,请将 -ti 标志添加到运行命令。

复制
已复制!
            

% docker run --gpus all -ti --rm nvcr.io/nvidia/<repository>:<tag>

13.2.4. 设置卷标志

容器中不包含数据集,因此,如果您想使用数据集,则需要从主机操作系统将卷挂载到容器中。有关更多信息,请参阅 管理容器中的数据

通常,您将使用 Docker 卷或主机数据卷。主机数据卷和 Docker 卷之间的主要区别在于 Docker 卷是 Docker 私有的,只能在 Docker 容器之间共享。Docker 卷在主机操作系统中不可见,Docker 管理数据存储。主机数据卷是主机操作系统中可用的任何目录。这可以是您的本地磁盘或网络卷。

示例 1
将主机操作系统上的目录 /raid/imagedata 挂载为容器中的 /images
复制
已复制!
            

% docker run --gpus all -ti --rm -v /raid/imagedata:/images nvcr.io/nvidia/<repository>:<tag>

示例 2
将名为 data 的本地 docker 卷(如果尚不存在,则必须创建)挂载到容器中,作为 /imagedata
复制
已复制!
            

% docker run --gpus all -ti --rm -v data:/imagedata nvcr.io/nvidia/<repository>:<tag>

13.2.5. 设置端口映射标志

深度学习 GPU 训练系统™ (DIGITS) 等应用程序会打开一个端口进行通信。您可以控制该端口是仅在本地系统上打开,还是可供本地系统外部网络上的其他计算机使用。以 DIGITS 为例,在 DIGITS 5.0 中,从容器镜像 16.12 开始,默认情况下 DIGITS 服务器在端口 5000 上打开。但是,在容器启动后,您可能不容易知道该容器的 IP 地址。要了解容器的 IP 地址,您可以选择以下方法之一:

  • 使用本地系统网络堆栈 (--net=host) 公开端口,其中容器的端口 5000 可用作本地系统的端口 5000。

  • 映射端口 (-p 8080:5000),其中容器的端口 5000 可用作本地系统的端口 8080。

在任何一种情况下,本地系统外部的用户都看不到 DIGITS 正在容器中运行。如果不发布端口,该端口仍然可以从主机访问,但不能从外部访问。

13.2.6. 设置共享内存标志

某些应用程序(例如 PyTorch™ 和 Microsoft® Cognitive Toolkit™)使用共享内存缓冲区在进程之间进行通信。单进程应用程序(例如 MXNet™ 和 TensorFlow™)也可能需要共享内存,它们使用 NVIDIA® 集体通信库™ (NCCL) (NCCL)。

默认情况下,Docker 容器分配 64MB 的共享内存。这可能不足,尤其是在使用所有 8 个 GPU 时。要将共享内存限制增加到指定大小(例如 1GB),请在 docker run 命令中包含 --shm-size=1g 标志。

或者,您可以指定 --ipc=host 标志以在容器内重用主机的共享内存空间。尽管后一种方法具有安全隐患,因为共享内存缓冲区中的任何数据都可能对其他容器可见。

13.2.7. 设置限制 GPU 公开的标志

从容器内部,脚本和软件被编写为利用所有可用的 GPU。要在更高级别协调 GPU 的使用,您可以使用此标志来限制从主机到容器的 GPU 公开。例如,如果您只想在容器中看到 GPU 0 和 GPU 1,则可以发出以下命令

使用原生 GPU 支持

复制
已复制!
            

$ docker run --gpus "device=0,1" ...


使用 nvidia-docker2

复制
已复制!
            

$ NV_GPU=0,1 docker run --runtime=nvidia ...


使用 nvidia-docker

复制
已复制!
            

$ NV_GPU=0,1 nvidia-docker run ...


此标志创建一个临时环境变量,用于限制使用哪些 GPU。

指定的 GPU 是使用 Docker 设备映射功能为每个容器定义的,该功能当前基于 Linux cgroups

13.2.8. 容器生命周期

如果您不将 --rm 标志传递给 docker run 命令,则退出容器的状态将无限期地保留。您可以使用以下命令列出所有已保存的退出容器及其在磁盘上的大小

复制
已复制!
            

$ docker ps --all --size --filter Status=exited


容器在磁盘上的大小取决于容器执行期间创建的文件,因此退出容器仅占用少量磁盘空间。您可以通过发出以下命令永久删除退出的容器

复制
已复制!
            

docker rm [CONTAINER ID]


通过保存容器退出后的状态,您仍然可以使用标准 Docker 命令与它们交互。例如:

  • 您可以使用 docker logs 命令检查过去执行的日志。
    复制
    已复制!
                

    $ docker logs 9489d47a054e

  • 您可以使用 docker cp 命令提取文件。
    复制
    已复制!
                

    $ docker cp 9489d47a054e:/log.txt .

  • 您可以使用 docker restart 命令重新启动停止的容器。
    复制
    已复制!
                

    $ docker restart <container name>

    对于 NVCaffe™ 容器,发出此命令
    复制
    已复制!
                

    $ docker restart caffe

  • 您可以通过使用 docker commit 命令创建新镜像来保存您的更改。有关更多信息,请参阅 示例 3:使用 docker commit 自定义容器。
    注意

    在提交 Docker 容器更改时请小心,因为在使用容器期间创建的数据文件将添加到生成的镜像中。特别是,核心转储文件和日志会显着增加生成的镜像的大小。


NGC 容器注册表允许用户利用 docker 多架构。它可以支持多种架构,这意味着单个镜像可能包含用于不同 CPU 架构(如 ARM、x86、IBM POWER 等)的变体;有时也包含用于不同操作系统(如 Windows)的变体。运行镜像时,docker 将自动选择与目标部署操作系统和架构匹配的镜像变体。

清单列表和标签

NGC 容器注册表支持清单列表架构 application/vnd.docker.distribution.manifest.list.v2+json,从而能够为每个镜像分配多个标签。要检查清单列表,请按照 此处的说明进行操作。

NGC UI 允许用户轻松识别多架构容器并查看支持的 CPU 架构。

ngc-supported-architectures.png

多架构镜像的基本 Docker 命令

检查清单:显示镜像清单或清单列表

$ docker manifest inspect <container_name>:<tag>

有关清单的更多帮助:链接

拉取特定架构的镜像

为了拉取具有特定架构的镜像,首先执行 docker manifest,它列出了多个平台,然后使用与清单摘要匹配的特定平台名称进行拉取。

$ docker pull --platform=<arch>

有关上述 docker 命令的更多帮助:链接


NGC 镜像已预先打包、调整和准备好运行;但是,您可能希望从头开始构建新镜像或使用自定义代码、库、数据或公司基础设施的设置来扩充现有镜像。本节将指导您完成一些练习,这些练习将重点介绍如何从头开始创建容器、自定义容器、扩展深度学习框架以添加功能、从开发人员环境中使用该扩展框架开发一些代码,然后将该代码打包为版本化发布。

默认情况下,您不需要构建容器。NGC 容器注册表 nvcr.io 具有许多可以立即使用的容器。这些容器包括用于深度学习、科学计算和可视化的容器,以及仅包含 CUDA 工具包的容器。

容器的优点之一是它们可以用作创建新容器的起点。这可以称为“自定义”或“扩展”容器。您可以完全从头开始创建一个容器,但是,由于这些容器很可能在 GPU 系统上运行,因此建议您至少从包含操作系统和 CUDA 的 nvcr.io 容器开始。但是,您并不局限于此,并且可以创建一个在系统中的 CPU 上运行而不使用 GPU 的容器。在这种情况下,您可以从 Docker 的裸操作系统容器开始。但是,为了使开发更容易,您仍然可以从带有 CUDA 的容器开始 - 它只是在容器使用时未使用。

对于 DGX-1 和 DGX Station,您可以将修改/扩展的容器推送到或保存到 NVIDIA DGX 容器注册表 nvcr.io。它们也可以与 DGX 系统的其他用户共享,但这需要一些管理员帮助。

目前,您无法将 NGC 容器注册表(基于云)解决方案中的自定义容器保存到 nvcr.io。自定义或扩展的容器可以保存到用户的私有容器仓库。重要的是要注意,所有 NGC 深度学习框架镜像都包含构建框架本身以及所有先决条件的源代码。

注意

请勿在 Docker® 构建时将 NVIDIA 驱动程序安装到 Docker 镜像中。nvidia-docker 本质上是 Docker 的包装器,它以透明方式为容器提供必要的组件,以在 GPU 上执行代码。


NVIDIA 在 NGC 容器注册表中提供了大量已经过测试、调整并准备好运行的镜像。您可以拉取这些镜像中的任何一个来创建容器并添加您选择的软件或数据。

最佳实践是避免使用 docker commit 来开发新的 docker 镜像,而是使用 Dockerfile。Dockerfile 方法提供了可见性,并能够有效地对 docker 镜像开发期间所做的更改进行版本控制。docker commit 方法仅适用于短期的、一次性使用的镜像(有关示例,请参阅 示例 3:使用 docker commit 自定义容器)。

有关编写 Docker 文件的更多信息,请参阅 最佳实践文档

15.1. 自定义容器的优点和局限性

您可以出于多种原因自定义容器以满足您的特定需求;例如,您依赖于 NVIDIA 提供的容器中未包含的特定软件。无论您的原因是什么,您都可以自定义容器。

容器镜像不包含示例数据集或示例模型定义,除非它们包含在框架源代码中。请务必检查容器中是否有示例数据集或模型。

15.2. 示例 1:从头开始构建容器

Docker 使用 Dockerfile 来创建或构建 Docker 镜像。Dockerfile 是包含 Docker 连续使用以创建新 Docker 镜像的命令的脚本。简而言之,Dockerfile 是容器镜像的源代码。Dockerfile 始终以要继承的基础镜像开头。

有关更多信息,请参阅 编写 Dockerfile 的最佳实践

  1. 在本地硬盘驱动器上创建一个工作目录。
  2. 在该目录中,打开一个文本编辑器并创建一个名为 Dockerfile 的文件。将文件保存到您的工作目录。
  3. 打开您的 Dockerfile 并包含以下内容
    复制
    已复制!
                

    FROM ubuntu:14.04 RUN apt-get update && apt-get install -y curl CMD echo "hello from inside a container"

    其中最后一行 CMD 在创建容器时执行指示的命令。这是一种检查容器是否正确构建的方法。

    在本示例中,我们还从 Docker 仓库而不是 DGX™ 系统仓库拉取容器。后续示例将使用 NVIDIA® 仓库。

  4. 保存并关闭您的 Dockerfile
  5. 构建镜像。发出以下命令以构建镜像并创建标签。
    复制
    已复制!
                

    $ docker build -t <new_image_name>:<new_tag> .

    注意

    此命令在 Dockerfile 所在的同一目录中发出。

    docker build 过程的输出列出了“步骤”;Dockerfile 中的每一行对应一个步骤。

    例如,让我们将容器命名为 test1 并用 latest 标记它。此外,为了说明目的,让我们假设我们的私有 DGX 系统仓库名为 nvidian_sas。以下命令构建容器。下面显示了一些输出,以便您知道会发生什么。

    复制
    已复制!
                

    $ docker build -t test1:latest . Sending build context to Docker daemon 3.072 kB Step 1/3 : FROM ubuntu:14.04 14.04: Pulling from library/ubuntu ... Step 2/3 : RUN apt-get update &amp;&amp; apt-get install -y curl ... Step 3/3 : CMD echo "hello from inside a container" ---> Running in 1f491b9235d8 ---> 934785072daf Removing intermediate container 1f491b9235d8 Successfully built 934785072daf

    有关构建镜像的信息,请参阅 docker build。有关标记镜像的信息,请参阅 docker tag

  6. 验证构建是否成功。您应该看到类似于以下消息的消息
    复制
    已复制!
                

    Successfully built 934785072daf

    此消息表明构建成功。任何其他消息都表明构建不成功。
    注意

    数字 934785072daf 是在构建镜像时分配的,是随机的。

  7. 通过发出以下命令并查看您的容器,确认您可以查看您的镜像。
    复制
    已复制!
                

    $ docker images REPOSITORY TAG IMAGE ID CREATED SIZE test1 latest 934785072daf 19 minutes ago 222 MB

    现在可以使用新的容器了。
    注意

    容器是此 DGX 系统的本地容器。如果您想将容器存储在您的私有仓库中,请执行下一步。

  8. 通过推送将容器存储在您的私有 Docker 仓库中。
    注意

    如果您有与您的组织购买的 DGX 系统关联的私有注册表帐户,则适用此项。

    1. 推送它的第一步是标记它。
      复制
      已复制!
                  

      $ docker tag test1 nvcr.io/nvidian_sas/test1:latest

    2. 现在镜像已被标记,您可以将其推送到例如 nvcr.io 上名为 nvidian_sas 的私有项目。
      复制
      已复制!
                  

      $ docker push nvcr.io/nvidian_sas/test1:latest The push refers to a repository [nvcr.io/nvidian_sas/test1] …

    3. 验证容器是否出现在 nvidian_sas 仓库中。

15.3. 示例 2:使用 Dockerfile 自定义容器

本示例使用 Dockerfile 来自定义 nvcr.io 中的 NVCaffe 容器。在自定义容器之前,您应确保已使用 docker pull 命令将 NVCaffe 17.03 容器加载到注册表中,然后再继续。

复制
已复制!
            

$ docker pull nvcr.io/nvidia/caffe:17.03


如本文档前面所述,nvcr.io 上的 Docker 容器还提供了一个示例 Dockerfile,其中说明了如何修补框架并重建 Docker 镜像。在目录 /workspace/docker-examples 中,有两个示例 Dockerfile。在本示例中,我们将使用 Dockerfile.customcaffe 文件作为自定义容器的模板。

  1. 在本地硬盘驱动器上创建一个名为 my_docker_images 的工作目录。
  2. 打开一个文本编辑器并创建一个名为 Dockerfile 的文件。将文件保存到您的工作目录。
  3. 再次打开您的 Dockerfile 并在文件中包含以下行
    复制
    已复制!
                

    FROM nvcr.io/nvidia/caffe:17.03 # APPLY CUSTOMER PATCHES TO CAFFE # Bring in changes from outside container to /tmp # (assumes my-caffe-modifications.patch is in same directory as Dockerfile) #COPY my-caffe-modifications.patch /tmp # Change working directory to NVCaffe source path WORKDIR /opt/caffe # Apply modifications #RUN patch -p1 < /tmp/my-caffe-modifications.patch # Note that the default workspace for caffe is /workspace RUN mkdir build && cd build && \ cmake -DCMAKE_INSTALL_PREFIX:PATH=/usr/local -DUSE_NCCL=ON -DUSE_CUDNN=ON -DCUDA_ARCH_NAME=Manual -DCUDA_ARCH_BIN="35 52 60 61" -DCUDA_ARCH_PTX="61" .. && \ make -j"$(nproc)" install && \ make clean && \ cd .. && rm -rf build # Reset default working directory WORKDIR /workspace

    保存文件。
  4. 使用 docker build 命令构建镜像,并指定仓库名称和标签。在以下示例中,仓库名称为 corp/caffe,标签为 17.03.1PlusChanges。对于这种情况,命令将是以下命令
    复制
    已复制!
                

    $ docker build -t corp/caffe:17.03.1PlusChanges .

  5. 使用适合已安装的 GPU 支持方法的命令运行 Docker 镜像。
    复制
    已复制!
                

    $ docker run --gpus all -ti --rm corp/caffe:17.03.1PlusChanges .

    注意

    基本命令 docker run --gpu all 假定您的系统已安装 Docker 19.03-CE。请参阅 为 NGC 容器启用 GPU 支持 部分,了解用于早期版本 Docker 的命令。

15.4. 示例 3:使用 docker commit 自定义容器


本示例使用 docker commit 命令将容器的当前状态刷新到 Docker 镜像。这不是推荐的最佳实践,但是,当您有一个正在运行的容器并且您已对其进行更改并想要保存它们时,此方法很有用。在本示例中,我们使用 apt-get 标签来安装需要用户以 root 身份运行的软件包。

注意

  • NVCaffe 镜像版本 17.04 在示例说明中用于说明目的。
  • 运行容器时,请勿使用 --rm 标志。如果在运行容器时使用 --rm 标志,则退出容器时,您的更改将丢失。

  1. nvcr.io 仓库将 Docker 容器拉取到 DGX 系统。例如,以下命令将拉取 NVCaffe 容器
    复制
    已复制!
                

    $ docker pull nvcr.io/nvidia/caffe:17.04

  2. 在 DGX 系统上运行容器。
    复制
    已复制!
                

    $ docker run --gpus all -ti nvcr.io/nvidia/caffe:17.04

    复制
    已复制!
                

    ================== == NVIDIA Caffe == ================== NVIDIA Release 17.04 (build 26740) Container image Copyright (c) 2017, NVIDIA CORPORATION. All rights reserved. Copyright (c) 2014, 2015, The Regents of the University of California (Regents) All rights reserved. Various files include modifications (c) NVIDIA CORPORATION. All rights reserved. NVIDIA modifications are covered by the license terms that apply to the underlying project or file. NOTE: The SHMEM allocation limit is set to the default of 64MB. This may be insufficient for NVIDIA Caffe. NVIDIA recommends the use of the following flags: nvidia-docker run --shm-size=1g --ulimit memlock=-1 --ulimit stack=67108864 ... root@1fe228556a97:/workspace#

    注意

    基本命令 docker run --gpu all 假定您的系统已安装 Docker 19.03-CE。请参阅 为 NGC 容器启用 GPU 支持 部分,了解用于早期版本 Docker 的命令。

  3. 您现在应该是容器中的 root 用户(注意提示符)。您可以使用命令 apt 拉取软件包并将其放入容器中。
    注意

    NVIDIA 容器是使用 Ubuntu 构建的,Ubuntu 使用 apt-get 软件包管理器。查看容器发行说明 深度学习文档,了解有关您正在使用的特定容器的详细信息。

    在本示例中,我们将 Octave(MATLAB 的 GNU 克隆)安装到容器中。
    复制
    已复制!
                

    # apt-get update # apt install octave

    注意

    您必须先执行 apt-get update,然后再使用 apt 安装 Octave。

  4. 退出工作区。
    复制
    已复制!
                

    # exit

  5. 使用 docker ps -a 显示容器列表。例如,以下是 docker ps -a 命令的部分输出
    复制
    已复制!
                

    $ docker ps -a CONTAINER ID IMAGE CREATED ... 1fe228556a97 nvcr.io/nvidia/caffe:17.04 3 minutes ago ...

  6. 现在,您可以从正在运行的容器创建一个新镜像,在该容器中您已安装了 Octave。您可以使用以下命令提交容器。
    复制
    已复制!
                

    $ docker commit 1fe228556a97 nvcr.io/nvidian_sas/caffe_octave:17.04 sha256:0248470f46e22af7e6cd90b65fdee6b4c6362d08779a0bc84f45de53a6ce9294

  7. 显示镜像列表。
    复制
    已复制!
                

    $ docker images REPOSITORY TAG IMAGE ID ... nvidian_sas/caffe_octave 17.04 75211f8ec225 ...

  8. 为了验证,让我们再次运行容器,看看 Octave 是否真的在那里。
    注意

    这仅适用于 DGX-1 和 DGX Station。

    复制
    已复制!
                

    $ docker run --gpus all -ti nvidian_sas/caffe_octave:17.04

    复制
    已复制!
                

    ================== == NVIDIA Caffe == ================== NVIDIA Release 17.04 (build 26740) Container image Copyright (c) 2017, NVIDIA CORPORATION. All rights reserved. Copyright (c) 2014, 2015, The Regents of the University of California (Regents) All rights reserved. Various files include modifications (c) NVIDIA CORPORATION. All rights reserved. NVIDIA modifications are covered by the license terms that apply to the underlying project or file. NOTE: The SHMEM allocation limit is set to the default of 64MB. This may be insufficient for NVIDIA Caffe. NVIDIA recommends the use of the following flags: nvidia-docker run --shm-size=1g --ulimit memlock=-1 --ulimit stack=67108864 ... root@2fc3608ad9d8:/workspace# octave octave: X11 DISPLAY environment variable not set octave: disabling GUI features GNU Octave, version 4.0.0 Copyright (C) 2015 John W. Eaton and others. This is free software; see the source code for copying conditions. There is ABSOLUTELY NO WARRANTY; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For details, type 'warranty'. Octave was configured for "x86_64-pc-linux-gnu". Additional information about Octave is available at http://www.octave.org. Please contribute if you find this software useful. For more information, visit http://www.octave.org/get-involved.html Read http://www.octave.org/bugs.html to learn how to submit bug reports. For information about changes from previous versions, type 'news'. octave:1>

    由于显示了 Octave 提示符,因此 Octave 已安装。

  9. 如果您想将容器保存到您的私有仓库(Docker 使用术语“推送”),则可以使用命令 docker push ...
    复制
    已复制!
                

    $ docker push nvcr.io/nvidian_sas/caffe_octave:17.04

新的 Docker 镜像现在可以使用了。您可以检查本地 Docker 仓库以找到它。

15.5. 示例 4:使用 Docker 开发容器

开发人员扩展容器主要有两种用例:

  1. 创建一个开发镜像,其中包含项目的所有不可变依赖项,但不包含源代码本身。
  2. 创建一个生产或测试镜像,其中包含源代码的固定版本和所有软件依赖项。

数据集未打包在容器镜像中。理想情况下,容器镜像被设计为期望数据集和结果的卷挂载。

在这些示例中,我们将本地数据集从主机上的 /raid/datasets 挂载到容器内的 /dataset 作为只读卷。我们还挂载一个特定于作业的目录来捕获当前运行的输出。

在这些示例中,我们将在每次容器启动时创建一个带时间戳的输出目录,并将其映射到容器中的 /output。使用此方法,将捕获并隔离每次连续容器启动的输出。

将源代码包含到容器中以开发和迭代模型会带来许多尴尬的挑战,这些挑战可能会使整个工作流程过于复杂。例如,如果您的源代码在容器中,那么您的编辑器、版本控制软件、点文件等也需要位于容器中。

但是,如果您创建一个开发镜像,其中包含运行源代码所需的一切,您可以将源代码映射到容器中,以利用主机工作站的开发环境。为了共享模型的固定版本,最好将源代码和训练权重的版本化副本与开发环境一起打包。

例如,我们将完成 Isola 等人在 Image-to-Image Translation with Conditional Adversarial Networks 中发现的工作的开源实现的开发和交付示例,该实现可在 pix2pix 上找到。Pix2Pix 是一个 Torch 实现,用于学习从输入图像到输出图像的映射,使用条件对抗网络。由于在线项目可能会随时间变化,我们将重点关注快照版本 d7e7b8b557229e75140cbe42b7f5dbf85a67d097 变更集。在本节中,我们将容器用作虚拟环境,因为容器具有项目所需的所有程序和库。

注意

我们将网络定义和训练脚本与容器镜像分开保存。对于迭代开发来说,这是一个有用的模型,因为正在积极处理的文件在主机上是持久存在的,并且仅在运行时映射到容器中。


与原始项目的差异可以在此处找到 比较更改

如果您的开发机器与您将运行长时间训练会话的机器不是同一台机器,那么您可能希望将当前的开发状态打包在容器中。

  1. 在本地硬盘驱动器上创建一个工作目录。
    复制
    已复制!
                

    mkdir Projects $ cd ~/Projects

  2. Git 克隆 Pix2Pix git 仓库。
    复制
    已复制!
                

    $ git clone https://github.com/phillipi/pix2pix.git $ cd pix2pix

  3. 运行 git checkout 命令。
    复制
    已复制!
                

    $ git checkout -b devel d7e7b8b557229e75140cbe42b7f5dbf85a67d097

  4. 下载数据集
    复制
    已复制!
                

    bash ./datasets/download_dataset.sh facades I want to put the dataset on my fast /raid storage. $ mkdir -p /raid/datasets $ mv ./datasets/facades /raid/datasets

  5. 创建一个名为 Dockerfile 的文件,并添加以下行
    复制
    已复制!
                

    FROM nvcr.io/nvidia/torch:17.03 RUN luarocks install nngraph RUN luarocks install https://raw.githubusercontent.com/szym/display/master/display-scm-0.rockspec WORKDIR /source

  6. 构建开发 Docker 容器镜像 (build-devel.sh)。
    复制
    已复制!
                

    docker build -t nv/pix2pix-torch:devel .

  7. 创建以下 train.sh 脚本
    复制
    已复制!
                

    #!/bin/bash -x ROOT="${ROOT:-/source}" DATASET="${DATASET:-facades}" DATA_ROOT="${DATA_ROOT:-/datasets/$DATASET}" DATA_ROOT=$DATA_ROOT name="${DATASET}_generation" which_direction=BtoA th train.lua

    如果您实际上正在开发此模型,您将通过更改主机上的文件并运行在容器内执行的训练脚本来进行迭代。

  8. 可选:编辑文件并在每次更改后执行下一步。
  9. 运行训练脚本 (run-devel.sh)。
    复制
    已复制!
                

    docker run --gpus all --rm -ti -v $PWD:/source -v /raid/datasets:/datasets nv/pix2pix-torch:devel ./train.sh

    注意

    基本命令 docker run --gpu all 假定您的系统已安装 Docker 19.03-CE。请参阅 为 NGC 容器启用 GPU 支持 部分,了解用于早期版本 Docker 的命令。

示例 4.1:将源代码打包到容器中

将模型定义和脚本打包到容器中非常简单。我们只需在 Dockerfile 中添加一个 COPY 步骤即可。

我们更新了运行脚本,只需删除卷挂载并使用容器中打包的源代码。打包后的容器现在比我们的 devel 容器镜像更便携,因为内部代码是固定的。良好的实践是用特定的标签对这个容器镜像进行版本控制,并将其存储在容器注册表中。

更新以运行容器同样微妙。我们只需删除将本地源代码卷挂载到容器中的操作。

关于 NGC 模型以及如何从 NGC Catalog 下载它们的讨论。

16.1. 什么是模型

许多 AI 应用程序都有共同的需求:分类、对象检测、语言翻译、文本到语音、推荐引擎、情感分析等等。当开发具有这些功能的应用程序时,从预训练模型开始,然后针对特定用例进行调整会更快。

NGC 为大量 AI 任务提供预训练模型,这些模型针对 NVIDIA Tensor Core GPU 进行了优化,并且可以通过仅更新几个层来轻松地重新训练,从而节省宝贵的时间。

因此,无论您是在寻找可以简单地重新训练以用于您的特定用例的内容,还是可以立即获取和部署的完整模型,NGC 都能满足您的需求。

16.2. 搜索和筛选模型

要查看 NGC 模型,请导航到左侧菜单中的 Catalog > 模型。使用页面顶部的搜索栏过滤模型类型,或使用下拉菜单中的条件对列表进行排序。您可以使用“用例”、“NVIDIA 平台”、“NVIDIA AI Enterprise”和许多其他过滤器来优化搜索。过滤选项的描述如下

  • 用例:从可用的常见用例中选择。
  • NVIDIA AI Enterprise 支持:选择此选项以查找 NVAIE 支持的公开可用模型。

  • NVIDIA 平台:从 Clara、DeepStream、TensorFlow 和许多其他平台中选择。

  • NVIDIA AI Enterprise 独有:在此项下选择产品以查看有权实体。

  • 框架:按框架筛选,例如 TAO Toolkit、PyTorch 和 Riva。

  • 行业:按可用行业选择。

  • 解决方案:选择与您的用例最匹配的解决方案。

  • 发布者:按发布者筛选。

  • 语言:按语言选择。

  • 其他:其他选项。

以下示例页面显示了搜索“深度学习”时可用的模型

ngc-catalog-containers-models-dl-guest-ann.png

过滤器将包含与搜索条件匹配的结果,如果没有匹配项,则显示“未找到结果”。

16.3. 通过 NGC CLI 下载模型

关于 NGC 模型以及如何从 NGC Catalog 下载它们的讨论。

要将模型从注册表下载到本地磁盘,请指定模型名称和版本。

复制
已复制!
            

$ ngc registry model download-version <org-name>/<model-name:version>


示例

复制
已复制!
            

$ ngc registry model download-version nvidia/ngcdocsmodel:1


以下示例显示了确认下载完成的输出

复制
已复制!
            

Downloaded 230.92 MB in 38s, Download speed: 6.07 MB/s ---------------------------------------------------- Transfer id: trt_onnx_vgg16_v100_16g_int8_v1 Download status: Completed. Downloaded local path: C:\ngcdocsmodel Total files downloaded: 3 Total downloaded size: 230.92 MB Started at: 2019-03-18 14:09:31.664000 Completed at: 2019-03-18 14:10:09.712000 Duration taken: 38s seconds ----------------------------------------------------

模型将下载到当前目录中与模型名称对应的文件夹中。您可以使用 -d . 选项指定另一个路径。

示例:将模型下载到特定目录 (/models)。

复制
已复制!
            

$ ngc registry model download-version nvidia/ngcdocsmodel:1 -d ./models


复制
已复制!
            

Downloaded 230.92 MB in 38s, Download speed: 6.07 MB/s ---------------------------------------------------- Transfer id: trt_onnx_vgg16_v100_16g_int8_v1 Download status: Completed. Downloaded local path: C:\ngcdocsmodel Total files downloaded: 3 Total downloaded size: 230.92 MB Started at: 2019-03-18 14:09:31.664000 Completed at: 2019-03-18 14:10:09.712000 Duration taken: 38s seconds ----------------------------------------------------

16.4. 通过 WGET/cURL 下载模型

16.4.1. 通过 WGET/cURL 下载访客访问模型

如何通过 WGET/cURL 下载访客访问模型。

要通过 wget/curl 从 NGC 模型获取单个文件的副本,您可以使用 NGC UI 中提供的 URL。

  1. 打开 NGC UI,从左侧导航菜单中单击模型,然后找到并单击要下载的模型。

    ngc-wget-models.png

  2. 单击右上角的下载按钮或导航到文件浏览器选项卡。

    ngc-wget-download.png

  3. 选择复制 curl cmd复制 wget cmd 以将相关代码复制到剪贴板。

    ngc-wget-copy-curl-cmd.png

然后,以下内容将被添加到您的剪贴板: $ wget https://api.ngc.nvidia.com/v2/models/nvidia/<model-name>/versions/<version>/files/<filename>

16.4.2. 通过 WGET/cURL 下载已验证访问模型

如何通过 WGET/cURL 下载已验证访问模型。

  1. 获取 NGC API 密钥。请参阅 生成 NGC API 密钥。以下将其称为 <API-key>。
  2. 查找组织和团队范围以及模型名称、模型版本。

    在下面的示例中,<org> 是 nvidia,<team> 是 riva,<model-name> 是 speechtotext_en_us_conformer_xl,<version> 是 deployable_v4.0_export_v2,<file-name> 是 Conformer-CTC-XL_spe-128_en-US_Riva-ASR-SET-4.0.riva

    ngc-catalog-download-auth-access-models.png

    注意:并非所有模型都在团队中。在这种情况下,模型名称紧跟在组织名称之后。

  3. 生成 Bearer 令牌。

    注意:令牌有效期为 15 分钟。如果模型不在团队上下文中,则 /<<i>team</i>> 被省略。

    复制
    已复制!
                

    API_KEY=<API-key> TOKEN=$(curl -s -u "\$oauthtoken":"$API_KEY" -H 'Accept:application/json' 'https://authn.nvidia.com/token?service=ngc&scope=group/ngc:<org>&group/ngc:<org>/<team>' | jq -r '.token')

  4. 使用 curl 下载模型。
    1. 使用 curl 下载模型 ZIP 文件。

      注意:如果模型不在团队上下文中,则 team/<<i>team</i>>/ 被省略。

      复制
      已复制!
                  

      echo "Download Model ZIP" curl -LO 'https://api.ngc.nvidia.com/v2/org/<org>/team/<team>/models/<model-name>/versions/<version>/zip' -H "Authorization: Bearer ${TOKEN}" -H "Content-Type: application/json"

      示例模型 zip 下载

      复制
      已复制!
                  

      echo "Download Model ZIP" curl -LO 'https://api.ngc.nvidia.com/v2/org/nvidia/team/riva/models/speechtotext_en_us_conformer_xl/versions/trainable_v4.0/zip' -H "Authorization: Bearer ${TOKEN}" -H "Content-Type: application/json"

    2. 使用 curl 下载模型文件

      注意:如果模型不在团队上下文中,则 team/<<i>team</i>>/ 被省略。

      复制
      已复制!
                  

      echo "Download Model file" curl -LO --request GET 'https://api.ngc.nvidia.com/v2/org/<org>/team/<team>/models/<model-name>/versions/<version>/files/<file-name>' -H "Authorization: Bearer ${TOKEN}" -H "Content-Type: application/json"

      示例模型文件下载

      复制
      已复制!
                  

      echo "Download Model file" curl -LO --request GET 'https://api.ngc.nvidia.com/v2/org/nvidia/team/riva/models/speechtotext_en_us_conformer_xl/versions/trainable_v4.0/files/Conformer-CTC-XL_spe-128_en-US_Riva-ASR-SET-4.0.nemo' -H "Authorization: Bearer ${TOKEN}" -H "Content-Type: application/json"

  5. 使用 wget 下载模型。
    1. 使用 wget 下载模型 ZIP 文件。

      注意:如果模型不在团队上下文中,则 team/<<i>team</i>>/ 被省略。

      复制
      已复制!
                  

      echo "Download Model ZIP" wget --header="Authorization: Bearer $TOKEN" \ --header="Content-Type: application/json" \ 'https://api.ngc.nvidia.com/v2/org/<org>/team/<team>/models/<model-name>/versions/<version>/zip' \ 2>&1 \ | awk '/Location:/ {print $2}' \ | xargs wget --content-disposition

      示例模型 zip 下载

      复制
      已复制!
                  

      echo "Download Model ZIP" wget --header="Authorization: Bearer $TOKEN" \ --header="Content-Type: application/json" \ 'https://api.ngc.nvidia.com/v2/org/nvidia/team/riva/models/speechtotext_en_us_conformer_xl/versions/trainable_v4.0/zip' \ 2>&1 \ | awk '/Location:/ {print $2}' \ | xargs wget --content-disposition

    2. 使用 wget 下载模型文件

      注意:如果模型不在团队上下文中,则 team/<<i>team</i>>/ 被省略。

      复制
      已复制!
                  

      echo "Download Model file" wget --header="Authorization: Bearer $TOKEN" \ --header="Content-Type: application/json" \ 'https://api.ngc.nvidia.com/v2/org/<org>/team/<team>/models/<model-name>/versions/<version>/files/<file-name>' \ 2>&1 \ | awk '/Location:/ {print $2}' \ | xargs wget --content-disposition

      示例模型文件下载

      复制
      已复制!
                  

      echo "Download Model file" wget --header="Authorization: Bearer $TOKEN" \ --header="Content-Type: application/json" \ 'https://api.ngc.nvidia.com/v2/org/nvidia/team/riva/models/speechtotext_en_us_conformer_xl/versions/trainable_v4.0/files/Conformer-CTC-XL_spe-128_en-US_Riva-ASR-SET-4.0.nemo' \ 2>&1 \ | awk '/Location:/ {print $2}' \ | xargs wget --content-disposition

16.5. 通过 Web UI 下载模型

如何通过 Web UI 下载 NGC 模型。

下载模型的最新版本

要将模型的最新版本下载到本地计算机,请执行以下操作。

  1. 打开 NGC UI,从左侧导航栏中单击Catalog > 容器,然后找到并选择要下载的模型。
  2. 从模型详细信息页面的右上角单击操作菜单,然后单击下载 <version>

示例

ngc-model-download.png

下载模型的特定版本

要下载模型的特定版本,请执行以下操作。

  1. 打开 NGC UI,从顶部内容类型功能区中单击模型,然后找到并单击要下载的模型。
  2. 单击“版本历史记录”选项卡,然后单击要下载的版本的操作图标,然后单击下载

下图说明了这些步骤。

ngc-model-version.png

NGC 资源的描述、其用途以及如何使用它们。

17.1. 什么是资源?

NGC 资源提供文档、代码示例和许多其他资产,例如 Jupyter Notebook、部署管道以及用于创建深度学习模型的逐步说明和脚本。这些脚本具有示例性能和准确性指标,可让您比较结果。这些脚本为构建用于图像分类、语言翻译、文本到语音等的 DL 模型提供了专家指导。数据科学家可以通过轻松调整超参数来快速构建性能优化的模型。

17.2. 搜索和筛选资源

要查看 NGC 资源,请导航到左侧菜单中的 Catalog > 资源。使用页面顶部的搜索栏按资源进行筛选,或使用下拉菜单中的条件对列表进行排序。您可以使用“用例”、“NVIDIA 平台”、“NVIDIA AI Enterprise”和许多其他过滤器来优化搜索。过滤选项的描述如下

  • 用例:从可用的常见用例中选择。

  • NVIDIA 平台:从 Clara、DeepStream、TensorFlow 和许多其他平台中选择。

  • NVIDIA AI Enterprise 支持:选择此选项以查找 NVAIE 支持的公开可用资源。

  • NVIDIA AI Enterprise:选择此项下的产品以查看授权实体。

  • 快速部署:选择此选项以查找容器,从而在 Jupyter 环境中快速部署您的工件。

  • 框架:按框架筛选,例如 MXNet 或 NeMo。

  • 行业:按可用行业选择。

  • 解决方案:选择与您的用例最匹配的解决方案。

  • 发布者:按发布者筛选。

  • 类型:按类型筛选。

  • 语言:按语言选择。

  • 其他:其他选项。

以下示例页面显示了以访客用户身份登录时可用的搜索和筛选选项

ngc-catalog-containers-resources-guest-ann.png

17.3. 通过 NGC CLI 下载资源

要将资源从注册表下载到本地磁盘,请指定资源名称和版本。

复制
已复制!
            

$ ngc registry resource download-version nvidia/<resource-name:version>


示例:将资源下载到当前目录。

复制
已复制!
            

$ ngc registry resource download-version nvidia/gnmt_v2_for_tensorflow:1


以下示例显示了确认下载完成的输出

复制
已复制!
            

Downloaded 130.6 KB in 1s, Download speed: 130.6 KB/s ---------------------------------------------------- Transfer id: gnmt_v2_for_tensorflow_v1 Download status: Completed. Downloaded local path: C:\gnmt_v2_for_tensorflow_v1 Total files downloaded: 35 Total downloaded size: 130.6 KB Started at: 2019-03-20 11:24:00.168000 Completed at: 2019-03-20 11:24:01.176000 Duration taken: 1s seconds ----------------------------------------------------

模型将下载到当前目录中与模型名称对应的文件夹中。您可以使用 -d 选项指定另一个路径。

示例:将资源下载到特定目录 (/resources)。

复制
已复制!
            

$ ngc registry resource download-version nvidia/gnmt_v2_for_tensorflow:1 -d ./resources


复制
已复制!
            

Downloaded 130.6 KB in 1s, Download speed: 130.6 KB/s ---------------------------------------------------- Transfer id: gnmt_v2_for_tensorflow_v1 Download status: Completed. Downloaded local path: C:\resources\gnmt_v2_for_tensorflow_v1 Total files downloaded: 35 Total downloaded size: 130.6 KB Started at: 2019-03-20 11:24:00.168000 Completed at: 2019-03-20 11:24:01.176000 Duration taken: 1s seconds ----------------------------------------------------

17.4. 通过 WGET/cURL 下载资源

17.4.1. 通过 WGET/cURL 下载访客访问资源

如何通过 WGET/cURL 下载访客访问资源。

要通过 wget/curl 从 NGC 资源获取单个文件的副本,您可以使用 NGC UI 中提供的 URL。

  1. 打开 NGC UI,从左侧导航菜单中单击资源,然后找到并单击要下载的资源。

    ngc-wget-resources.png

  2. 单击右上角的下载按钮或导航到文件浏览器选项卡。

    ngc-wget-download-resource.png

  3. 选择复制 curl cmd复制 wget cmd 以将相关代码复制到剪贴板。

    ngc-wget-resource-copy-curl-cmd.png

以下内容将添加到您的剪贴板,用于 wget 命令

复制
已复制!
            

wget --content-disposition 'https://api.ngc.nvidia.com/v2/resources/org/nvidia/team/tao/tao-converter/v5.1.0_8.6.3.1_x86/files?redirect=true&path=tao-converter' -O tao-converter

同样,以下内容将添加到您的剪贴板,用于 curl 命令

复制
已复制!
            

curl -LO 'https://api.ngc.nvidia.com/v2/resources/org/nvidia/team/tao/tao-converter/v5.1.0_8.6.3.1_x86/files?redirect=true&path=tao-converter'

17.4.2. 通过 WGET/cURL 下载已验证访问资源

如何通过 WGET/cURL 下载已验证访问资源。

  1. 获取 NGC API 密钥。请参阅 生成 NGC API 密钥。以下将其称为 <API-key>。
  2. 查找组织和团队范围以及资源名称、资源版本。

    在下面的示例中,<org> 是 nvidia,<team> 是 riva,<resource-name> 是 riva_quickstart,<version> 是 2.15.0,<file-name> 是 nemo2riva-2.15.0-py3-none-any.whi

    ngc-catalog-download-auth-access-resources.png

  3. 生成 Bearer 令牌。

    注意:令牌有效期为 15 分钟。如果资源不在团队上下文中,则 /<<i>team</i>> 被省略。

    复制
    已复制!
                

    API_KEY=<API-key> TOKEN=$(curl -s -u "\$oauthtoken":"$API_KEY" -H 'Accept:application/json' 'https://authn.nvidia.com/token?service=ngc&scope=group/ngc:<org>&group/ngc:<org>/<team>' | jq -r '.token')

  4. 使用 curl 下载资源。
    1. 使用 curl 下载资源 ZIP 文件。

      注意:如果资源不在团队上下文中,则 team/<<i>team</i>>/ 被省略。

      复制
      已复制!
                  

      echo "Download Resource ZIP" curl -LO 'https://api.ngc.nvidia.com/v2/org/<org>/team/<team>/resources/<resource-name>/versions/<version>/zip' -H "Authorization: Bearer ${TOKEN}" -H "Content-Type: application/json"

      示例资源 zip 下载

      复制
      已复制!
                  

      echo "Download Resource ZIP" curl -LO 'https://api.ngc.nvidia.com/v2/org/nvidia/team/riva/resources/riva_quickstart/versions/2.9.0/zip' -H "Authorization: Bearer ${TOKEN}" -H "Content-Type: application/json"

    2. 使用 curl 下载资源文件。

      注意:如果资源不在团队上下文中,则 team/<<i>team</i>>/ 被省略。

      复制
      已复制!
                  

      echo "Download Resource file" curl -LO --request GET 'https://api.ngc.nvidia.com/v2/org/<org>/team/<team>/reources/<resource-name>/versions/<version>/files/<file-name>' -H "Authorization: Bearer ${TOKEN}" -H "Content-Type: application/json"

      示例资源文件下载

      复制
      已复制!
                  

      echo "Download Resource file" curl -LO --request GET 'https://api.ngc.nvidia.com/v2/org/nvidia/team/riva/resources/riva_quickstart/versions/2.9.0/files/riva_init.sh' -H "Authorization: Bearer ${TOKEN}" -H "Content-Type: application/json"

  5. 使用 wget 下载资源。
    1. 使用 wget 下载资源 ZIP 文件。

      注意:如果资源不在团队上下文中,则 team/<<i>team</i>>/ 被省略。

      复制
      已复制!
                  

      echo "Download Resource ZIP" wget --header="Authorization: Bearer $TOKEN" \ --header="Content-Type: application/json" \ 'https://api.ngc.nvidia.com/v2/org/<org>/team/<team>/resources/<resource-name>/versions/<version>/zip' \ 2>&1 \ | awk '/Location:/ {print $2}' \ | xargs wget --content-disposition

      示例资源 zip 下载

      复制
      已复制!
                  

      echo "Download Resource ZIP" wget --header="Authorization: Bearer $TOKEN" \ --header="Content-Type: application/json" \ 'https://api.ngc.nvidia.com/v2/org/nvidia/team/riva/resources/riva_quickstart/versions/2.9.0/zip' \ 2>&1 \ | awk '/Location:/ {print $2}' \ | xargs wget --content-disposition

    2. 使用 wget 下载资源文件

      注意:如果资源不在团队上下文中,则 team/<<i>team</i>>/ 被省略。

      复制
      已复制!
                  

      echo "Download Resource file" wget --header="Authorization: Bearer $TOKEN" \ --header="Content-Type: application/json" \ 'https://api.ngc.nvidia.com/v2/org/<org>/team/<team>/resources/<resource-name>/versions/<version>/files/<file-name>' \ 2>&1 \ | awk '/Location:/ {print $2}' \ | xargs wget --content-disposition

      示例资源文件下载

      复制
      已复制!
                  

      echo "Download Resource file" wget --header="Authorization: Bearer $TOKEN" \ --header="Content-Type: application/json" \ 'https://api.ngc.nvidia.com/v2/org/nvidia/team/riva/resources/riva_quickstart/versions/2.9.0/files/riva_quickstart.sh' \ 2>&1 \ | awk '/Location:/ {print $2}' \ | xargs wget --content-disposition

17.5. 通过 Web UI 下载资源

  1. 从浏览器中,转到 NGC Catalog 网站。
  2. 登录。请参阅 注册和激活您的 NGC 帐户
  3. 从左侧导航菜单中单击资源

    resources-menu-left-nav.png

    您将看到一个包含可用资源的页面。

  4. 选择其中一个资源卡片。

    详细信息页面提供每个资源的附加信息。

    ngc-catalog-resource-details.png

    右上角的“下载”菜单提供三种不同的下载资源方式。

    ngc-catalog-resources-download.png

    单击浏览器(直接下载)开始下载,或单击 WGETCLI 将下载命令复制到剪贴板。

    文件浏览器选项卡可让您查看资源的文件内容。

    ngc-catalog-resources-file-browser.png

Helm 是一个在 Kubernetes 之上运行的应用程序包管理器。本节介绍如何使用 NGC Catalog 中的访问 Helm chart。

先决条件

这些说明假定满足以下先决条件。

18.1. 设置 NGC Helm 仓库


  1. 获取 NGC API 密钥。

    有关说明,请参阅 生成您的 NGC API 密钥

  2. 导出 API 密钥以在命令中使用。
    复制
    已复制!
                

    $ export NGC_API_KEY=<your-api-key>

  3. 将 NGC org 添加到您的 Helm 仓库。
    复制
    已复制!
                

    $ helm repo add <repo-name> https://helm.ngc.nvidia.com/<org-name> --username=\$oauthtoken --password=$NGC_API_KEY

    其中 <<i>repo-name</i>> 是您选择的仓库名称,您将通过该名称引用仓库。

18.2. 在 NGC Catalog 中搜索可用的 Helm Chart


要查看您的 org 中可用 Chart 包的列表,请执行以下操作。

复制
已复制!
            

$ helm search <repo-name>


示例

复制
已复制!
            

$ helm search nvidian

18.3. 获取 Helm Chart


要从仓库下载(或“获取”)Helm chart 包,请执行以下操作。

复制
已复制!
            

$ helm fetch <repo-name>/<chart-name>

18.4. 使用 NGC 网站查看 Helm Chart 列表并获取 Fetch 命令

从 NGC 网站,您可以

  • 查看 Helm chart 仓库的内容。
  • 获取仓库中特定 Helm chart 的推送命令。

  1. 从浏览器中,登录到 https://ngc.nvidia.com。
  2. 如果您是多个组织的成员,请选择包含您感兴趣的 Helm chart 的组织,然后单击登录
  3. 从左侧导航窗格中单击 Helm Charts

    ngc-helm-charts-nav.png

    该页面显示每个可用 Helm chart 的卡片。

    helm-chart-cards-example.png

  4. 选择其中一个 Helm chart 卡片。

    每个 Helm chart 的页面都提供有关该 chart 的信息。

    helm-chart-page-example.png

    “Fetch 命令”部分显示用于下载 Helm chart 包的命令。

    单击右上角的Fetch 下载按钮或 fetch 命令旁边的复制图标,将 fetch 命令复制到剪贴板。

    文件浏览器选项卡可让您查看 Helm chart 包的文件内容。

    helm-chart-file-browser.png


NVIDIA AI 工具包提供库和工具,用于在广泛的行业和 AI 应用程序领域中训练、微调、优化和部署预训练的 NGC 模型。

这些包括

  • 一个 AI 辅助注释工具,帮助用户标记其数据集以进行训练。

  • 一个 迁移学习工具包,用于使用用户数据微调预训练模型,从而节省从头开始训练的成本。

  • 联邦学习,通过允许用户协作和训练 AI 模型而无需在客户端之间共享私有数据来保护隐私。

  • NeMo 工具包,用于快速构建用于语音识别和自然语言处理的先进模型。

  • Service Maker 工具包,将训练好的模型公开为 gRPC 服务,该服务可以扩展并轻松部署在 Kubernetes 服务上。

  • 使用工具包构建的模型可以集成到客户端应用程序中,并使用 NVIDIA 提供的软件开发工具包部署到生产环境中。这些 SDK 利用 TensorRTTriton 推理服务器 作为基础构建块。

NVIDIA 提供针对行业或特定用例的 AI 工具包和应用程序框架。这些在下表中列出。
行业或 AI 应用程序AI 工具包
医疗保健和生命科学NVIDIA Clara
流视频分析

NVIDIA Metropolis

NVIDIA DeepStream

机器人技术NVIDIA Isaac Sim
5G 加速NVIDIA Aerial
推荐系统NVIDIA Merlin
对话式 AINVIDIA Riva


深度学习框架通过高级编程接口为设计、训练和验证深度神经网络提供构建块。广泛使用的深度学习框架(如 MXNet、PyTorch、TensorFlow 等)依赖于 GPU 加速库(如 cuDNN、NCCL 和 DALI)来提供高性能多 GPU 加速训练。

开发人员、研究人员和数据科学家可以轻松访问 NVIDIA 优化的深度学习框架容器以及深度学习示例,这些容器经过性能调整和 NVIDIA GPU 测试。这消除了管理软件包和依赖项或从源代码构建深度学习框架的需求

GPU Operator

Kubernetes 中的 Operator Framework 采用操作业务逻辑,并允许创建自动化框架,用于使用标准 Kubernetes API 和 kubectl 在 Kubernetes 中部署应用程序。NVIDIA GPU Operator 自动化管理在 Kubernetes 中配置 GPU 所需的所有 NVIDIA 软件组件。NVIDIA、Red Hat 和社区中的其他成员合作创建了 GPU Operator。GPU Operator 是 NVIDIA EGX 软件定义平台的重要组成部分,该平台旨在使大规模混合云和边缘操作成为可能和高效。

声明

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

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

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

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

商标

NVIDIA 和 NVIDIA 徽标是 NVIDIA Corporation 在美国和其他国家/地区的商标和/或注册商标。 其他公司和产品名称可能是与其关联的各自公司的商标。

© 2020-2024 NVIDIA CORPORATION 及关联公司。保留所有权利。 上次更新时间:2024 年 12 月 21 日。