你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

配置和优化 VM

注意

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

适用于:✔️ Linux VM ✔️ Windows VM ✔️ 灵活规模集 ✔️ 统一规模集

本文分享了有关如何针对 HPC 配置和优化启用了 InfiniBand 的 HB 系列N 系列 VM 的指导。

VM 映像

在启用了 InfiniBand (IB) 的 VM 上,需要安装适当的 IB 驱动程序才能启用 RDMA。

  • Microsoft Azure 市场中的 Ubuntu-HPC VM 映像预先配置了适当的 NVIDIA IB 驱动程序和 GPU 驱动程序。
  • Microsoft Azure 市场中的 AlmaLinux-HPC VM 映像预先配置了适当的 NVIDIA IB 驱动程序和 GPU 驱动程序。

这些 VM 映像基于基础 Ubuntu 和 AlmaLinux 市场 VM 映像。 用于从基础市场映像创建这些 VM 映像的脚本位于 azhpc-images 存储库中。

在启用了 GPU 的 N 系列 VM 上,需要额外安装适当的 GPU 驱动程序。 可通过以下方法安装这些驱动程序:

  • 使用预先配置了 NVIDIA GPU 驱动程序和 GPU 计算软件堆栈(CUDA、NCCL)的 Ubuntu-HPC VM 映像AlmaLinux-HPC VM 映像
  • 通过 VM 扩展添加 GPU 驱动程序。
  • 手动安装 GPU 驱动程序。
  • Azure 市场中的其他一些 VM 映像也预装了 NVIDIA GPU 驱动程序,包括来自 NVIDIA 的一些 VM 映像。

根据工作负载的 Linux 发行版和版本需求,可以十分方便地通过 Azure 市场中的 Ubuntu-HPC VM 映像AlmaLinux-HPC VM 映像在 Azure 上开始使用 HPC 和 AI 工作负载。 此外,建议使用特定于工作负载的自定义和配置创建自定义 VM 映像以供重复使用。

HPC VM 映像支持的 VM 大小

InfiniBand OFED 支持

最新的 Azure HPC 市场映像随附 Mellanox OFED 5.1 和更高版本,它们不支持 ConnectX3-Pro InfiniBand 卡。 ConnectX-3 Pro InfiniBand 卡需要 MOFED 4.9 LTS 版本。 这些 VM 映像仅支持 ConnextX-5 和更高版本的 InfiniBand 卡。 这些 HPC VM 映像中 InfiniBand OFED 的 VM 大小支持矩阵如下:

GPU 驱动程序支持

目前只有 Ubuntu-HPC VM 映像AlmaLinux-HPC VM 映像预先配置了 NVIDIA GPU 驱动程序和 GPU 计算软件堆栈(CUDA、NCCL)。

受支持 HPC VM 映像中 GPU 驱动程序的 VM 大小支持矩阵如下:

  • N 系列:NVIDIA GPU 驱动程序和 GPU 计算软件堆栈(CUDA、NCCL)支持 NDv2、NDv4 VM 大小。
  • NVIDIA GPU 驱动程序支持 N 系列中的其他“NC”和“ND”VM 大小。

N 系列中所有 VM 大小都支持 Gen 2 VM,不过,有些早期的大小还支持 Gen 1 VM。 映像 URN 或版本的末尾还会以“01”来指示支持 Gen 2。

启用了 SR-IOV 的 VM

Ubuntu-HPC VM 映像

对于启用了 SR-IOV 的支持 RDMA 的 VM,适合使用 Ubuntu-HPC VM 映像版本 18.04、20.04 和 22.04。 这些 VM 映像预先配置了用于 RDMA 的 Mellanox OFED 驱动程序、NVIDIA GPU 驱动程序、GPU 计算软件堆栈(CUDA、NCCL),以及常用的 MPI 库和科学计算包。 请参阅 VM 大小支持矩阵

  • 可以使用 CLIAzure 市场将 VM 映像的可用版本或最新版本随以下信息一起列出。

    "publisher": "Microsoft-DSVM",
    "offer": "Ubuntu-HPC",
    
  • 用于从基础 Ubuntu 市场映像创建 Ubuntu-HPC VM 映像的脚本位于 azhpc-images 存储库中。

AlmaLinux-HPC VM 映像

