在阿里云虚拟机上使用 NGC
在阿里云虚拟机上使用 NGC
本《在阿里云虚拟机上使用 NGC 指南》介绍了如何在阿里云上设置 NVIDIA GPU 云虚拟机镜像,并包含每个 NVIDIA 虚拟机镜像版本的发行说明。
要查看中文设置指南,请访问NGC 与阿里云 - 中文门户。
NVIDIA 在阿里云上提供三种不同的虚拟机镜像 (VMI)。这些是针对配备 NVIDIA V100 或 NVIDIA T4 GPU 的阿里云 VM 实例进行 GPU 优化的 VMI。
- NVIDIA GPU 优化镜像,适用于深度学习、机器学习和 HPC
基础 GPU 优化镜像包括 Ubuntu Server、NVIDIA 驱动程序、Docker CE 和 NVIDIA Container Runtime for Docker
- NVIDIA GPU 优化镜像,适用于 TensorFlow
预装 NVIDIA GPU 加速 TensorFlow 容器的基础镜像
- NVIDIA GPU 优化镜像,适用于 PyTorch
预装 NVIDIA GPU 加速 PyTorch 容器的基础镜像
对于熟悉阿里云平台的用户,启动实例的过程非常简单,只需登录,选择所需的 NVIDIA GPU 优化镜像,选择并配置至少一个支持的 NVIDIA GPU 的云实例,然后启动 VM。启动 VM 后,您可以 SSH 进入 VM,并开始使用 NGC 目录中提供的各种 GPU 加速容器、预训练模型和其他资源。
本文档提供了完成此操作的分步说明,包括如何使用阿里云 CLI。
先决条件
-
您拥有一个阿里云帐户 - https://home-intl.console.aliyun.com/,并具有创建资源的权限。
- 浏览 NGC 网站,并确定要在 VMI 上运行的可用 NGC 容器和标签。
-
Windows 用户:CLI 代码片段适用于 Linux 或 Mac OS X 上的 bash。如果您使用的是 Windows 并且希望按原样使用代码片段,则可以使用 Windows Subsystem for Linux 并使用 bash shell(您将在 Ubuntu Linux 中)。
1.1. 安全最佳实践
云安全始于 CSP 帐户的安全策略。有关如何为 CSP 配置安全策略的信息,请参阅以下链接
用户必须遵循其 CSP 的安全指南和最佳实践,以保护其 VM 和帐户的安全。
1.2. 开始之前
1.2.1. 设置 SSH 密钥对
如果您尚未专门为阿里云设置 SSH 密钥,则需要设置一个密钥,并将其放在您将用于 SSH 连接到 VM 的计算机上。在示例中,密钥名为“alibaba-key”。
- 从浏览器登录 ECS 控制台 - https://ecs.console.aliyun.com/。
- 打开左侧导航菜单选项卡,然后从“网络和安全”组中单击SSH 密钥对。
- 从屏幕的右上角,单击创建 SSH 密钥对。
- 为其命名,例如“alibaba-key”,然后单击确定。将立即下载
.pem
文件。这是您唯一可以下载它的机会。 - 下载
.pem
文件后,将其移动到.ssh
目录。mv alibaba-key.pem ~/.ssh/ chmod 400 ~/.ssh/alibaba-key.pem
1.2.2. 为虚拟机设置安全组
为了创建实例,您需要将它们放入安全组中。
- 登录 ECS 控制台 - https://ecs.console.aliyun.com/。
- 打开左侧导航菜单选项卡,然后从“网络和安全”组中单击安全组。
- 从屏幕的右上角,单击创建安全组。
- 为其命名和描述,并创建一个虚拟私有云 (VPC)(如果尚不存在)。
- 在入站选项卡下,配置以下选项。
- 添加 SSH 和 HTTPS。
- 在“自定义端口范围”处,选择 TCP,然后输入 5000/5000。
- 设置“授权对象”= 0.0.0.0/0 或您将从中访问的 IP 地址。
- 单击确定。
安全警告
在授予访问权限或通过互联网共享 AMI 之前,务必采取适当的预防措施和安全措施。默认情况下,阻止与 AMI 实例的互联网连接。您全权负责启用和保护对 AMI 的访问。有关管理安全组的信息,请参阅阿里云指南。
1.3. 使用阿里云控制台创建 NGC 认证虚拟机
1.3.1. 登录并找到镜像
- 登录阿里云控制台(阿里云 Marketplace (查找并快速使用软件作为镜像))。
- 搜索 nvidia,然后选择您选择的 NVIDIA GPU 优化镜像。
- 单击选择您的计划。
1.3.2. 配置 VM 并启动
- 配置以下实例设置。
- 计费方式:按量付费
- 区域:选择一个具有 GPU 实例的区域(注意:并非所有区域都具有 GPU)
- 实例类型:选择异构计算,然后选择具有 NVIDIA V100 或 T4 GPU 的实例类型
- 镜像:确保已选择您之前选择的 NVIDIA GPU 优化镜像
- 存储:通过单击“数据磁盘”下的添加磁盘,然后输入存储大小,为数据集存储添加磁盘。建议的最小数据集存储大小为 1 TB (1024 GB)
- 单击下一步:网络,然后选择您在“开始之前”部分中先前创建的安全组。
- 单击下一步:系统配置,然后选择您在“开始之前”部分中先前创建的 SSH 密钥对。
- 单击预览,查看配置并接受服务条款,然后单击创建实例。
1.3.3. 连接到您的 VM 实例
- 在“创建”页面上单击控制台。
- 等待 VM 的状态显示“运行中”,然后使用 VM 详细信息的操作部分通过 SSH 连接。
- 启动后,您可以使用 root 用户的 SSH 密钥 SSH 进入您的实例。如果您按照本教程中的设置进行操作,则您的密钥位于
~/.ssh/
中。命令语法
$ ssh -i <密钥路径> root@<IP>
示例
$ ssh -i ~/.ssh/alibaba-key.pem root@47.89.248.188
有关连接到实例的更多说明,请参阅连接到 Linux 实例。
1.3.4. 启动/停止/删除您的 VM 实例
1.4. 使用阿里云 CLI 创建 NGC 认证虚拟机
此流程和本节中的代码片段适用于 Linux 或 Mac OS X。如果您使用的是 Windows,则可以使用 Windows Subsystem for Linux 并使用 bash shell(您将在 Ubuntu Linux 中)。
许多 CLI 命令可能会有明显的延迟。
有关完整的 CLI 文档和示例脚本,请访问阿里云文档中心。
1.4.1. 安装阿里云 CLI
要使用阿里云 CLI,请按照阿里云 CLI 安装说明进行操作,并安装 ECS SDK。
- 安装 ECS SDK。
sudo pip install aliyun-python-sdk-ecs
- 使用您的密钥配置 CLI。
aliyuncli configure
1.4.6. 获取 NVIDIA 镜像 ID
启动后,您可以使用 root 用户的 SSH 密钥 SSH 进入您的实例。如果您按照本教程中的设置进行操作,则您的密钥位于 ~/.ssh/
中。
创建实例时,您需要指定源 ImageID。使用此命令查找 NVIDIA-GPU-Cloud-Machine-Image 的最新 ImageID
aliyuncli ecs DescribeImages --RegionId us-west-1 \
--ImageName "NVIDIA-GPU-Cloud-Virtual-Machine" \
--output json --filter Images.Image[0].ImageId
它将输出 Image ID,例如“m-rj9iy0xjiod3ghkyhz4p”
1.4.3. 创建 VM 实例
使用 CLI 创建实例是通过 `aliyuncli ecs CreateInstance` 命令完成的。
完整语法文档 - https://www.alibabacloud.com/help/doc-detail/25499.htm
推荐的实例选项
- “--InternetMaxBandwidthOut 10”将峰值出站网络带宽设置为 10 Mbps。有效范围为 [1, 200]。
- “--InstanceChargeType PostPaid”将计费方式设置为按量付费。将其更改为“PrePaid”可将其设置为订阅计费。
其他值得注意的创建实例选项
- 入站网络带宽默认为 200 Mbps。使用“--InternetMaxBandwidthIn”更改此值。有效范围为 [1, 200]。
- 要更改系统磁盘的大小(默认为 40 GB),请使用“--SystemDiskSize”选项。有效值为 [40, 500]。
- 要添加数据磁盘(最多 16 个),请使用“--DataDiskNSize”和“--DataDiskNCategory”选项,其中“N”为 [1, 16]。有效值为
DataDiskNCategory DataDiskNSize 描述 cloud [5, 2000] (默认)基础云盘 cloud_efficiency [20, 32768] 高效云盘 cloud_ssd [20, 32768] SSD 云盘 ephemeral_ssd [5, 800] 本地 SSD
启动示例
启动实例并捕获生成的 JSON
aliyuncli ecs CreateInstance \
--RegionId us-west-1 \
--ImageId "m-rj9iy0xjiod3ghkyhz4p" \
--SecurityGroupId "sg-rj94krsusal2k5l6gnnz" \
--InstanceType ecs.gn5-c4g1.xlarge \
--InstanceName "my-instance" \
--InternetMaxBandwidthOut 10 \
--InstanceChargeType PostPaid \
--KeyPairName alibaba-key
输出显示实例 ID。
{
"InstanceId": "i-rj9a0iw25hryafj0fm4v",
"RequestId": "440ECC70-09F9-492C-AB9E-21AA9C4E0531"
}
1.4.4. 分配公网 IP 地址
通过 CLI 创建的实例不会自动获得公网 IP 地址。
要为您刚创建的实例分配公网 IP 地址,请运行
aliyuncli ecs AllocatePublicIpAddress --RegionId us-west-1 \
--InstanceId "i-rj9a0iw25hryafj0fm4v"
命令成功完成后将返回 IP 地址
{
"IpAddress": "47.89.248.188",
"RequestId": "65EB59AE-FA75-446F-B5C7-2BA0F9A77CDC"
}
1.4.5. 启动实例
通过 CLI 创建的实例不会自动启动。
要启动您刚创建的实例,请运行
aliyuncli ecs StartInstance --InstanceId "i-rj9a0iw25hryafj0fm4v"
连接到您的 VM 实例
启动后,您可以使用 root 用户的 SSH 密钥 SSH 进入您的实例。如果您按照本教程中的设置进行操作,则您的密钥位于 ~/.ssh/
中。
命令语法
ssh -i <KEYPATH> root@<IP>
示例
ssh -i ~/.ssh/alibaba-key.pem root@47.89.248.188
有关连接到实例的更多说明,请参阅连接到 Linux 实例。
1.4.7. 启动/停止/删除您的 VM 实例
实例运行后,您可以停止、(重新)启动或删除您的实例。
停止
aliyuncli ecs StopInstance --InstanceId INSTANCE_ID
启动或重启
aliyuncli ecs StartInstance --InstanceId INSTANCE_ID
删除
aliyuncli ecs DeleteInstance --InstanceId INSTANCE_ID
NVIDIA 在阿里云平台上提供针对 NVIDIA® Volta™ GPU 优化的定制 NGC 虚拟机镜像。在此实例上运行 NVIDIA GPU 云容器可为深度学习作业提供最佳性能。
有关设置和使用 VMI 的说明,请参阅NGC 与阿里云设置指南。
NVIDIA GPU 优化 VMI
信息
NVIDIA GPU 优化 VMI 是一种虚拟机镜像,用于加速您的机器学习、深度学习、数据科学和 HPC 工作负载。使用此 VMI,您可以在几分钟内启动一个 GPU 加速的阿里云 VM 实例,其中预装了 Ubuntu OS、GPU 驱动程序、Docker 和 NVIDIA 容器工具包。
此外,此 VMI 还提供对 NVIDIA NGC 目录的轻松访问,NGC 目录是 GPU 优化软件的中心,用于拉取和运行性能经过调整、测试和 NVIDIA 认证的 docker 容器。NGC 提供对容器化的 AI、数据科学和 HPC 应用程序、预训练模型、AI SDK 和其他资源的免费访问,使数据科学家、开发人员和研究人员能够专注于构建解决方案、收集见解和交付业务价值。
此 GPU 优化 VMI 免费提供给开发人员,并提供企业支持选项。有关企业支持的更多信息,请访问NVIDIA AI Enterprise。
发行说明
版本 22.06.0
- Ubuntu Server 20.04
- NVIDIA 驱动程序 515.48.07
- Docker-ce 20.10.17
- NVIDIA Container Toolkit 1.10.0-1
- NVIDIA Container Runtime 3.10.0-1
- AWS 命令行界面 (CLI)
- Miniconda 4.13.0
- JupyterLab 3.4.3 和其他 Jupyter 核心软件包
- NGC-CLI 3.0.0
- Git, Python3-PIP
来自 NVIDIA VMI 的 PyTorch
信息
NVIDIA NGC 是 GPU 优化软件的中心,适用于深度学习、机器学习和高性能计算 (HPC)。NGC 提供对经过性能验证的容器、预训练模型、AI SDK 和其他资源的免费访问,使数据科学家、开发人员和研究人员能够专注于构建解决方案、收集见解和交付业务价值。
此镜像中包含的 NVIDIA GPU 优化 PyTorch 容器经过优化,并每月更新,以实现从一个版本到另一个版本的软件驱动的增量性能提升,从而从现有 GPU 中提取最大性能。结合快速轻松地访问 NGC 上的任何资产,此 VM 镜像有助于快速跟踪您的端到端 AI 部署和开发过程。
发行说明
即将推出。
来自 NVIDIA VMI 的 TensorFlow
信息
NVIDIA NGC 是 GPU 优化软件的中心,适用于深度学习、机器学习和高性能计算 (HPC)。NGC 提供对经过性能验证的容器、预训练模型、AI SDK 和其他资源的免费访问,使数据科学家、开发人员和研究人员能够专注于构建解决方案、收集见解和交付业务价值。
此镜像中包含的 NVIDIA GPU 优化 PyTorch 容器经过优化,并每月更新,以实现从一个版本到另一个版本的软件驱动的增量性能提升,从而从现有 GPU 中提取最大性能。结合快速轻松地访问 NGC 上的任何资产,此 VM 镜像有助于快速跟踪您的端到端 AI 部署和开发过程。
发行说明
即将推出。
NVIDIA GPU 优化 VMI 默认包含 conda,以便使用 jupyter-lab 笔记本。内部 Python 依赖项可能在新版本的 Python 中得到修补,但 conda 必须使用 VMI 中的特定版本。除非 conda 本身存在漏洞,否则这些漏洞无法直接利用。攻击者需要获得对运行 conda 的 VM 的访问权限,因此务必保护 VM 访问权限。请参阅安全最佳实践部分。
以下版本受漏洞影响
- NVIDIA GPU 优化 VMI 22.06
- NVIDIA GPU 优化 VMI (ARM64) 22.06
漏洞列表如下
- GHSA-3gh2-xw74-jmcw:高危;Django 2.1;SQL 注入
- GHSA-6r97-cj55-9hrq:严重;Django 2.1;SQL 注入
- GHSA-c4qh-4vgv-qc6g:高危;Django 2.1;不受控制的资源消耗
- GHSA-h5jv-4p7w-64jg:高危;Django 2.1;不受控制的资源消耗
- GHSA-hmr4-m2h5-33qx:严重;Django 2.1;SQL 注入
- GHSA-v6rh-hp5x-86rv:高危;Django 2.1;访问控制绕过
- GHSA-v9qg-3j8p-r63v:高危;Django 2.1;不受控制的递归
- GHSA-vfq6-hq5r-27r6:严重;Django 2.1;通过密码重置表单进行帐户劫持
- GHSA-wh4h-v3f2-r2pp:高危;Django 2.1;不受控制的内存消耗
- GHSA-32gv-6cf3-wcmq:严重;Twisted 18.7.0;HTTP/2 DoS 攻击
- GHSA-65rm-h285-5cc5:高危;Twisted 18.7.0;不正确的证书验证
- GHSA-92x2-jw7w-xvvx:高危;Twisted 18.7.0;Cookie 和标头泄露
- GHSA-c2jg-hw38-jrqq:高危;Twisted 18.7.0;HTTP 请求走私
- GHSA-h96w-mmrf-2h6v:严重;Twisted 18.7.0;不正确的输入验证
- GHSA-p5xh-vx83-mxcj:严重;Twisted 18.7.0;HTTP 请求走私
- GHSA-5545-2q6w-2gh6:高危;numpy 1.15.1;NULL 指针解引用
- CVE-2019-6446:严重;numpy 1.15.1;反序列化不受信任的数据
- GHSA-h4m5-qpfp-3mpv:高危;Babel 2.6.0;任意代码执行
- GHSA-ffqj-6fqr-9h24:高危;PyJWT 1.6.4;通过非黑名单公钥格式造成的密钥混淆
- GHSA-h7wm-ph43-c39p:高危;Scrapy 1.5.1;不受控制的内存消耗
- CVE-2022-39286:高危;jupyter_core 4.11.2;任意代码执行
- GHSA-55x5-fj6c-h6m8:高危;lxml 4.2.4;通过 lxml HTML 清理器允许恶意代码
- GHSA-wrxv-2j5q-m38w:高危;lxml 4.2.4;NULL 指针解引用
- GHSA-gpvv-69j7-gwj8:高危;pip 8.1.2;路径遍历
- GHSA-hj5v-574p-mj7c:高危;py 1.6.0;正则表达式 DoS
- GHSA-x84v-xcm2-53pg:高危;requests 2.19.1;凭据保护不足
- GHSA-mh33-7rrq-662w:高危;urllib3 1.23;不正确的证书验证
- CVE-2021-33503:高危;urllib3 1.23;拒绝服务攻击
- GHSA-2m34-jcjv-45xf:中危;Django 2.1;Django 中的 XSS
- GHSA-337x-4q8g-prc5:中危;Django 2.1;不正确的输入验证
- GHSA-68w8-qjq3-2gfm:中危;Django 2.1;路径遍历
- GHSA-6c7v-2f49-8h26:中危;Django 2.1;敏感信息的明文传输
- GHSA-6mx3-3vqg-hpp2:中危;Django 2.1;Django 允许非特权用户读取任意帐户的密码哈希
- GHSA-7rp2-fm2h-wchj:中危;Django 2.1;Django 中的 XSS
- GHSA-hvmf-r92r-27hr:中危;Django 2.1;Django 允许意外的模型编辑
- GHSA-wpjr-j57x-wxfw:中危;Django 2.1;通过 Django 中的缓存键冲突导致的数据泄露
- GHSA-9x8m-2xpf-crp3:中危;Scrapy 1.5.1;使用 HTTP 代理时的凭据泄露
- GHSA-cjvr-mfj7-j4j8:中危;Scrapy 1.5.1;不正确的授权和信息泄露
- GHSA-jwqp-28gf-p498:中危;Scrapy 1.5.1;凭据泄露
- GHSA-mfjm-vh54-3f96:中危;Scrapy 1.5.1;未限制 Cookie 设置
- GHSA-6cc5-2vg4-cc7m:中危;Twisted 18.7.0;在 URI/方法中注入无效字符
- GHSA-8r99-h8j2-rw64:中危;Twisted 18.7.0;HTTP 请求走私
- GHSA-vg46-2rrj-3647:中危;Twisted 18.7.0;NameVirtualHost Host 标头注入
- GHSA-39hc-v87j-747x:中危;cryptography 37.0.2;cryptography wheels 中包含易受攻击的 OpenSSL
- GHSA-hggm-jpg3-v476:中危;cryptography 2.3.1;RSA 解密容易受到 Bleichenbacher 时序漏洞的影响
- GHSA-jq4v-f5q6-mjqq:中危;lxml 4.2.4;XSS
- GHSA-pgww-xf46-h92r:中危;lxml 4.2.4;XSS
- GHSA-xp26-p53h-6h2p:中危;lxml 4.2.4;LXML 中 Web 页面生成期间输入的不当中和
- GHSA-6p56-wp2h-9hxr:中危;numpy 1.15.1;NumPy 缓冲区溢出,极不可能被非特权用户利用
- GHSA-f7c7-j99h-c22f:中危;numpy 1.15.1;NumPy 中未检查输入大小的缓冲区复制
- GHSA-fpfv-jqm9-f5jm:中危;numpy 1.15.1;NumPy 中的不正确比较
- GHSA-5xp3-jfq3-5q8x:中危;pip 8.1.2;pip 中的不正确输入验证
- GHSA-w596-4wvx-j9j6:中危;py 1.6.0;当与 subversion 一起使用时,py 库中的 ReDoS
- GHSA-hwfp-hg2m-9vr2:中危;pywin32 223;pywin32 中的整数溢出
- GHSA-r64q-w8jr-g9qp:中危;urllib3 1.23;CRLF 序列的不当中和
- GHSA-wqvq-5m8c-6g24:中危;urllib3 1.23;CRLF 注入
声明
本指南中的信息以及本指南中引用的 NVIDIA 文档中包含的所有其他信息均按“原样”提供。NVIDIA 不对产品的任何信息作任何明示、暗示、法定或其他方面的保证,并且明确声明不对产品的非侵权性、适销性和特定用途的适用性作出任何暗示保证。尽管客户可能因任何原因遭受任何损害,但 NVIDIA 对本指南中描述的产品的总累积责任应根据 NVIDIA 产品销售条款和条件进行限制。
本指南中描述的 NVIDIA 产品并非容错产品,并非设计、制造或旨在用于与任何系统的设计、构造、维护和/或操作相关的用途,在这些用途中,此类系统的使用或故障可能会导致威胁人类生命安全或严重人身伤害或财产损失的情况(包括但不限于与任何核能、航空电子、生命支持或其他生命攸关的应用相关的用途)。NVIDIA 明确声明不对这种高风险用途的适用性作出任何明示或暗示的保证。NVIDIA 不对客户或任何第三方承担因这种高风险用途而引起的全部或部分索赔或损害赔偿责任。
NVIDIA 不保证本指南中描述的产品在未经进一步测试或修改的情况下适合任何特定用途。NVIDIA 不一定对每个产品的所有参数进行测试。客户全权负责确保产品适合并适用于客户计划的应用,并为应用进行必要的测试,以避免应用或产品出现默认情况。客户产品设计中的缺陷可能会影响 NVIDIA 产品的质量和可靠性,并可能导致超出本指南中包含的附加或不同的条件和/或要求。对于可能基于或归因于以下原因的任何默认、损坏、成本或问题,NVIDIA 不承担任何责任:(i) 以任何违反本指南的方式使用 NVIDIA 产品,或 (ii) 客户产品设计。
除客户有权将本指南中的信息与产品一起使用外,NVIDIA 在本指南下未授予任何其他明示或暗示的许可。只有在获得 NVIDIA 书面批准、未经修改地复制并附带所有相关的条件、限制和声明的情况下,才允许复制本指南中的信息。
商标
NVIDIA 和 NVIDIA 徽标是 NVIDIA Corporation 在美国和其他国家/地区的商标和/或注册商标。其他公司和产品名称可能是与其关联的各自公司的商标。
版权
© 2024 NVIDIA CORPORATION 及关联公司。保留所有权利。