NGC 私有注册表用户指南
本文档介绍如何使用 NVIDIA® NGC 私有注册表。本指南假定用户熟悉 Linux 和 Docker,并且可以访问基于 NVIDIA GPU 的计算解决方案,例如 NVIDIA DGX 系统或 NVIDIA 认证系统,这些系统配置了互联网访问并准备好运行 NVIDIA GPU 加速的 Docker 容器。
随着数据科学家构建自定义内容,存储、共享和版本控制这些有价值的知识产权对于满足公司的业务需求至关重要。为了满足这些需求,NVIDIA 开发了 NGC 私有注册表,以提供安全的空间来存储和共享企业内部的自定义容器、模型、Jupyter 笔记本和 Helm 图表。NGC 私有注册表适用于 DGX 和 NVIDIA AI Enterprise 客户。
增强协作
我们都习惯于使用 Slack 或 Microsoft Teams 等工具进行协作,以共享我们的内容并确保我们的同事都保持一致。NGC 私有注册表的主要目标是支持在您的组织内共享人工智能 (AI) 内容,例如容器、模型、Helm 图表。此功能使您组织中的主要利益干系人能够协作,而无需重新发明轮子,从而提高生产力、节省宝贵的资源并更快地将您的产品推向市场。
企业就绪
在大型组织中共享内容时,必须确保您可以管理用户。NGC 私有注册表中全面的用户和团队管理使管理员能够控制对注册表中存储内容的访问。
借助云的强大功能,NGC 私有注册表中存储的内容始终可用,并具有冗余存储,可以从任何地方访问,从而非常容易访问您的内容。
2.1. 获取私有注册表
本章为 DGX 客户提供有关获取私有注册表的说明。
购买 NVIDIA 的支持授权后,最终客户将通过电子邮件收到 NVIDIA 授权证书。该电子邮件将包含所有注册技术支持的相关说明。
以下是 NVIDIA 授权证书电子邮件的示例。

授权证书本身以 PDF 附件形式提供。以下是 NVIDIA 授权证书的示例。

PDF 还包括有关使用证书的说明。

- 如果您已经有帐户,则可以立即登录 NVIDIA 企业支持门户。
- 如果您是没有 NGC 支持帐户的新用户,请单击 NVIDIA 企业支持注册表单链接。
此链接将包含有关您帐户的嵌入式信息。切勿在您的组织外部共享此授权链接至关重要。
注册将提供 NGC 私有注册表和 NVIDIA 企业支持帐户。您将收到一封欢迎电子邮件,届时您可以激活您的 NGC 私有注册表帐户。
2.2. 激活新的 NGC 帐户
在使用 NGC 之前,您必须拥有由您的组织所有者或组织中其他管理员创建的 NGC 帐户。您需要一个电子邮件地址才能设置帐户。根据您的情况,选择以下过程之一来激活您的 NGC 帐户。
2.2.1. 使用现有 NVIDIA 帐户加入 NGC 组织或团队
本节介绍当您的电子邮件地址已关联到 NVIDIA 帐户时如何加入组织或团队。
在 NVIDIA 或您的组织管理员将您添加到组织内的新组织或团队后,您将收到一封欢迎电子邮件,邀请您继续激活和登录过程。

- 单击接受邀请并登录链接以打开 NGC 登录页面。
输入您的电子邮件地址并使用您的 NVIDIA 帐户凭据登录。
将出现设置您的组织屏幕。
- 选择您已受邀加入的新组织和团队。单击继续。
登录后,您可以随时更改为您作为成员的其他组织或团队。有关更多信息,请参阅登录 NGC 后切换组织或团队。
要查看私有注册表中的工件,请在左上角的应用程序菜单中选择私有注册表。然后,您可以根据需要创建集合、容器、helm 图表、模型和资源。

2.2.2. 使用新的 NVIDIA 帐户加入组织或团队
本节介绍激活新帐户,其中您的电子邮件地址的域未映射到组织的单点登录。
在您的组织管理员邀请您加入组织或团队后,您将收到一封欢迎电子邮件,邀请您继续激活和登录过程。

- 单击接受邀请并登录链接以在浏览器中打开 NGC 登录对话框,或转到NGC 登录。
- 输入您的电子邮件地址,然后单击继续。系统将自动提示您创建新的 NVIDIA 帐户。
- 填写您的信息,创建密码,同意条款和条件,然后单击创建帐户。一封电子邮件已发送给您,以验证您的电子邮件地址。
- 打开电子邮件,然后单击验证电子邮件地址。
- 在快完成了!对话框中,选择您的通信首选项,然后单击提交。
- 在 NVIDIA 帐户使用条款对话框中,选择所需的选项,然后单击同意。
- 选择您要登录的组织和团队,然后单击继续。
登录后,您可以随时更改为您作为成员的其他组织或团队。有关更多信息,请参阅登录 NGC 后切换组织或团队。
要查看私有注册表中的工件,请从左上角的应用程序菜单中选择私有注册表。然后,您可以根据需要创建集合、容器、helm 图表、模型和资源。

2.2.3. 以组织所有者身份加入组织
本节介绍激活新的 NGC 组织,您将以组织所有者身份加入。
在 NVIDIA 设置您的 NGC 组织后,您将收到一封欢迎电子邮件,邀请您继续激活和登录过程。

在示例中,“Novi Sciences”是新创建的组织的所有者。以下步骤假设 Novi 是 NGC 的新手,并解释了如何创建新的 NVIDIA 帐户并以组织所有者身份登录。如果您已经拥有管理其他 NGC 组织的 NVIDIA 帐户作为组织所有者,请单击使用备用方法以使用您现有的 NVIDIA 帐户登录并访问您的新组织。请注意电子邮件中的以下重要信息。
-
“TB3-org”是您的组织的显示名称。显示名称标识您在 NGC Web UI 中的组织。
-
“njdfzzqagzno”是您组织的唯一标识符。此标识符代表您的组织命名空间。您可以在某些 CLI 命令中使用此标识符。
- 单击登录 NGC,或使用浏览器导航到NGC 登录页面。
输入您的电子邮件地址,然后单击继续。
- 您将看到一个创建帐户屏幕。
验证您的电子邮件并创建密码。查看 NVIDIA 帐户使用条款和隐私政策,然后单击创建帐户。
将发送一封验证电子邮件。
- 打开电子邮件,然后单击验证电子邮件地址。
- 在快完成了!对话框中,选择您的通信首选项,然后单击提交。
- 在 NVIDIA 帐户使用条款对话框中,选择所需的选项,然后单击同意。
- 选择您要登录的组织和团队,然后单击继续。
登录后,您可以随时更改为您作为成员的其他组织或团队。有关更多信息,请参阅登录 NGC 后切换组织或团队。
2.2.4. 使用外部 SSO 公司帐户加入组织或团队
本节介绍加入已由贵公司联合到外部 SSO/IdP 身份验证服务的组织或团队,并且您的电子邮件地址域需要针对贵公司的单点登录进行 NGC 身份验证。
在您的组织管理员将您添加到组织内的新组织或团队后,您将收到一封欢迎电子邮件,邀请您继续激活和登录过程。

- 单击接受邀请并登录链接以打开 NGC 登录页面。
输入您的电子邮件地址,然后单击继续。
由于您的电子邮件地址域与外部 SSO 身份提供商关联,您将被自动重定向并提示针对外部身份验证方法进行身份验证。
例如
成功验证身份后,您将被重定向到 NGC。
如果您是多个 NGC 组织的成员,则会出现设置您的组织屏幕。
- 选择您已受邀加入的新组织和团队,然后单击继续。
登录后,您可以随时更改为您作为成员的其他组织或团队。有关更多信息,请参阅登录 NGC 后切换组织或团队。
NGC Web UI 将打开到 NGC 目录登录页面。
要查看私有注册表中的工件,请从左上角的应用程序菜单中选择私有注册表。然后,您可以根据需要创建集合、容器、helm 图表、模型和资源。

登录 NGC 后切换组织或团队
本节介绍登录后切换到其他组织或团队。
在顶部菜单栏中,单击您的用户帐户图标。然后,选择您的组织菜单以展开视图以查看其他可用组织。如果您管理多个组织,则可以使用搜索字段查找要选择的特定组织。单击一次以选择所需的组织。