对于启用了 SR-IOV 的支持 RDMA 的 VM,AlmaLinux-HPC VM 映像版本 8.5、8.6 和 8.7 适用。 这些 VM 映像预先配置了用于 RDMA 的 Mellanox OFED 驱动程序、NVIDIA GPU 驱动程序、GPU 计算软件堆栈(CUDA、NCCL),以及常用的 MPI 库和科学计算包。 请参阅 VM 大小支持矩阵

  • 可以使用 CLIAzure 市场将 VM 映像的可用版本或最新版本随以下信息一起列出。

    "publisher": "AlmaLinux",
    "offer": "AlmaLinux-HPC",
    
  • 用于从基础 AlmaLinux Microsoft Azure 市场映像创建 AlmaLinux-HPC VM 映像的脚本位于 azhpc-images 存储库中。

此外,TechCommunity 文章中详细介绍了 Ubuntu-HPC VM 映像AlmaLinux-HPC VM 映像中包含的内容,以及如何部署这些映像。

注意

我们过去支持 CentOS HPC VM 映像。 由于逐步淘汰了 CentOS(目前唯一受支持的版本 CentOS 7 将在 2024 年 6 月之前继续接收社区安全补丁和 bug 修复更新),我们不会向 Azure 市场发布任何新的 CentOS HPC 映像。 建议 CentOS/RHEL 用户使用 Azure 市场中的 AlmaLinux-HPC 映像替代项,这些映像安装了一组与其他 HPC 映像相同的驱动程序。

RHEL/CentOS VM 映像

可以对 Azure 市场中基于基础 RHEL 或 CentOS 的非 HPC VM 映像进行配置,以便在启用了 SR-IOV 的支持 RDMA 的 VM 上使用。 详细了解如何在 VM 上启用 InfiniBand设置 MPI

Ubuntu VM 映像

启用和未启用 SR-IOV 的支持 RDMA 的 VM 都支持 Microsoft Azure 市场中的基础 Ubuntu Server 20.04 LTS 和 22.04 LTS VM 映像。 详细了解如何在 VM 上启用 InfiniBand设置 MPI

注意

Mellanox OFED 5.1 及更高版本在采用 FDR InfiniBand 的启用了 SR-IOV 的 N 系列 VM 大小(例如 NCv3)中不支持 ConnectX3-Pro InfiniBand 卡。 请在带有 ConnectX3-Pro 卡的 N 系列 VM 上使用 LTS Mellanox OFED 4.9-0.1.7.0 版本或更低版本。 有关详细信息,请参阅 Linux InfiniBand 驱动程序

SUSE Linux Enterprise Server VM 映像

支持市场中的 SLES 12 SP3 for HPC、SLES 12 SP3 for HPC(高级版)、SLES 12 SP1 for HPC、SLES 12 SP1 for HPC(高级版)、SLES 12 SP4 和 SLES 15 VM 映像。 这些 VM 映像预先加载了用于 RDMA 的 Network Direct 驱动程序(适用于非 SR-IOV VM 大小)和 Intel MPI 版本 5.1。 详细了解如何在 VM 上设置 MPI

优化 VM

下面是一些可选的优化设置,可用于改进 VM 的性能。

更新 LIS

如果出于功能或性能考虑必需更新 LIS,可在支持的 OS 发行版上安装或更新 Linux Integration Services (LIS) 驱动程序,特别是使用自定义映像或较低的 OS 版本(如 CentOS/RHEL 6.x 或较低的 7.x 版本)部署时。

wget https://aka.ms/lis
tar xzf lis
pushd LISISO
sudo ./upgrade.sh

回收内存

通过自动回收内存避免远程内存访问,从而提高性能。

sudo echo 1 >/proc/sys/vm/zone_reclaim_mode

在 VM 重新启动后,永久保持回收内存模式:

sudo echo "vm.zone_reclaim_mode = 1" >> /etc/sysctl.conf sysctl -p

禁用防火墙和 SELinux

sudo systemctl stop iptables.service
sudo systemctl disable iptables.service
sudo systemctl mask firewalld
sudo systemctl stop firewalld.service
sudo systemctl disable firewalld.service
sudo iptables -nL
sudo sed -i -e's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

禁用 cpupower

sudo service cpupower status

如果启用了,请将其禁用:

sudo service cpupower stop
sudo systemctl disable cpupower

配置 WALinuxAgent

sudo sed -i -e 's/# OS.EnableRDMA=y/OS.EnableRDMA=y/g' /etc/waagent.conf

(可选)可以在运行作业前禁用 WALinuxAgent,然后在作业后重新将其启用,以便为 HPC 工作负载最大限度提高 VM 资源的可用性。

后续步骤