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

配置和优化 VM

适用于:✔️ 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 存储库中。

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

RHEL VM 映像

可以对市场中基础基于 RHEL 的非 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 版本(如 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 资源的可用性。

后续步骤