根据您选择的组织或团队,您当前的页面也可能会刷新。
2.3. NGC API 密钥
使用 NCG CLI、Docker CLI 或 API 通信对 NGC 服务进行身份验证需要 NVIDIA NGC API 密钥。NVIDIA NGC 支持三种类型的 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 密钥列出工件。
随着 NVIDIA 推出对“个人”和“服务”API 密钥的支持,原始 NGC API 密钥将继续受到支持。我们强烈建议使用最新的“个人”或“服务”类型 API 密钥生成新的 API 密钥。这些密钥类型提供了配置到期日期、使用操作按钮撤销或删除密钥以及根据需要轮换密钥的能力。
以下列出了支持个人和服务密钥的 NVIDIA NGC 应用程序/服务NGC 应用程序/服务 | 服务 API 密钥 | 个人 API 密钥 | NGC API 密钥(原始) |
---|---|---|---|
NVIDIA NGC 目录 | 是 | 是 | 是 |
NVIDIA NGC 私有注册表(尚不支持 Helm 图表)。 | 是 | 是 | 是 |
NVIDIA NIM™ | 是 | 是 | 否 |
NVIDIA Fleet Command | 否 | 是 | 是 |
NVIDIA Base Command Platform | 否 | 否 | 是 |
如果您的 NGC 服务未在个人或服务密钥下列出,请继续使用原始 NGC API 密钥。我们将通过将对其他 NGC 服务的支持添加到我们的下一代密钥类型中来更新此列表。
2.3.1. 生成个人 API 密钥
- 登录到 NGC 网站。
从浏览器中,转到https://ngc.nvidia.com/signin,然后输入您的电子邮件和密码。
- 单击右上角的您的用户帐户图标,然后选择设置。
- 从可用选项中单击生成个人密钥。
个人密钥允许访问一组 NGC 服务 API。
- 在设置 > 个人密钥页面上,单击菜单或窗格上的+ 生成个人密钥。
- 在生成个人密钥对话框中,填写密钥的必填信息。
- 密钥名称:输入密钥的唯一名称。
- 到期时间:选择密钥的到期日期。
- 包含的服务:从可用服务中选择密钥允许访问的服务。请参阅为您的个人 API 密钥分配服务,以了解有关每个服务的更多信息以及何时为您的个人密钥分配服务访问权限。
- 完成后,单击生成个人密钥。
您的 API 密钥将显示在以下对话框中。
- NGC 不会保存您的密钥,因此请安全地存储它。您可以通过选择复制个人密钥或使用 API 密钥右侧的复制图标将您的 API 密钥复制到剪贴板。
您可以生成最多八个个人密钥,并从设置 > 个人密钥仪表板管理它们。要激活或停用密钥,请单击活动切换。操作(省略号)菜单允许您轮换或删除个人密钥。
2.3.1.1. 为您的个人 API 密钥分配服务
您可以分配给个人 API 密钥的服务取决于两个因素
- 为生成 API 密钥的 NGC 组织启用的服务。
- NGC 组织所有者或管理员分配给您的服务角色。
例如,考虑一个启用了以下服务的 NGC 组织

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

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

