Azure Stack Hub 上的图形处理单元 (GPU) 虚拟机 (VM)

本文介绍 Azure Stack Hub 集成系统上支持哪些图形处理单元 (GPU) 模型。 还可以找到有关安装与 GPU 配合使用的驱动程序的说明。 Azure Stack Hub 中的 GPU 支持实现了诸如人工智能、训练、推理和数据可视化之类的解决方案。 可以使用 AMD Radeon Instinct MI25 来支持图形密集型应用程序,如 Autodesk AutoCAD。

可以从三个 GPU 模型中选择。 它们分别为 NVIDIA V100 GPU、NVIDIA T4 GPU 和 AMD Mi25 GPU。 这些物理 GPU 支持以下 Azure N 系列虚拟机 (VM) 类型,如下所示:

警告

在此版本中,不支持 GPU VM。 需要升级到 Azure Stack Hub 2005 或更高版本。 此外,Azure Stack Hub 硬件必须具有物理 GPU。

NCv3

NCv3 系列 VM 采用 NVIDIA Tesla V100 GPU。 客户可将这些更新的 GPU 用于传统的 HPC 工作负荷,例如油藏模拟、DNA 测序、蛋白质分析、Monte Carlo 模拟和其他工作负荷。

大小 vCPU 内存:GiB 临时存储 (SSD) GiB GPU GPU 内存:GiB 最大数据磁盘数 最大 NIC 数
Standard_NC6s_v3 6 112 736 1 16 12 4
Standard_NC12s_v3 12 224 1474 2 32 24 8
Standard_NC24s_v3 24 448 2948 4 64 32 8

NVv4

NVv4 系列虚拟机由 AMD Radeon Instinct MI25 GPU 提供支持。 通过 NVv4 系列,Azure Stack Hub 正在引入使用部分 GPU 的虚拟机。 此大小可用于 GPU 加速的图形应用程序和虚拟桌面。 NVv4 虚拟机目前只支持 Windows 来宾操作系统。

大小 vCPU 内存:GiB 临时存储 (SSD) GiB GPU GPU 内存:GiB 最大数据磁盘数 最大 NIC 数
Standard_NV4as_v4 4 14 88 1/8 2 4 2
Standard_NV8as_v4 8 28 176 1/4 4 8 4
Standard_NV16as_v4 16 56 352 1/2 8 16 8
Standard_NV32as_v4 32 112 704 1 16 32 8

NCasT4_v3

大小 vCPU 内存:GiB GPU GPU 内存:GiB 最大数据磁盘数 最大 NIC 数
Standard_NC4as_T4_v3 4 28 1 16 8 4
Standard_NC8as_T4_v3 8 56 1 16 16 8
Standard_NC16as_T4_v3 16 110 1 16 32 8
Standard_NC64as_T4_v3 64 440 4 64 32 8

NC_A100 v4

NC_A100 系列 VM 由 NVIDIA Ampere A100 GPU(Tesla V100 GPU 的接替者)提供支持。 你可以将这些更新的 GPU 用于传统的 HPC 工作负荷,例如油藏模拟、DNA 测序、蛋白质分析、Monte Carlo 模拟和其他工作负荷。

大小 vCPU 内存:GiB 临时存储 (GiB) 最大数据磁盘数 GPU GPU 内存 GiB 最大 NIC 数
Standard_NC24ads_A100_v4 24 220 1123 12 1 80 2
Standard_NC48ads_A100_v4 48 440 2246 24 2 160 4

GPU 系统注意事项

  • GPU 必须是以下 SKU 之一:AMD MI-25、Nvidia V100(和变体)、Nvidia T4。
  • 每个服务器支持的 GPU 数量(1、2、3、4)。 首选:1、2 和 4。
  • 在整个缩放单元中,所有 GPU 必须具有完全相同的 SKU。
  • 在整个缩放单元中,每个服务器的所有 GPU 数量必须相同。
  • 在缩放单元上的所有 GPU VM 中,GPU 分区大小(对于 AMD Mi25)需相同。

容量计划

已更新 Azure Stack Hub 容量规划器,支持 GPU 配置。 可在 https://aka.ms/azstackcapacityplanner 上访问。

在现有的 Azure Stack Hub 上添加 GPU

Azure Stack Hub 现在支持将 GPU 添加到任何现有系统。 为此,请执行 stop-azurestack,运行 stop-azurestack 的过程,添加 GPU,然后运行 start-azurestack,直到完成。 如果系统中已有 GPU,则需要停止对以前创建的任何 GPU VM 解除分配,然后重启 。

VM 的修补升级以及 FRU 行为

GPU VM 将在执行 Azure Stack Hub 的修补升级 (PnU) 以及硬件更换 (FRU) 等操作期间停机。 下表提供了在这些活动期间观察到的 VM 状态,以及在这些操作后可以执行(以使这些 VM 可用)的手动操作。

操作 PnU - 完全更新、OEM 更新 FRU
VM 状态 在更新期间不可用。 可通过手动操作提供。 VM 在更新后自动联机。 在 FRU 期间不可用。 可通过手动操作提供。 需要在 FRU 后备份 VM
手动操作 如果 VM 需要在更新期间可用,并且可用 GPU 分区存在,则可通过单击“重启”按钮从门户重启 VM。 VM 将在更新后自动备份 VM 在 FRU 期间不可用。 如果有可用的 GPU,可能会在 FRU 期间停止对 VM 解除分配并重启。 FRU 完成后,需要使用“停止”按钮停止对 VM 解除分配,并使用“开始”按钮开始备份 。

