在 Batch 池中使用 RDMA 或 GPU 实例

注意

本文引用了 CentOS,这是一个接近生命周期结束 (EOL) 状态的 Linux 发行版。 请相应地考虑你的使用和规划。

若要运行某些 Batch 作业,可以利用专为大规模计算设计的 Azure VM 大小。 例如:

  • 运行多实例 MPI 工作负荷时,可为远程直接内存访问 (RDMA) 选择具备网络接口的 H 系列或其他大小。 这些大小均连接到用于节点间通信的 InfiniBand 网络,可加快 MPI 应用程序的速度。

  • 对于 CUDA 应用程序,可选择包含 NVIDIA Tesla 图形处理单元 (GPU) 卡的 N 系列大小。

本文介绍了在 Batch 池中使用 Azure 的某些专用大小的指南和示例。 有关规格和背景的信息,请参阅:

注意

某些 VM 大小在创建批处理帐户的区域中可能无法使用。 若要检查大小是否可用,请参阅可用产品(按区域)以及选择 Batch 池的 VM 大小

依赖项

Batch 中计算密集型大小的 RDMA 或 GPU 功能仅在某些操作系统中支持。 (支持的操作系统列表是一个子集,属于以此类大小创建的虚拟机所支持的操作系统。)根据创建 Batch 池的方式,可能需要在节点上安装或配置其他驱动程序或软件。 下表总结了这些依存关系。 有关详细信息,请参阅链接的文章。 有关配置 Batch 池的选项,请参阅本文后面部分。

Linux 池 - 虚拟机配置

大小 功能 操作系统 所需软件 池设置
NC24rs_v3 * RDMA Ubuntu 22.04 LTS 或
基于 CentO 的 HPC
(Azure 市场)
Intel MPI 5

Linux RDMA 驱动程序
启用节点间通信,禁用并发任务执行
NCv3 系列 NVIDIA Tesla GPU(因系列而异) Ubuntu 22.04 LTS 或
CentOS 7.3 或 7.4
(Azure 市场)
NVIDIA CUDA 或 CUDA Toolkit 驱动程序 空值

*支持 RDMA 的 N 系列大小还包含 NVIDIA Tesla GPU

Windows 池 - 虚拟机配置

大小 功能 操作系统 所需软件 池设置
NC24rs_v3 * RDMA Windows Server 2016、2012 R2 或
2012(Azure 市场)
Microsoft MPI 2012 R2 或更高版本,或
Intel MPI 5

Windows RDMA 驱动程序
启用节点间通信,禁用并发任务执行
NCv3 系列 NVIDIA Tesla GPU(因系列而异) Windows Server 2016 或
2012 R2(Azure 市场)
NVIDIA CUDA 或 CUDA Toolkit 驱动程序 空值

*支持 RDMA 的 N 系列大小还包含 NVIDIA Tesla GPU

池配置选项

在为 Batch 池配置专用 VM 大小时,有若干选项来安装所需软件或驱动程序:

  • 对于虚拟机配置中的池,请选择预先配置的 Azure 市场 VM 映像,其中包含预安装的驱动程序和软件。 示例:

  • 创建自定义 Windows 或 Linux VM 映像,你已在其上安装了 VM 大小所需的驱动程序、软件或其他设置。

  • 从已压缩的驱动程序或应用程序安装程序创建 Batch 应用程序包,并配置 Batch 以将程序包部署到池节点,并在创建每个节点时安装一次。 例如,如果应用程序包是安装程序,请创建一个启动任务命令行,以在所有池节点上静默安装该应用。 若工作负载取决于特定的驱动程序版本,请考虑使用应用程序包和池启动任务。

    注意

    启动任务必须使用提升的(管理员)权限运行,且必须待其运行成功。 长时间运行的任务将增加配置 Batch 池的时间。

  • Batch Shipyard 将自动配置 GPU 和 RDMA 驱动程序,以便透明地用于 Azure Batch 上的容器化工作负荷。 Batch Shipyard 完全由配置文件驱动。 提供众多的示例配方配置来启用 GPU 和 RDMA 工作负荷,例如 CNTK GPU 配方,它可在 N 系列 VM 上预先配置 GPU 驱动程序,并以 Docker 映像形式加载 Microsoft Cognitive Toolkit 软件。

示例:Windows NC VM 池上的 NVIDIA GPU 驱动程序

若要在 Windows NC 节点的池上运行 CUDA 应用程序,需要安装 NVDIA GPU 驱动程序。 以下示例步骤使用应用程序包来安装 NVIDIA GPU 驱动程序。 如果工作负载取决于特定的 GPU 驱动程序版本,则可以选择此选项。

  1. NVIDIA 网站下载 Windows Server 2016 上的 GPU 驱动程序的安装程序包 - 例如,版本 411.82。 使用短名称(如 GPUDriverSetup.exe)在本地保存文件。
  2. 为程序包创建 zip 文件。
  3. 将程序包上载到 Batch 帐户。 有关详细步骤,请参阅应用程序包指南。 指定应用程序 ID(如 GPUDriver)和版本(如 411.82) 。
  4. 通过 Batch API 或 Azure 门户,在虚拟机配置中创建具有所需节点数和规模的池。 下表显示了使用启动任务静默安装 NVIDIA GPU 驱动程序的示例设置:
设置
映像类型 市场 (Linux/Windows)
发布者 MicrosoftWindowsServer
产品 WindowsServer
Sku 2016-Datacenter
节点大小 NC6 标准
应用程序包引用 GPUDriver,版本 411.82
启用了启动任务 True
命令行 - cmd /c "%AZ_BATCH_APP_PACKAGE_GPUDriver#411.82%\\GPUDriverSetup.exe /s"
用户标识 - 池自动用户、管理员
等待成功 - True

示例:Linux NC VM 池上的 NVIDIA GPU 驱动程序

若要在 Linux NC 节点的池上运行 CUDA 应用程序,需要从 CUDA Toolkit 安装必要的 NVIDIA Tesla GPU 驱动程序。 以下示例步骤使用 GPU 驱动程序创建和部署自定义 Ubuntu 22.04 LTS 映像:

  1. 部署运行 Ubuntu 22.04 LTS 的 Azure NC 系列 VM。 例如:在美国中南部区域创建 VM。

  2. 使用 Azure 门户、连接到 Azure 订阅的客户端计算机或 Azure 本地 Shell 将 NVIDIA GPU 驱动程序扩展添加到 VM。 或者,按照以下步骤连接到 VM 并手动安装 CUDA 驱动程序

  3. 按照步骤为 Batch 创建 Azure Compute Gallery 图像

  4. 在支持 NC VM 的区域中创建 Batch 帐户。

  5. 通过 Batch API 或 Azure 门户,使用自定义映像创建具有所需节点数和规模的池。 下表列出了映像的示例池设置:

设置
映像类型 自定义映像
自定义映像 映像名称
节点代理 SKU batch.node.ubuntu 22.04
节点大小 NC6 标准

后续步骤

  • 若要在 Azure Batch 池上运行 MPI 作业,请参阅 WindowsLinux 示例。