如果某个服务无法分配给 API 密钥,则表明组织所有者或管理员未授予用户该服务所需的角色。
有关上面列出的每个服务及其功能的详细信息,请参见下文。
密钥管理器:NGC 密钥管理器服务使 NGC 用户能够存储访问 NVIDIA 或需要程序化身份验证的外部服务所需的密钥对。
如果您需要使用个人 API 密钥从密钥管理器保管库中检索这些密钥,则必须将密钥管理器服务权限分配给您的 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 密钥分配私有注册表访问权限。
2.3.2. 生成服务 API 密钥
- 登录到 NGC 网站。
从浏览器中,转到https://ngc.nvidia.com/signin,然后输入您的电子邮件和密码。
- 从右上角的用户帐户菜单中选择组织。
在组织仪表板上选择服务密钥。
- 在组织 > 服务密钥页面上,单击+ 创建服务密钥按钮以创建密钥。
- 在创建服务密钥对话框中,填写所需的配置。服务密钥当前支持 NVIDIA NIM、NGC 目录和私有注册表等服务。为密钥分配范围和资源权限。
在实体类型字段中,从可用选项中选择要授予 API 密钥的选项。
在范围字段中,从可用选项中选择。
- 单击下一步以查看您的密钥配置。
- 验证配置后,单击确认以生成您的服务密钥。您的服务密钥将显示在下一个对话框中。
- NGC 不会保存您的密钥,因此请安全地存储它。您可以通过单击 API 密钥右侧的复制图标或复制服务密钥按钮将您的 API 密钥复制到剪贴板。
务必在离开此页面之前复制密钥值。一旦您离开,密钥值将无法检索,并且更换它将需要生成新密钥。
NGC 支持多个服务 API 密钥,这些密钥从组织 > 服务密钥仪表板进行管理。
要激活或停用密钥,请单击活动切换。操作(省略号)菜单允许您轮换或删除服务密钥。
注意管理容器时,请确保为您的服务密钥分配了范围获取容器和获取容器列表。对于其他类型的工件,请添加范围获取工件和获取工件列表。这些范围是发现需要管理的工件所需的最低要求。有关更多信息,请参阅NGC 目录用户指南和私有注册表用户指南。
2.3.3. 生成 NGC API 密钥
本节介绍如何获取 API 密钥以访问来自 NGC 注册表的锁定容器映像。
- 登录到 NGC 网站。
从浏览器中,转到https://ngc.nvidia.com/signin,然后输入您的电子邮件和密码。
- 单击右上角的您的用户帐户图标,然后选择设置。
- 单击生成 API 密钥以打开API 密钥页面。
API 密钥是验证您对 NGC 容器注册表访问权限的机制。
- 在API 密钥页面上,单击+ 生成 API 密钥以生成您的 API 密钥。
将显示一条警告消息,表明如果您创建新的 API 密钥,则旧的 API 密钥将失效。
- 单击确认以生成密钥。
您的 API 密钥将显示。
您只需要生成一次 API 密钥。NGC 不会保存您的密钥,因此请安全地存储它。
提示您可以通过单击 API 密钥右侧的复制图标将您的 API 密钥复制到剪贴板。
如果您丢失了 API 密钥,可以从 NGC 网站生成一个新的密钥。当您生成新的 API 密钥时,旧的密钥将失效。
2.4. 在 NGC 中管理用户和团队
本章适用于组织和团队管理员,并解释了组织或团队管理员可以从 NGC 网站执行的任务。
创建组织时,组织所有者是从销售过程中提供的主要技术联系信息创建的。此组织所有者将收到来自 NGC 的电子邮件。作为您组织的 NGC 组织所有者,您可以邀请其他用户加入您组织的 NGC 帐户。然后,可以将用户分配为组织内团队的成员。团队对于在组织内保持自定义工作的私密性非常有用。您还可以在组织中创建其他管理员来分担该责任。构建用户团队的一般工作流程如下所示:
- 组织管理员邀请用户加入组织的 NGC 帐户。
- 组织管理员在组织内创建团队。
- 组织管理员将用户添加到相应的团队,并且通常至少分配一个用户作为团队管理员。
- 然后,组织或团队管理员可以将其他用户添加到团队。
2.4.1. NGC 注册表用户角色
在添加用户和团队之前,请先熟悉每个角色的以下定义。
NGC 容器注册表支持以下用户角色。
组织和团队级别角色
以下角色可以分配给用户。
- 组织所有者:此用户是在创建组织时创建的。在给定时刻,最多可以为两个用户分配组织所有者角色。此用户可以下载/上传、推送/拉取 或删除、添加/删除用户以及在组织内创建团队。
- 注册表管理员:此用户可以在组织或团队内下载/上传、推送/拉取 或删除工件。
- 注册表用户:此用户可以在组织或团队内下载、上传、推送/拉取工件。
- 注册表读取:此用户可以在组织或团队内下载和拉取工件。
- 用户管理员:此用户可以在组织内查看和邀请其他用户和用户管理员。在团队级别,用户管理员可以查看和邀请其他用户和用户管理员加入该团队。用户管理员只能授予他们拥有的角色。
- 用户读取:此用户可以查看组织或团队的详细信息。
用户必须是“注册表读取”、“注册表用户”、“和/或”用户管理员“角色,才能成为组织或任何团队的成员。
功能 | 注册表管理员 | 注册表用户 | 用户管理员 | 注册表读取 | 用户读取 |
---|---|---|---|---|---|
添加团队 | X | X | ✔ | X | X |
向组织或团队添加新用户 | X | X | ✔ | X | X |
查看用户 | ✔ | X | ✔ | X | X |
删除映像 | ✔ | X | X | X | X |
通过 UI 和 CLI 查看/编辑所有映像信息 | ✔ | ✔ | X | X | X |
查看所有工件,即容器、模型、资源 | ✔ | ✔ | ✔ | ✔ | X |
下载所有工件,即容器、模型、资源 | ✔ | ✔ | X | ✔ | X |
创建和推送/上传所有工件,即容器、模型、资源 | ✔ | ✔ | X | X | X |
2.4.2. 创建团队
创建团队对于允许用户在团队内共享映像,同时使其对同一组织中的其他团队不可见非常有用。只有组织管理员才能创建团队。
- 登录到NGC 应用程序。
- 从用户帐户菜单中选择组织。从仪表板或左侧导航栏中,选择团队。然后,单击屏幕顶部的创建团队。
- 输入团队名称和描述,然后单击创建团队。团队名称必须全部为小写。
2.4.3. 创建用户
作为组织所有者或用户管理员,您必须创建用户帐户,以允许其他人在组织内使用 NGC 容器注册表。
- 登录到NGC 应用程序。
- 从用户帐户菜单中单击组织。从仪表板或左侧导航栏中,选择用户。然后,单击屏幕右上角的邀请用户。
- >按如下方式填写新用户的邀请新用户表单
- 在指示的位置输入显示名称和电子邮件。
- 选择要分配的组织或团队。
- 选择要分配给用户的角色。
- 单击添加角色,然后完成后单击邀请用户。
邀请电子邮件将自动发送给用户。
2.4.4. 向团队添加新用户
组织所有者或组织级别用户管理员可以将用户添加到组织中的任何团队。团队用户管理员可以将用户添加到他们的团队。
- 登录到NGC 应用程序。
- 从用户帐户菜单中单击组织。从左侧导航栏中选择团队,然后选择要添加用户的团队。
- 在用户页面上,单击邀请新用户。
- 在邀请新用户对话框中,按照创建用户部分中的步骤填写添加用户表单并邀请新用户加入团队。确保在所需的团队上下文中邀请用户。
用户可以是多个团队的成员。要将用户添加到另一个团队,请对任何其他团队重复这些步骤。
2.4.5. 向团队添加现有用户
组织所有者或组织级别用户管理员可以将用户添加到组织中的任何团队。团队用户管理员可以将用户添加到他们的团队。
- 登录到NGC 应用程序。
- 从用户帐户菜单中单击组织。从仪表板或左侧导航栏中,选择团队导航栏。然后,选择要添加用户的团队。
- 在用户页面上,单击添加现有用户。
- 在“查找现有用户”对话框中,输入您要添加的用户的名称。
- 选择用户,然后单击编辑用户。
- 在用户信息页面上,将用户分配到所需的团队和角色。单击添加角色以保存您的更改。
用户可以是多个团队的成员。要将用户添加到另一个团队,请对任何其他团队重复这些步骤。
2.4.6. 更改用户角色
您可以更改您创建的任何用户的用户分配和角色。
- 登录到NGC 应用程序。
- 选择您要更改用户角色的组织和团队。
单击您的用户图标以从组织列表中选择,选择一个组织,如果适用,则选择一个团队。
- 从用户帐户菜单中单击组织。从左侧导航栏中选择用户。将显示当前注册表空间中所有用户的列表。
- 选择您要更改其角色的用户。将显示“用户信息”表单。
- 单击编辑成员资格。
将出现一个提示,用于编辑成员资格角色。
- 您可以分配新角色、更新和删除用户角色,并在完成后单击添加角色。
2.5. NGC NGC CLI 简介
统一的 NGC 和企业目录
企业目录(其中包含 NVIDIA AI Enterprise (NVAIE) 支持的软件)现已集成到 NGC 目录(公共)中,为用户提供了一个统一且全面的平台。 拥有有效 NVAIE 授权的 NVAIE 客户可以从 NGC 目录中访问专属于他们的软件和功能。
NGC 目录旨在提供一个集中式目录,其中包含公开可用的实体(例如,容器、模型、资源)以及属于称为授权实体的产品的一部分的实体。 这种方法使用户能够无缝地搜索和筛选所有实体,从而获得更高效和改进的用户体验。
用户可以通过登录 NGC 来查看和下载授权实体。 NGC CLI 也可用于使用 API 密钥下载软件。 即使在切换组织/团队上下文时,对所有已授权产品的访问权限仍然保留。 当尝试下载门控功能或授权实体时,未经身份验证的用户将看到登录或获取产品访问权限的提示。
发布者可以将实体发布和映射到产品。 对实体的访问受到实体类型、实体访问类型、用户订阅和角色的限制,从而增强了安全性和控制。 对于授权实体,鼓励访客用户转换为注册或订阅状态以访问特定于产品的实体。
NGC CLI 简介
NGC CLI 是用于管理 NGC 注册表内内容的命令行界面。 CLI 在 shell 中运行,让您可以使用脚本来自动化命令。
- 查看 GPU 加速的 Docker 容器镜像、预训练的深度学习模型以及用于创建深度学习模型的脚本列表。
- 下载容器镜像、模型和资源。
NGC 注册表 CLI
如果您使用自己的 NGC 帐户或 NGC 私有注册表帐户登录,则可以使用 NGC 注册表 CLI,使用它可以
- 查看可用的 GPU 加速 Docker 容器列表以及有关每个镜像的详细信息。
- 查看深度学习模型和资源列表以及有关它们的详细信息。
- 下载容器镜像、模型和资源。
- 上传容器镜像、模型和资源。
- 创建和管理用户和团队(适用于 NGC 私有注册表管理员)。
有关更多详细信息和最佳实践,请访问 NGC CLI 文档页面。
2.5.1. 安装 NGC 注册表 CLI
- 登录到 NGC 网站 (https://ngc.nvidia.com) 上的企业帐户。
- 在右上角,单击您的用户帐户图标并选择设置,然后在“设置”页面中单击 CLI 下的下载。
- 在“CLI 安装”页面中,根据您将运行 NGC 注册表 CLI 的平台,单击 Windows、Linux 或 macOS 选项卡。
- 按照说明安装 CLI。
- 通过输入
ngc --version
验证安装。 输出应为NGC CLI x.y.z
,其中 x.y.z 表示版本。
2.5.2. 管理用户和团队
本节适用于组织和团队管理员。
作为您组织的 NGC 管理员,您可以邀请其他用户加入您组织的 NGC 帐户。 然后可以将用户分配为组织内团队的成员。 团队对于在组织内保持自定义工作的私密性非常有用。
- 组织管理员邀请用户加入组织的 NGC 帐户。
- 组织管理员在组织内创建团队。
- 组织管理员将用户添加到相应的团队,并且通常至少分配一个用户作为团队管理员。
- 然后,组织或团队管理员可以将其他用户添加到团队。
2.5.2.1. 邀请用户加入组织的 NGC 帐户
所需角色:组织管理员 (REGISTRY_WRITE_ADMIN_ROLE)
语法
c:\> ngc org add-user <email> <name>
添加 John Smith(电子邮件:jsmith@example.com)的示例
c:\> ngc org add-user jsmith@example.com "John Smith"
2.5.2.2. 创建团队
所需角色:组织管理员 (REGISTRY_WRITE_ADMIN_ROLE
)
语法
c:\> ngc org add-team <name> <description>
添加团队 A 的示例
c:\> ngc org add-team team_a "Team A"
|
2.5.2.3. 将用户添加到团队
所需角色:组织管理员 (REGISTRY_WRITE_ADMIN_ROLE
) 或团队管理员 (REGISTRY_WRITE_TEAM_ADMIN_ROLE
)
语法
c:\> ngc team add-user <email> <name>
将现有用户 John Smith 作为普通用户添加到团队 A 的示例
c:\> ngc team add-user jsmith@example.com "John Smith" --team team-a --role REGISTRY_WRITE_USER_ROLE
如果目标团队已在您当前的 NGC 配置中设置,则您不需要 --team 参数。
2.5.2.4. 在同一命令中创建团队并添加用户
所需角色:组织管理员 (REGISTRY_WRITE_ADMIN_ROLE
)
语法
c:\> ngc org add-user <email> <name> --team <name> --role <user-role>
邀请新用户 John Smith 作为团队管理员加入团队 A 的示例
c:\> ngc org add-user jsmith@example.com "John Smith" --team team-a --role REGISTRY_WRITE_TEAM_ADMIN_ROLE
如果目标团队已在您当前的 NGC 配置中设置,则您不需要 --team 参数。
2.5.2.5. 在同一命令中创建团队并添加用户
角色 | 服务 | 访问级别 |
---|---|---|
管理员 | ACE | 读取, 管理员, 写入 |
管理员 | 容器 | 读取, 管理员, 写入 |
管理员 | 数据集 | 读取, 管理员, 写入 |
管理员 | HELM | 读取, 管理员, 写入 |
管理员 | 作业 | 读取, 管理员, 写入 |
管理员 | 模型 | 读取, 管理员, 写入 |
管理员 | 模型脚本 | 读取, 管理员, 写入 |
管理员 | 组织 | 读取, 管理员, 写入 |
管理员 | 团队 | 读取, 管理员, 写入 |
管理员 | 用户 | 读取, 管理员, 写入 |
管理员 | 工作区 | 读取, 管理员, 写入 |
EGX_管理员 | EGX | 读取, 管理员, 写入 |
EGX_管理员 | 组织 | 读取, 管理员, 写入 |
EGX_管理员 | 团队 | 读取, 管理员, 写入 |
EGX_管理员 | 用户 | 读取, 管理员, 写入 |
EGX_读取 | EGX | 读取 |
EGX_读取 | 组织 | 读取 |
EGX_读取 | 团队 | 读取 |
EGX_用户 | EGX | 读取, 写入 |
EGX_用户 | 组织 | 读取, 写入 |
EGX_用户 | 团队 | 读取, 写入 |
REGISTRY_读取 | 容器 | 读取 |
REGISTRY_读取 | HELM | 读取 |
REGISTRY_读取 | 模型 | 读取 |
REGISTRY_读取 | 模型脚本 | 读取 |
REGISTRY_读取 | 组织 | 读取 |
REGISTRY_读取 | 团队 | 读取 |
REGISTRY_管理员 | 容器 | 读取, 管理员, 写入 |
REGISTRY_管理员 | HELM | 读取, 管理员, 写入 |
REGISTRY_管理员 | 模型 | 读取, 管理员, 写入 |
REGISTRY_管理员 | 模型脚本 | 读取, 管理员, 写入 |
REGISTRY_管理员 | 组织 | 读取, 管理员, 写入 |
REGISTRY_管理员 | 团队 | 读取, 管理员, 写入 |
REGISTRY_管理员 | 用户 | 读取, 管理员, 写入 |
REGISTRY_用户 | 容器 | 读取, 写入 |
REGISTRY_用户 | HELM | 读取, 写入 |
REGISTRY_用户 | 模型 | 读取, 写入 |
REGISTRY_用户 | 模型脚本 | 读取, 写入 |
REGISTRY_用户 | 组织 | 读取, 写入 |
REGISTRY_用户 | 团队 | 读取, 写入 |
USER_管理员 | 容器 | 读取, 管理员, 写入 |
USER_管理员 | HELM | 读取, 管理员, 写入 |
USER_管理员 | 模型 | 读取, 管理员, 写入 |
USER_管理员 | 模型脚本 | 读取, 管理员, 写入 |
USER_管理员 | 组织 | 读取, 管理员, 写入 |
USER_管理员 | 团队 | 读取, 管理员, 写入 |
USER_管理员 | 用户 | 读取, 管理员, 写入 |
用户 | ACE | 读取, 写入 |
用户 | 容器 | 读取, 写入 |
用户 | 数据集 | 读取, 写入 |
用户 | HELM | 读取, 写入 |
用户 | 作业 | 读取, 写入 |
用户 | 模型 | 读取, 写入 |
用户 | 模型脚本 | 读取, 写入 |
用户 | 组织 | 读取, 写入 |
用户 | 团队 | 读取, 写入 |
用户 | 工作区 | 读取, 写入 |
在过去的几年中,软件容器的使用量急剧增加,以简化数据中心应用程序的大规模部署。 容器封装了一个应用程序及其库和其他依赖项,以提供应用程序和服务的可重现且可靠的执行,而无需完整的虚拟机开销。
Docker 容器内的 GPU 支持使基于 GPU 的应用程序能够在多台机器之间移植,这与 Docker® 使基于 CPU 的应用程序能够跨多台机器部署的方式类似。
- Docker 容器
- Docker 容器是 Docker 镜像的一个实例。 一个 Docker 容器每个容器部署一个应用程序或服务。
- Docker 镜像
- Docker 镜像只是您在 nvidia-docker 容器中运行的软件(包括文件系统和参数)。
3.1. 什么是 Docker 容器?
Docker 容器是一种将 Linux 应用程序与其所有库、数据文件和环境变量捆绑在一起的机制,以便无论它在哪个 Linux 系统上运行以及在同一主机上的实例之间,执行环境始终相同。
与具有自己隔离内核的 VM 不同,容器使用主机系统内核。 因此,来自容器的所有内核调用都由主机系统内核处理。 DGX™ 系统使用 Docker 容器作为部署深度学习框架的机制。
Docker 容器是 Docker 镜像 的运行实例。
3.2. 为什么要使用容器?
使用容器的众多好处之一是,您可以将您的应用程序、依赖项和环境变量一次性安装到容器镜像中; 而不是在您运行的每个系统上都安装。 此外,使用容器的主要好处还包括:
- 将您的应用程序、依赖项和环境变量一次性安装到容器镜像中; 而不是在您运行的每个系统上都安装。
- 不存在与其他用户安装的库冲突的风险。
- 容器允许在同一服务器上使用多个不同的深度学习框架,这些框架可能具有冲突的软件依赖项。
- 将您的应用程序构建到容器中后,您可以在许多其他地方(尤其是服务器)运行它,而无需安装任何软件。
- 传统的加速计算应用程序可以容器化并部署在较新的系统上,无论是在本地还是在云中。
- 可以将特定的 GPU 资源分配给容器,以实现隔离和更好的性能。
- 您可以轻松地跨不同环境共享、协作和测试应用程序。
- 给定深度学习框架的多个实例可以并发运行,每个实例都分配有一个或多个特定的 GPU。
- 容器可用于解决应用程序之间的网络端口冲突,方法是在启动容器时将容器端口映射到特定的外部可见端口。
3.3. 从 Docker 命令行使用 NGC 容器注册表
3.3.1. 访问 NGC 容器注册表
您可以通过从客户端计算机运行 Docker 命令来访问 NGC 容器注册表。 您不限于使用 NVIDIA DGX 平台来访问 NGC 容器注册表。 您可以使用任何已安装 Docker 且具有互联网访问权限的 Linux 计算机。
在访问 NGC 容器注册表之前,请确保满足以下先决条件:
- 您的 NGC 帐户已激活。
- 您拥有一个 NGC API 密钥,用于验证您对 NGC 容器注册表的访问权限。 有关更多信息,请参阅 生成 NGC API 密钥。
- 您以管理员用户身份登录到您的客户端计算机。
另一种允许其他用户在不授予他们
sudo
权限且无需在每个 docker 命令之前键入sudo
的情况下运行容器的方法是将每个用户添加到 docker 组,使用命令sudo usermod -aG docker $USER
虽然这种方法更方便且常用,但安全性较低,因为任何可以向 docker 引擎发送命令的用户都可以提升权限并运行 root 级别操作。 如果您选择使用此方法,请仅将您信任 root 权限的用户添加到 docker 组。
- 登录到 NGC 容器注册表。
docker login nvcr.io
- 当提示您输入用户名时,输入以下文本
$oauthtoken
$oauthtoken 用户名是一个特殊用户名,指示您将使用 API 密钥而不是用户名和密码进行身份验证。
- 当提示您输入密码时,输入您的 NGC API 密钥,如下例所示。
Username: $oauthtoken Password: my-api-key
提示当您按照 生成 NGC API 密钥 中所述获取 API 密钥时,请将其复制到剪贴板,以便在提示您输入密码时可以将 API 密钥粘贴到命令 shell 中。
为了方便起见,可以将以上三个步骤合并为一个命令
docker login -u \$oauthtoken -p $NGC_API_KEY nvcr.io
3.3.2. 将 NVIDIA 容器镜像上传到您的系统
DGX 系统上没有预加载容器镜像。 相反,容器可以从 NGC 容器注册表中下载。 NVIDIA 提供了许多容器可从 NGC 容器注册表中下载。 如果您的组织为您提供了对任何自定义容器的访问权限,您也可以下载这些容器。
在加载 NGC 容器镜像之前,请确保满足以下先决条件:
- 您对包含容器镜像的注册表空间具有读取访问权限。
- 您已登录到 nvcr.io,如 访问 NGC 容器注册表 中所述。
要浏览 NGC 容器注册表中可用的容器,请使用 Web 浏览器登录到 NGC 网站上的 NGC 帐户。
- 运行命令以从注册表中下载您想要的容器。
sudo docker pull registry/registry-space/repository:tag
- 注册表
- 容器注册表的 URL,对于 NGC 容器注册表,它是
nvcr.io
。 - 注册表空间
- 注册表中包含容器的空间的名称。 例如,
nvidia
是 NVIDIA 提供的容器的注册表空间。 - 仓库
- 仓库是同名容器的集合,但通过其标签彼此区分。 可以将其视为主要容器名称。
- 标签
- 标识容器版本的标签。
- 要确认容器已下载,请列出您系统上的 Docker 镜像。
sudo docker images
-
从
nvidia
注册表空间拉取tensorflow:18.06-py3
的示例。~$ sudo docker pull nvcr.io/nvidia/tensorflow:18.06-py3
-
从
acme
组织注册表空间拉取标记为v2.0
的自定义容器镜像的示例。~$ sudo docker pull nvcr.io/acme/custom-image:v2.0
-
从
acme/team
团队注册表空间拉取标记为v2.0
的自定义容器镜像的示例。~$ sudo docker pull nvcr.io/acme/zoom/custom-image:v2.0
3.3.3. 标记和推送容器镜像
如果您对注册表空间具有写入访问权限,则可以将自定义镜像上传到注册表。 上传容器镜像首先要标记镜像,然后将镜像推送到注册表空间。
在以下示例中,用户是 Acme (mxa8oi8djw7m) 组织的成员,也是 Acme 组织内的 Zoom 团队的成员。 有关如何查找您的组织名称,请参阅 以组织所有者身份加入组织。
-
标记示例
此示例将
mxa8oi8djw7m/zoom
团队空间中的本地容器镜像mycaffe
标记为v1.5
。~$ sudo docker tag mycaffe nvcr.io/mxa8oi8djw7m/zoom/mycaffe:v1.5
-
推送示例
此示例将版本
v1.5
的mycaffe
本地容器镜像推送到mxa8oi8djw7m/zoom
团队空间~$ sudo docker push nvcr.io/mxa8oi8djw7m/zoom/mycaffe:v1.5
3.4. 使用容器注册表
ngc registry image
命令让您可以从注册表访问即用型 GPU 加速容器镜像。
3.4.1. 查看容器镜像信息
有几个命令可用于查看有关可用容器镜像的信息。
列出容器镜像
|
“已解锁”权限表示无需 API 密钥即可访问的镜像。
要查看有关特定镜像的详细信息,请指定镜像和标签。
示例:
|
3.4.3. 拉取容器镜像
使用 NGC 注册表 CLI,您可以将镜像拉取(下载)到您的系统。
要将镜像拉取到您的注册表空间,请指定镜像,以及可选的标签。
C:\>ngc registry image pull <image-name>[:<tag>]
如果未指定标签,则将使用标签 'latest
'。
推送容器镜像
使用 NGC 注册表 CLI,您可以将镜像推送(上传)到您的注册表空间。
要将镜像推送到您的注册表空间,请指定镜像,以及可选的标签。
C:\>ngc registry image push <image-name>[:<tag>]
如果未指定标签,则将使用标签 'latest
'。
3.4.4. 删除容器镜像
使用 NGC 注册表 CLI,您可以从您的注册表空间中删除不再需要的镜像。
要删除镜像的所有版本,请指定镜像。
C:\>ngc registry image remove <image-name>
要删除特定镜像版本,请指定镜像和标签。
C:\>ngc registry image remove <image-name>:<tag>
3.5. 更新容器元数据
您可以在《产品页面指南》中找到有关如何填写容器元数据的最佳实践。
3.5.1. 通过 NGC 网站更新容器元数据
执行以下说明以使用 NGC 网站更新容器元数据。
- 单击容器产品页面右上角的垂直省略号以显示实体操作菜单。
- 从实体操作菜单中选择编辑详细信息。
- 根据需要更新容器描述和所有其他容器元数据。
- 要保存您的更改,请再次单击垂直省略号以显示实体操作菜单,然后选择保存。
3.5.2. 使用 NGC CLI 更新容器元数据
使用 NGC 注册表 CLI,您可以更新容器描述和所有其他容器元数据。
使用 NGC 注册表 CLI,您可以更新容器描述和所有其他容器元数据。
要更新容器元数据,请使用以下命令。
ngc registry image update [--ace <name>] [--built-by <name>] [--debug]
[--desc <desc>] [--format_type <fmt>]
[--label <label>] [--logo <url>] [--org <name>]
[--overview <file.md>] [--publisher <publisher>]
[--team <name>] [-h]
<image>[:<tag>]
指定一个命名参数(将要更新的字段,以及用于更新字段的值)以及一个位置参数(容器镜像的名称和可选的标签)。
位置参数
-
<镜像>[:<标签>]
-
镜像仓库或标记镜像的名称,<镜像>[:<标签>]
命名参数
-
--debug
-
启用调试模式。
-
--format_type
-
可选值:ascii、csv、json。 指定输出格式类型。 支持的格式为:['ascii'、'csv'、'json']。 只有生成表格数据的命令才支持 csv 格式。 默认值:ascii。
-
--org
-
指定组织名称。 使用 "--org no-org" 可覆盖其他来源并指定无组织。 默认值:当前配置。
-
--ace
-
指定 ACE 名称。 使用 "--ace no-ace" 可覆盖其他来源并指定无 ACE。 默认值:当前配置。
-
--team
-
指定团队名称。 使用 "--team no-team" 可覆盖其他来源并指定无团队。 默认值:当前配置。
-
--desc
-
目标镜像的描述。
-
--overview
-
镜像的文档(文本或 markdown 文件)。
-
--label
-
用于描述仓库的标签。 可以多次使用。
-
--logo
-
指向仓库徽标的 URL。
-
--publisher
-
发布镜像的个人或实体。
-
--built-by
-
构建容器镜像的人员。
指定镜像,以及可选的标签。
示例:更改容器镜像的描述
要查看现有容器元数据,请使用以下命令。
$ ngc registry image info nvidia/testcontainer
--------------------------------------------------
Image Repository Information
Name: testcontainer
Short Description: Test description.
Built By: Kristina
Publisher: NVIDIA
Logo: www.logo.com/logo.png
Labels: Machine Learning, Classification, Retail
Public: No
Last Updated: May 8, 2020
Latest Image Size: 60.27 MB
Latest Tag: 3.0
Tags:
3.0
2.0
1.0
--------------------------------------------------
使用以下命令更新容器描述。
$ ngc registry image update --desc "A test container image with useful tools." nvidia/testcontainer
--------------------------------------------------
Updating repository metadata
Repository metadata updated.
要检查更新是否成功,请再次运行 info 命令
$ ngc registry image info nvidia/testcontainer
--------------------------------------------------
Image Repository Information
Name: testcontainer
Short Description: A test container image with useful tools.
Built By: Kristina
Publisher: NVIDIA
Logo: www.logo.com/logo.png
Labels: Machine Learning, Classification, Retail
Public: No
Last Updated: May 8, 2020
Latest Image Size: 60.27 MB
Latest Tag: 3.0
Tags:
3.0
2.0
1.0
--------------------------------------------------
$ ngc registry image update Command overview
3.6. NGC 容器镜像的多架构支持
运行镜像时,docker 将自动选择与您的操作系统和架构匹配的镜像变体。
NGC 容器注册表现在允许用户利用 docker multi-architecture。 它可以支持多种架构,这意味着单个镜像可能包含针对不同架构(如 ARM、x86、Power 等)的变体;有时也包含针对不同操作系统(如 Windows)的变体。
清单列表和标签
NGC 容器注册表现在支持清单列表架构 application/vnd.docker.distribution.manifest.list.v2+json,从而能够为每个镜像分配多个标签。 有关清单列表的检查,请阅读 此处 的说明。
NGC UI 允许您浏览受支持的架构。

4.1. 使用 NGC CLI 创建新的 NGC 模型
发出 ngc registry model create -h
以查看可用选项的描述以及用于创建模型的命令描述。
此示例使用所有必需和可选参数创建一个名为“Final Review Model”的新模型
$ ngc registry model create \
--application OBJECT_DETECTION \
--format "cpkt"
--framework TensorFlow\
--precision FP16 \
--short-desc "A model for object detection using TensorFlow" \
--built-by "My Name" \
--display-name "Final Review Model" \
--label "fast" --label "sparkly" \
--owner-name "MyTeam" \
--overview-filename /path/to/my/overview/file.md \
--publisher "NVIDIA MyTeam" \
--public-dataset-license <license> \
--public-dataset-link "www.example.com" \
--public-dataset-name "200_10x200_images" \
nvidia/myteam/final_review_model
4.2. 使用 NGC 网站创建新模型
要创建新的模型资产,请从左上角的应用菜单中选择私有注册表。 然后,从左侧导航菜单中选择模型。 单击页面右上角的创建模型。

创建模型页面将引导您完成创建新模型资产的过程。



一旦此表单完成并提交,您将可以选择创建模型版本。 此步骤可以跳过并在以后完成。 有关更多信息,请参阅“上传新版本”。
字段 | 验证 | 描述 | 选项 |
---|---|---|---|
名称 | 字符串 | 模型的名称 | - |
发布者 | 字符串 | 拥有资产的个人的姓名(下拉菜单) | - |
描述 | 字符串 | 模型的简短描述 | - |
概述 | Markdown (字符串) | 用于共享有关模型的更多详细信息/使用说明的位置 | - |
标签 | 字符串 (列表) | 使资产更易于发现的标签 | - |
用例 | 字符串 | 预期用例 | 注释, 自动语音识别, 图像分类, 图像分割, 图像合成, 自然语言处理, 对象检测, 翻译 |
框架 | 字符串 | 用于构建模型的深度学习框架 | Caffe, Clara, NeMo/PyTorch, PyTorch, TensorFlow, TensorRT, Transfer Learning Toolkit |
模型格式 | 字符串 | 权重文件的输出格式 | caffemodel, HDF5, ONNX, protobuf, PyTorch PTH, SavedModel, TensorFlow CKPT, TensorRT Plan, TLT |
精度 | 字符串 | 使用的训练精度 | AMP, FP16, FP32, INT8 |
4.3. 使用 NGC CLI 上传新的 NGC 模型版本
发出 ngc registry model upload-version -h
以查看可用选项的描述以及用于上传模型版本的命令描述。 如果发生终止或失败,重新运行相同的命令将自动从最后一个检查点恢复。
使用所有必需和可选参数为上一节中创建的模型创建模型版本 1 的示例。
$ ngc registry model upload-version \
--accuracy-reached 96.5 \
--batch-size 2000 \
--gpu-model "V100" \
--memory-footprint 4GB \
--num-epochs 100 \
--desc "A new and exciting version: 1" \
--link "www.example.com/model/v1" \
--link-type Other \
--owner-name "My Name" \
--source path/to/my/model/version/dir \
nvidia/myteam/final_review_model:1
添加自定义指标
您还可以为每个模型版本上传自定义指标表。 每个表最多可以容纳十二个键值属性对。 每个模型版本最多三个表。
指标表定义为 JSON 表 - 每个文件一个表。 您可以使用 --metrics-file
将表添加到上传中。
一些指标文件示例
zeppelin_table.json
{
"name": "ZeppelinTable",
"attributes": [
{"key": "Robert", "value": "Plant"},
{"key": "Jimmy", "value": "Page"},
{"key": "John", "value": "Bonham"},
{"key": "John", "value": "Paul Jones"}
]
}
rhcp_table.json
{
"name": "RHCPTable",
"attributes": [
{"key": "Anthony", "value": "Keidis"},
{"key": "Michael", "value": "Balzary"},
{"key": "John", "value": "Frusciante"},
{"key": "Chad", "value": "Smith"}
]
}
上述示例包含自定义指标表
$ ngc registry model upload-version \
--accuracy-reached 95.5 \
--batch-size 2000 \
--gpu-model "SomeGPUModel" \
--memory-footprint 4GB \
--num-epochs 100 \
--desc "A new and exciting version: 1" \
--link "www.example.com/model/v1" \
--link-type Other \
--owner-name "My Name" \link-type
--metrics-file zeppelin_table.json \
--metrics-file rhcp_table.json \
--source path/to/my/model/version/dir \
nvidia/myteam/final_review_model:1
4.4. 使用 NGC 网站上传 NGC 模型版本
- 通过上面讨论的“模型创建”页面
- 从任何模型的“模型详细信息”页面

从下面显示的版本创建页面,您可以指定有关您正在上传的特定版本的所有相关信息。 您还可以直接从浏览器上传文件。

完成表单并上传任何相关文件后,提交将发布内容的新版本。
添加自定义指标
随着深度学习模型的发展,我们意识到您可能还想传达不同的信息来区分不同的版本。 使用 NGC 模型注册表,您可以指定最多 36 个不同的指标,以帮助人们找到合适的版本。
创建版本时,只需“添加自定义指标”即可创建表。

- 模型名称 - 字符串 - 您希望为其上传版本的模型的名称
- 所有者 - 字符串 - 拥有资产的个人的姓名(下拉菜单)
- 版本 - 字符串 - 一种识别该版本的方式(我们建议使用 SemVer)
- 概述 - Markdown - 用于共享有关模型的更多详细信息/使用说明的位置(在所有版本之间共享)
- Epoch 数量 - 字符串 - 训练的 Epoch 数量(或 N/A)
- 批大小 - 字符串 - 训练批大小(或 N/A)
- GPU 模型 - 下拉菜单 - 用于训练的 GPU 系列
- 达到的准确率 - 字符串 - 模型的准确率(或 N/A)
- 内存占用 - 字符串 - 模型使用的内存占用
- 相关资源 - 您可以选择为您的模型指定其他资源
- 链接文本 - 下拉菜单 - 用于显示其他资源的文本,例如容器或代码示例,以随附您的版本。
- URL - 字符串 - 其他资源的 URL
输入键值对后,选择添加表。
4.5. 使用 NGC CLI 编辑 NGC 模型信息
发出 ngc registry model update -h
以查看可用选项的描述以及用于编辑模型或模型版本的命令描述。
更新模型的概述文件的示例。
$ ngc registry model update \
--overview-filename "path/to/my/updated/overview/file.md" \
nvidia/myteam/final_review_model
更新模型版本的达到的准确率和内存占用的示例。
$ ngc registry model update \
--accuracy-reached 96.5 \
--memory-footprint 16GB \
nvidia/myteam/final_review_model:1
- ngc registry model info nvidia/model-name
- 显示有关模型的信息
- ngc registry model info nvidia/model-name:version
- 显示有关模型版本的信息
- ngc registry model list
- 列出可用模型
- ngc registry model download-version nvidia/model-name:version
- 下载指定的模型版本
- ngc registry model remove nvidia/model-name:version
- 删除模型版本
- ngc registry model remove nivida/model-name
- 删除模型
4.6. 使用 NGC 网站编辑 NGC 模型信息
要编辑模型的元数据或概述选项卡,只需从模型详细信息页面右上角选择“编辑”。

然后,您可以编辑模型的任何详细信息,甚至可以根据需要删除模型。

5.1. 开始之前
使用 NGC 注册表 CLI,您可以更新容器描述和所有其他容器元数据。
确保您知道您的上下文,或者您登录到哪个组织和团队。 这决定了您的模型将上传到哪个注册表空间。 您可以通过输入以下内容来执行此操作
$ ngc config current
如果您打算将模型上传到不同的注册表空间,或者如果没有报告团队并且您打算上传到团队空间,那么您可以
- 使用 ngc config set 切换到另一个组织或团队。
$ ngc config set [--org <new org>][--team <new team>]
或
- 在每个命令中设置上下文,使用相同的
--org
或--team
选项。
5.2. 上传资源
- 在注册表中创建资源。 这是模型的占位符,包含有关资源的元数据。 创建资源示例“
cmr_gnmt
”。$ ngc registry resource create nvidia/cmr_gnmt
$ ngc registry resource create -h
- 上传您的资源文件。
每次将文件上传到同一资源时,上传都会成为资源的唯一版本。 您可以在上传时指定版本,或让 CLI 自动递增版本。
示例:上传资源“cmr_gnmt”的版本 1(为简单起见,省略了必需参数)。
$ ngc registry resource upload-version nvidia/cmr_gnmt:first-upload [--source .<directory or file path for the model contents>]
----------------------------------------------------
Transfer id: cmr_gnmt[version=first-upload] Upload status: Completed.
Uploaded local path: C:\resource
Total files uploaded: 26
Total uploaded size: 134.48 KB
Started at: 2019-03-15 17:18:09.083000
Completed at: 2019-03-15 17:18:21.698000
Duration taken: 12s seconds
----------------------------------------------------
5.3. 更新资源
您可以更新或修订资源或资源版本的信息。
以下是基本命令。
$ ngc registry resource update <org>/[<team>/]<resource-name[:version]>
要更新信息,请使用可选参数来指定要更改的信息。 要查看参数列表,请运行
$ ngc registry resource update -h
5.4. 资源命令
NGC 资源的完整可选命令列表可以在此处查看。
-
--accuracy-reached <准确率>
- 目标版本达到的准确率。
-
--ace <名称>
- 指定 ACE 名称。 使用 "--ace no-ace" 可覆盖其他来源并指定无 ACE。 默认值:当前配置
-
--advanced-filename <路径>
-
高级指南。 提供包含资源“高级指南”的文件路径。
-
--application <应用>
-
目标模型应用。 允许的值:CLASSIFICATION, OBJECT_DETECTION, SEGMENTATION, TRANSLATION, TEXT_TO_SPEECH, RECOMMENDER, SENTIMENT, NLP, KUBEFLOW_PIPELINE, OTHER。
-
--batch-size <大小>
-
目标版本的批大小。
-
--built-by <名称>
-
目标模型的构建者。
-
--debug
-
启用调试模式。
-
--desc <描述>
-
目标版本的完整描述。
-
--display-name <显示名称>
-
显示名称。
-
--format <格式>
-
目标模型的格式。
-
--format_type <格式类型>
-
指定输出格式类型。 支持的格式为:ascii、csv、json。 只有生成表格数据的命令才支持 csv 格式。 默认值:ascii
-
--framework <框架>
-
用于训练目标模型的框架。 允许的值:TensorFlow, Caffe2, CNTK, Torch, PyTorch, MXNet, Keras, Other。
-
--gpu-model <模型>
-
用于训练目标版本的 GPU。
-
--label <标签>
-
资源的标签。要指定多个标签,请使用多个 --label 参数。
-
--logo <url>
-
资源徽标图像的 URL。
-
--memory-footprint <footprint>
-
目标版本的内存占用。
-
--num-epochs <num>
-
目标版本的训练周期数。
-
--org <name>
-
指定组织名称。使用“--org no-org”以覆盖其他来源并指定无组织。默认值:当前配置
-
--overview-filename <path>
-
概述。提供包含资源概述的文件路径。
-
--performance-filename <path>
-
性能数据。提供包含资源性能数据的文件路径。
-
--precision <prec>
-
训练目标模型时使用的精度。允许的值:FP16、FP32、INT8、FPBOTH、OTHER。
-
--public-dataset-license <lcs>
-
目标模型中使用的公共数据集的许可证。
-
--public-dataset-link <url>
-
目标模型中使用的公共数据集的链接。
-
--public-dataset-name <name>
-
目标模型中使用的公共数据集的名称。
-
--publisher <name>
-
目标模型的发布者。
-
--quick-start-guide-filename <path>
-
快速入门信息。提供包含资源“快速入门指南”信息的文件路径。
-
--release-notes-filename <path>
-
发行说明。提供包含资源发行说明的文件路径。
-
--setup-filename <path>
-
安装说明。提供包含资源安装说明的文件路径。
-
--short-desc <desc>
-
简短描述。
-
--team <name>
-
指定团队名称。使用“--team no-team”以覆盖其他来源并指定无团队。默认值:当前配置
5.5. 删除资源
只有管理员和模型的创建者才能删除模型。
确保上下文设置为要删除的资源的适当上下文。例如,如果要删除在 team_A 空间中创建的模型,请确保将上下文设置为 --team team_A。
要删除资源(包括资源的所有版本),请输入以下命令。
$ ngc registry resource remove <org>/[<team>/]<resource>
要仅删除资源的特定版本,请输入以下命令。
$ ngc registry resource remove <org>/[<team>/]<resource:version>
本文档介绍如何使用 NGC 注册表来管理 Helm Chart。
6.1. NGC 和 Helm Chart 简介
Helm 是一个在 Kubernetes 之上运行的应用程序包管理器。它允许您创建 Helm Chart,您可以在其中定义、安装和升级 Kubernetes 应用程序。
本文档介绍如何使用 NGC 注册表与组织或团队中的其他人共享 Helm Chart。
先决条件
- 已安装 Helm v 2.x 或 3.x
仅当您自己创建或打包 Helm Chart 时才需要此项。否则不需要。
- NGC 组织帐户
有关说明,请参阅入门部分。
下面引用的资产 ngcdocstest
仅为示例目的而创建。它仅旨在作为指南,而不是将 Helm 资产发布到 NGC 的要求。
6.2. 创建和打包 Helm Chart
本节介绍如何打包 Helm Chart 以发布到 NGC。
为了将您的 Chart 发布到 NGC,无需“部署” Helm Chart。Chart 的 .tgz
文件可以发布到 NGC 中的组织,而无需先部署到 GPU 基础设施。
- 通过发出以下命令创建 Helm Chart 模板。
$ helm create <chart-name>
<<i>chart-name</i>>
是您选择的名称。示例:
$ helm create ngcdocstest
- 使用您的 Helm Chart 数据修改模板的内容。
- 通过发出以下命令打包 Helm Chart。
$ helm package <chart-name>
$ helm package ngcdocstest
ngcdocstest-0.1.0.tgz
。
6.3. 使用 NGC Web UI 管理 Helm Chart
6.3.1. 查看 Helm Chart 列表并获取 Fetch 命令
- 查看 Helm Chart 存储库的内容。
- 获取存储库中特定 Helm Chart 的推送命令。
- 从浏览器登录到 https://ngc.nvidia.com。
- 如果您是多个组织的成员,请选择包含您感兴趣的 Helm Chart 的组织,然后单击登录。
- 从左侧导航窗格中单击 Helm Chart。
该页面显示每个可用 Helm Chart 的卡片。
- 选择其中一张 Helm Chart 卡片。
每个 Helm Chart 的页面都提供有关该 Chart 的信息。
“Fetch 命令”部分显示用于下载 Helm Chart 包的命令。
单击右上角的Fetch下载按钮或 fetch 命令旁边的复制图标,将 fetch 命令复制到剪贴板。
文件浏览器选项卡可让您查看 Helm Chart 包的文件内容。
6.3.2. 使用 NGC Web UI 添加 Helm Chart
确保您拥有在您的组织和/或团队中创建 Helm Chart 的正确权限。您需要拥有“注册表用户”或“注册表管理员”用户角色。有关详细信息,请参阅NGC 注册表用户角色。
在将 Chart 上传到您组织的注册表之前,您必须首先创建一个记录,其中包含有关 Chart 的基本信息。
- 单击左侧菜单的“私有注册表”部分下的实体创建中心。
- 单击创建 Helm Chart。
- 填写有关您的 Helm Chart 的信息。
- 单击“创建 Helm Chart”。
- 要将 Helm Chart 推送(上传)到您的组织空间,请使用 NGC CLI。
示例:
$ ngc registry chart push nvidian/ngcdocstest:0.1.0
有关详细信息,请参阅推送 Helm Chart。
从网站更新 Helm Chart 页面
6.3.4. 从 Web UI 中删除 Helm Chart
确保您拥有在您的组织和/或团队中创建 Helm Chart 的正确权限。您需要拥有“注册表管理员”用户角色。有关详细信息,请参阅NGC 注册表用户角色。
6.4. 使用 NGC CLI 管理 Helm Chart
6.4.1. 在组织中搜索可用的 Helm Chart
NGC CLI 支持通配符搜索,使用标准的 Unix shell 风格的通配符。例如,要查看您的组织中所有可用的 Chart 包的列表,请运行以下命令。
$ ngc registry chart list *<org_name>*
示例:
$ ngc registry chart list *nvidian*
这将返回名称中任何位置包含“nvidian
”的所有 Chart。
+---------------+---------------+---------+-----------+-----------------+-------------+--------------+---------------+
| Name | Repository | Version | Size | Created By | Description | Created Date | Last Modified |
+---------------+---------------+---------+-----------+-----------------+-------------+--------------+---------------+
| fluentd-elasti| nvidian/fluen | 4.8.1 | 245.61 KB | stg-3emmf14t83v | Changed sho | Nov 15, 2019 | Dec 17, 2019 |
| csearch | ntd-elasticse | | | d0s5v81qasfi479 | rt descript | | |
| | arch | | | | ion | | |
| clara | nvidian/repo1 | 0.0.1 | 65.66 KB | stg-p6urlvepnjb | | Feb 07, 2020 | Mar 12, 2021 |
| | /clara | | | q06qfis28l5m6a4 | | | |
6.4.2. Fetch Helm Chart
要下载(或“pull”)Chart 包,请运行以下命令。注意:如果未指定版本,则将 pull 最新版本。
$ ngc registry chart pull org/[team/]chart[:version]
示例:
$ ngc registry chart pull nvidian/nginix-ingress:1.2.3
(pull 版本 1.2.3)
$ ngc registry chart pull nvidian/nginix-ingress
(pull 最新版本)
6.4.3. 将 Helm Chart 添加到私有注册表
确保您拥有在您的组织和/或团队中创建 Helm Chart 的正确权限。您需要拥有“注册表用户”或“注册表管理员”用户角色。有关详细信息,请参阅NGC 注册表用户角色。
创建 Chart
在将 Chart 上传到您组织的注册表之前,您必须首先创建一个记录,其中包含有关 Chart 的基本信息。您可以指定多个值(发出 ngc registry chart create --help
以查看所有值),但您至少必须提供 Chart 的简短描述。
$ ngc registry chart create <org>/[<team>/]<chart_name> --short-desc <description>
示例
$ ngc registry chart create nvidian/ngcdocstest --short-desc "Doc testing chart"
Successfully created chart 'nvidian/ngcdocstest'.
--------------------------------------------------
Chart Information
Name: ngcdocstest
Short Description: Doc testing chart
Display Name:
Team:
Publisher:
Built By:
Labels:
Logo:
Created Date: 2021-03-22 18:48:36 UTC
Updated Date: 2021-03-22 18:48:36 UTC
Read Only: False Latest Version ID:
Latest Version Size (bytes):
Overview:
--------------------------------------------------
更新 Chart
您可以使用 update 命令在创建 Chart 后更新有关 Chart 的元数据。
$ ngc registry chart update <org>/[<team>/]<chart_name> --<property> <value>
示例:
$ ngc registry chart update nvidian/ngcdocstest --publisher "test account" --display-name "Helm Demo Chart" --built-by "my team"
Successfully updated chart 'nvidian/ngcdocstest'.
--------------------------------------------------
Chart Information
Name: ngcdocstest
Short Description: Doc testing chart
Display Name: Helm Demo Chart
Team:
Publisher: test account
Built By: my team
Labels:
Logo:
Created Date: 2021-03-22 18:48:36 UTC
Updated Date: 2021-03-22 18:52:01 UTC
Read Only: False
Latest Version ID: 0.1.0
Latest Version Size (bytes): 10664
Overview:
--------------------------------------------------
6.4.4. 获取有关 Helm Chart 的信息
您可以随时通过运行 info
命令来查看有关 Chart 的信息
示例:
$ ngc registry chart info nvidia/ngcdocstest
--------------------------------------------------
Chart Information
Name: ngcdocstest
Short Description: Doc testing chart
Display Name: Helm Demo Chart
Team: Publisher: test account
Built By: my team
Labels:
Logo:
Created Date: 2021-03-22 18:48:36 UTC
Updated Date: 2021-03-22 18:54:44 UTC
Read Only: False
Latest Version ID: 0.1.0
Latest Version Size (bytes): 10664
Overview: --------------------------------------------------
6.4.5. 推送 Helm Chart
要将 Helm Chart 推送(上传)到您的组织空间,请发出以下命令。
$ ngc registry chart push <org>/[<team>/]<chart_name>:<version>
示例:
$ ngc registry chart push nvidian/ngcdocstest:0.1.0
Successfully pushed chart version 'ngcdocstest:0.1.0'.
--------------------------------------------------
Chart Version Information
Created Date: 2021-03-22 18:54:44 UTC
Updated Date: 2021-03-22 18:54:44 UTC
Version ID: 0.1.0
Total File Count: 11
Total Size: 10.41 KB
Status: UPLOAD_COMPLETE
--------------------------------------------------
6.4.6. 列出 Helm Chart 版本
要查看 Chart 的所有可用版本的列表,请指定 Chart 名称,并对版本使用通配符“*
”。
示例:
$ ngc registry chart list nvidian/nginx-ingress:*
+---------+------------+-----------+--------------+
| Version | File Count | File Size | Created Date |
+---------+------------+-----------+--------------+
| 0.8.0 | 27 | 181.94 KB | Mar 12, 2021 |
| 1.0.0 | 25 | 149.51 KB | Oct 02, 2020 |
| 0.0.6 | 25 | 149.51 KB | Oct 02, 2020 |
| 0.0.5 | 25 | 149.51 KB | Oct 02, 2020 |
| 0.6.0 | 25 | 149.51 KB | Sep 17, 2020 |
| 0.6.1 | 25 | 149.51 KB | Sep 17, 2020 |
| 1.26.2 | 68 | 109.19 KB | Feb 08, 2020 |
+---------+------------+-----------+--------------+
6.4.7. 从私有注册表中删除 Helm Chart
确保您拥有在您的组织和/或团队中创建 Helm Chart 的正确权限。您需要拥有“注册表管理员”用户角色。有关详细信息,请参阅NGC 注册表用户角色。
如果您是管理员,则可以运行以下命令删除 Chart 的特定版本
$ ngc registry chart remove <org>/[<team>/]<chart_name>:<version>
以下示例仅删除版本 0.1.0
$ ngc registry chart remove nvidian/ngcdocstest:0.1.0
以下示例删除有关 Chart 的所有版本和数据
$ ngc registry chart remove nvidian/ngcdocstest
如果您未指定版本,则将删除 Chart 的每个版本以及 Chart 元数据。
示例:
$ ngc registry chart remove nvidia/ngcdocstest
Are you sure you would like to remove nvidia/ngcdocstest? [y/n]y
Successfully removed chart version 'nvidia/ngcdocstest:0.1.0'.
Successfully removed chart 'nvidia/ngcdocstest'.
6.5. 使用 NGC API 管理 Helm Chart
6.5.1. 更新 Helm Chart 页面上的信息
NGC API 允许您指定有关您的 Helm Chart 的信息。使用 NGC API Explorer 页面(URL:https://docs.ngc.nvidia.com/models/index.html#!/Artifacts/updateArtifactInOrgUsingPATCH)。您可以使用该页面构建 JSON 文件,以便在 CURL 命令中使用。
可以编辑以下页面元素。
页面元素 | JSON 字段 | 描述 |
---|---|---|
Helm Chart 名称 | displayName | Helm Chart 的名称,显示在图块和 Helm Chart 页面的标题中 |
发布者 | publisher | 负责创建资产的组织/实体 |
徽标 | logo | 用作资产徽标的图像的 URL |
描述 | shortDescription | Helm Chart 的简短描述 |
标签 | labels | 用于增强搜索结果的标签 |
概述选项卡 | description | “概述”选项卡的内容,可让发布者传达其他信息 |
JSON 列显示了使用 NGC API 更新页面时要使用的相应 JSON 字段。以下显示了 JSON 文件中的相关字段。
{ "attributes": [
{
"key": "string",
"value": "string"
}
],
"builtBy": "string",
"description": "string",
"displayName": "string",
"labels": [
"string" ],
"logo": "string",
"publisher": "string",
"shortDescription": "string"
}
示例
以下显示了 JSON 值的示例。
{ "builtBy": "NVIDIA",
"description": "#NGC Docs Chart",
"displayName": "NGC DOCS CHART TEST",
"labels": [
"Helm Chart", "Documentation"
],
"shortDescription": "This charts is for the docs!"
}
以下是 CURL 命令的示例。
curl -X PATCH --header 'Content-Type: application/json' --header 'Accept: application/json' --header 'Authorization: Bearer <<BEARER_TOKEN>> -d '{ "builtBy": "NVIDIA", "description": "#Le Chart", "displayName": "NGC DOCS TEST", "labels": [ "Helm Chart", "Documentation" ], "shortDescription": "This chart is for the docs!" }' 'https://api.ngc.nvidia.com/v2/org/nvidian/helm-charts/ngcdocstest'
6.5.2. 使用 NGC API 删除 Helm Chart
要从您的组织或团队中删除 Helm Chart,您必须使用 NGC API。有关相关 API 的描述,请参阅https://docs.ngc.nvidia.com/api/index.html#!/Model/proxyDeleteUsingDELETE。
要从组织空间中删除 Helm Chart,请发出以下命令
$ curl -X DELETE --header 'Accept: application/json' --header 'Authorization: Bearer <Bearer Token>' 'https://api.ngc.nvidia.com/v2/org/<org-name>/helm-charts/<chart-name>’
要从团队空间中删除 Helm Chart,请发出以下命令
$ curl -X DELETE --header 'Accept: application/json' --header 'Authorization: Bearer <Bearer Token>' 'https://api.ngc.nvidia.com/v2/org/<org-name>/team/<team-name>helm-charts/<chart-name>’
6.6. 使用 Helm CLI 管理 Helm Chart
6.6.1. 设置 NGC Helm 存储库
- 获取 NGC API 密钥。
有关说明,请参阅生成 NGC API 密钥。
- 导出 API 密钥以在命令中使用。
$ export NGC_API_KEY=<your-api-key>
- 将 NGC 组织添加到您的 Helm 存储库。
$ helm repo add <repo-name> https://helm.ngc.nvidia.com/<org-name> --username=\$oauthtoken --password=$NGC_API_KEY
<<i>repo-name</i>>
是您选择的名称,您将通过该名称引用存储库。
6.6.2. 搜索可用的 Helm Chart
要查看您的组织中可用的 Chart 包的列表,请发出以下命令。
$ helm search <repo-name>
6.6.3. Fetch Helm Chart
要从存储库下载(或“fetch”)Helm Chart 包,请发出以下命令。
$ helm fetch <repo-name>/<chart-name>
6.6.4. 将 Helm Chart 添加到私有 NGC 组织/团队
这些说明假定已安装 Helm push 插件。要安装插件,请发出以下命令。
$ helm plugin install https://github.com/chartmuseum/helm-push
要将 Helm Chart 推送(上传)到您的组织空间,请发出以下命令。
$ helm cm-push <chart-name>.tgz <repo-name>
6.6.5. 从私有 NGC 组织/团队中删除 Helm Chart
要从您的组织或团队中删除 Helm Chart,您必须使用 NGC CLI 或 NGC API。
有关使用 NGC 容器注册表的更多信息,以及在遇到问题时获得帮助,请发送电子邮件至 enterprisesupport@nvidia.com,其中包含您的问题描述,我们将为您创建一个工单。
声明
本指南中的信息以及本指南中引用的 NVIDIA 文档中包含的所有其他信息均按“原样”提供。 NVIDIA 不对产品的相关信息作出任何明示、暗示、法定或其他方面的保证,并且明确声明不承担所有关于不侵权、适销性以及适用于特定用途的暗示保证。 尽管客户可能因任何原因遭受任何损失,NVIDIA 对客户承担的与本指南中描述的产品相关的累计总责任应根据 NVIDIA 产品销售条款和条件进行限制。
本指南中描述的 NVIDIA 产品不具备容错能力,并且并非设计、制造或旨在用于与任何系统的设计、建造、维护和/或操作相关的用途,如果此类系统的使用或故障可能导致威胁人类生命安全或严重人身伤害或财产损失的情况(包括但不限于与任何核能、航空电子、生命支持或其他生命攸关的应用相关的用途)。 NVIDIA 明确声明不承担任何对此类高风险用途的明示或暗示的适用性保证。 对于因任何此类高风险用途引起的索赔或损害,NVIDIA 不对客户或任何第三方承担全部或部分责任。
NVIDIA 不保证或声明本指南中描述的产品在未经进一步测试或修改的情况下适用于任何特定用途。 NVIDIA 不一定会对每种产品的所有参数进行测试。 客户有责任确保产品适用于客户计划的应用并适合该应用,并为该应用进行必要的测试,以避免应用或产品出现故障。 客户产品设计中的缺陷可能会影响 NVIDIA 产品的质量和可靠性,并可能导致超出本指南中包含的附加或不同的条件和/或要求。 NVIDIA 不对任何可能基于以下原因或归因于以下原因的任何故障、损坏、成本或问题承担任何责任:(i) 以任何违反本指南的方式使用 NVIDIA 产品,或 (ii) 客户产品设计。
除客户有权将本指南中的信息用于产品外,NVIDIA 在本指南下未授予任何其他明示或暗示的许可。 只有在获得 NVIDIA 书面批准、未经修改地复制且附带所有相关的条件、限制和声明的情况下,才允许复制本指南中的信息。
商标
NVIDIA 和 NVIDIA 徽标是 NVIDIA Corporation 在美国和其他国家/地区的商标和/或注册商标。 其他公司和产品名称可能是与其关联的各自公司的商标。