来宾驱动程序安装

以下 PowerShell cmdlet 可用于驱动程序安装:

$VmName = <VM Name In Portal>
$ResourceGroupName = <Resource Group of VM>
$Location = "redmond"
$driverName = <Give a name to the driver>
$driverPublisher = "Microsoft.HpcCompute"
$driverType = <Specify Driver Type> #GPU Driver Types: "NvidiaGpuDriverWindows"; "NvidiaGpuDriverLinux"; "AmdGpuDriverWindows"
$driverVersion = <Specify Driver Version> #Nvidia Driver Version:"1.3"; AMD Driver Version:"1.0"

Set-AzureRmVMExtension  -Location $Location `
                            -Publisher $driverPublisher `
                            -ExtensionType $driverType `
                            -TypeHandlerVersion $driverVersion `
                            -VMName $VmName `
                            -ResourceGroupName $ResourceGroupName `
                            -Name $driverName `
                            -Settings $Settings ` # If no settings are set, omit this parameter
                            -Verbose

根据 Azure Stack Hub GPU VM 的 OS、类型和连接性,需要修改以下设置。

AMD MI25

无论连接状态如何,来宾驱动程序版本都必须与 Azure Stack Hub 版本匹配。 使用与 Azure Stack Hub 版本不一致的较新版本可能会导致可用性问题。

Azure Stack Hub 版本 AMD 来宾驱动程序
2206 21.Q2-120.Q4-1
2108 21.Q2-120.Q4-1
2102 21.Q2-120.Q4-1

已连接

结合适用于 AMD 的驱动程序类型使用上一部分所述的 PowerShell 脚本。 在运行 Windows 的 N 系列 VM 上安装 AMD GPU 驱动程序一文提供了有关在启用了 NVv4 GPU-P 的 VM 内安装 AMD Radeon Instinct MI25 的驱动程序的说明,以及有关如何验证驱动程序安装的步骤。

已断开连接

由于扩展从 Internet 上的位置拉取驱动程序,因此与外部网络断开连接的 VM 无法访问它。 可以下载上表中提到的驱动程序,并将其上传到本地网络中可供 VM 访问的存储帐户。

将 AMD 驱动程序添加到存储帐户,并在 Settings 中指定该帐户的 URL。 这些设置必须在 Set-AzureRMVMExtension cmdlet 中使用。 例如:

$Settings = @{
"DriverURL" = <URL to driver in storage account>
}

NVIDIA

对于使用 GPU 的 CUDA 或 GRID 工作负载,必须在虚拟机内安装 NVIDIA 驱动程序。

用例:图形/可视化效果 GRID

此方案需要使用 GRID 驱动程序。 可以通过 NVIDIA 应用程序中心下载 GRID 驱动程序,前提是具有所需的许可证。 在 VM 上使用 GRID 驱动程序之前,GRID 驱动程序还需要一个带有相应 GRID 许可证的 GRID 许可证服务器。

$Settings = @{
"DriverURL" = "https://download.microsoft.com/download/e/8/2/e8257939-a439-4da8-a927-b64b63743db1/431.79_grid_win10_server2016_server2019_64bit_international.exe"; "DriverCertificateUrl" = "https://go.microsoft.com/fwlink/?linkid=871664"; 
"DriverType"="GRID"
}

用例:计算/CUDA - 已连接

CUDA 驱动程序不需要许可证服务器,也不需要修改的设置。

用例:计算/CUDA - 已断开连接

可以使用以下链接获取指向 NVIDIA CUDA 驱动程序的链接: https://raw.githubusercontent.com/Azure/azhpc-extensions/master/NvidiaGPU/resources.json

Windows:

$Settings = @{
"DriverURL" = "";
"DriverCertificateUrl" = "https://go.microsoft.com/fwlink/?linkid=871664"; 
"DriverType"="CUDA"
}

Linux:

需要为设置引用一些 URL。

URL 备注
PUBKEY_URL PUBKEY_URL 是 Nvidia 驱动程序存储库的公钥,而不是 Linux VM 的公钥。 它用于安装适用于 Ubuntu 的驱动程序。
DKMS_URL DKMS_URL 用于获取包,以便在 RedHat/CentOs 上编译 Nvidia 内核模块。
DRIVER_URL DRIVER_URL 是用于下载 Nvidia 驱动程序存储库信息的 URL,将添加到 Linux VM 的存储库列表中。
LIS_URL LIS_URL 是用于下载适用于 RedHat/CentOs 和适用于 Hyper-V 和 Azure 的 Linux Integration Services v4.3 的 Linux Integration Service 包的 URL (https://www.microsoft.com/download/details.aspx?id=55106),默认未安装该包。LIS_RHEL_ver 是应与 Nvidia 驱动程序一起使用的回退内核版本。 如果 Linux VM 的内核与请求的 Nvidia 驱动程序不兼容,则在 RedHat/CentOs 上使用。

将 URL 添加到设置。

$Settings=@{
"isCustomInstall"=$true;
"DRIVER_URL"="https://go.microsoft.com/fwlink/?linkid=874273";
"CUDA_ver"="10.0.130";
"PUBKEY_URL"="http://download.microsoft.com/download/F/F/A/FFAC979D-AD9C-4684-A6CE-C92BB9372A3B/7fa2af80.pub";
"DKMS_URL"="https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm";
"LIS_URL"="https://aka.ms/lis";
"LIS_RHEL_ver"="3.10.0-1062.9.1.el7"
}

后续步骤