Azure 虚拟机#

创建虚拟机#

创建具有 GPU、NVIDIA 驱动程序NVIDIA Container Runtime 的新 Azure 虚拟机

NVIDIA 维护一个预装 NVIDIA 驱动程序和容器运行时的虚拟机镜像 (VMI),我们建议使用此镜像作为起点。

  1. 选择一个资源组,如果需要,请创建一个新资源组。

  2. 从下拉列表中选择最新的 NVIDIA GPU-Optimized VMI 版本,然后选择 立即获取(如果存在多个 Gen 版本,请选择最新版本)。

  3. 如果已登录 Azure,请选择继续点击 创建

  4. 创建虚拟机界面中,填写 VM 所需的信息。

    • 选择支持 GPU 的 VM 大小(参见推荐的 VM 类型)。

    • 在“配置安全功能”中选择 Standard。

    • 确保创建 SSH 密钥并下载它们。

请注意,并非所有区域都支持带有 GPU VM 的可用区。

当 GPU VM 大小不可选并显示通知:“该大小在区域 x 中不可用。不支持任何区域。”时,这意味着该 GPU VM 不支持可用区。请尝试其他可用性选项。

azure-gpuvm-availability-zone-error

点击查看+创建以启动虚拟机。

准备以下环境变量。

名称

描述

示例

AZ_VMNAME

VM 名称

RapidsAI-V100

AZ_RESOURCEGROUP

VM 的资源组

rapidsai-deployment

AZ_LOCATION

VM 区域

westus2

AZ_IMAGE

镜像的 URN

nvidia:ngc_azure_17_11:ngc-base-version-22_06_0-gen2:22.06.0

AZ_SIZE

VM 大小

Standard_NC6s_v3

AZ_USERNAME

VM 用户名

rapidsai

AZ_SSH_KEY

公共 SSH 密钥

~/.ssh/id_rsa.pub

az vm create \
        --name ${AZ_VMNAME} \
        --resource-group ${AZ_RESOURCEGROUP} \
        --image ${AZ_IMAGE} \
        --location ${AZ_LOCATION} \
        --size ${AZ_SIZE} \
        --admin-username ${AZ_USERNAME} \
        --ssh-key-value ${AZ_SSH_KEY}

注意

使用 az vm image list --publisher Nvidia --all --output table 查看 Azure 上官方 NVIDIA 镜像的 URN。

注意

请参阅此链接了解 Azure 支持的 SSH 密钥。

创建网络安全组#

接下来我们需要允许网络流量到 VM,以便我们可以访问 Jupyter 和 Dask。

  1. 创建 VM 后,选择转到资源以访问 VM。

  2. 在左侧面板中选择网络 -> 网络设置

  3. 选择+创建端口规则 -> 添加入站端口规则

  4. 目标端口范围设置为 8888,8787

  5. 修改“名称”以避免使用 , 或任何其他符号。

查看端口设置示例。

set-ports-inbound-sec

  1. 其余保持不变。选择添加

名称

描述

示例

AZ_NSGNAME

VM 的 NSG 名称

${AZ_VMNAME}NSG

AZ_NSGRULENAME

NSG 规则名称

Allow-Dask-Jupyter-ports

az network nsg rule create \
    -g ${AZ_RESOURCEGROUP} \
    --nsg-name ${AZ_NSGNAME} \
    -n ${AZ_NSGRULENAME} \
    --priority 1050 \
    --destination-port-ranges 8888 8787

安装 RAPIDS#

接下来,我们可以通过 SSH 连接到 VM 以安装 RAPIDS。可以在左侧面板中选择连接找到 SSH 说明。

提示

通过 SSH 连接时,执行

ssh -i <path-to-your-ssh-key-dir>/your-key-file.pem azureuser@<vm-ip-address>

您可能会收到 WARNING: UNPROTECTED PRIVATE KEY FILE! 的警告,并因此收到“Permission denied”的结果。

通过执行 chmod 600 your_key_file.pem,更改密钥文件的权限使其限制更少,这样就可以正常使用了。

有多种方法可以用来安装 RAPIDS,您可以通过RAPIDS 发布版本选择器查看。

在本示例中,我们将运行 RAPIDS Docker 容器,因此我们需要知道最新容器的名称。在发布版本选择器中,在 Method 列中选择 Docker

然后复制显示的命令

docker pull nvcr.io/nvidia/rapidsai/notebooks:25.04-cuda12.8-py3.12
docker run --gpus all --rm -it \
    --shm-size=1g --ulimit memlock=-1 \
    -p 8888:8888 -p 8787:8787 -p 8786:8786 \
    nvcr.io/nvidia/rapidsai/notebooks:25.04-cuda12.8-py3.12

注意

如果在运行这些命令时看到“docker socket permission denied”错误,请尝试关闭并重新连接 SSH 窗口。这是因为您的用户是在登录后才添加到 docker 组的。

测试 RAPIDS#

要访问 Jupyter,请在浏览器中导航到 <VM ip>:8888

在 Python notebook 中,检查是否可以导入和使用 RAPIDS 库,例如 cudf

In [1]: import cudf
In [2]: df = cudf.datasets.timeseries()
In [3]: df.head()
Out[3]:
                       id     name         x         y
timestamp
2000-01-01 00:00:00  1020    Kevin  0.091536  0.664482
2000-01-01 00:00:01   974    Frank  0.683788 -0.467281
2000-01-01 00:00:02  1000  Charlie  0.419740 -0.796866
2000-01-01 00:00:03  1019    Edith  0.488411  0.731661
2000-01-01 00:00:04   998    Quinn  0.651381 -0.525398

打开 cudf/10min.ipynb 并执行单元格以了解 cudf 的工作方式。

运行 Dask 集群时,您还可以访问 <VM ip>:8787 以监控 Dask 集群状态。