VM の構成と最適化
適用対象: ✔️ Linux VM ✔️ Windows VM ✔️ フレキシブル スケール セット ✔️ 均一スケール セット
この記事では、InfiniBand 対応の HB シリーズと N シリーズの VM を HPC 用に構成および最適化するためのガイダンスを紹介します。
VM イメージ
InfiniBand (IB) 対応の VM では、RDMA を有効にするために適切な IB ドライバーが必要です。
- Marketplace の Ubuntu-HPC VM イメージには、適切な NVIDIA IB ドライバーと GPU ドライバーがあらかじめ構成されています。
- Marketplace の 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 ドライバーを手動でインストールします。
- Marketplace のその他一部の VM イメージには、NVIDIA からの VM イメージなど、NVIDIA GPU ドライバーがプレインストールされています。
ワークロードの Linux ディストリビューションとバージョンのニーズに応じて、Marketplace の 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 ドライバーのサポート
現在は、NVIDIA の GPU ドライバーと GPU コンピューティング ソフトウェア スタック (CUDA、NCCL) が事前に構成されているのは、Ubuntu-HPC VM イメージと AlmaLinux-HPC VM イメージのみです。
サポートされている HPC VM イメージでの GPU ドライバーの VM サイズ サポート マトリックスは、次のとおりです。
- N シリーズ: NVIDIA GPU ドライバーと GPU コンピューティング ソフトウェア スタック (CUDA、NCCL) で NDv2、NDv4 VM サイズがサポートされています。
- N シリーズの他の "NC" および "ND" VM サイズは、NVIDIA GPU ドライバーでサポートされています。
N シリーズのすべての VM サイズで第 2 世代 VM がサポートされていますが、一部の古いものでは第 1 世代 VM もサポートされています。 第 2 世代のサポートは、イメージ URN またはバージョンの末尾の "01" によっても示されています。
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 サイズ サポート マトリックスを参照してください。
VM イメージの使用可能なバージョンまたは最新バージョンは、CLI または Marketplace を使用して、次の情報と共に一覧表示できます。
"publisher": "Microsoft-DSVM", "offer": "Ubuntu-HPC",
基本の Ubuntu Marketplace イメージから 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 サイズ サポート マトリックスを参照してください。
VM イメージの使用可能なバージョンまたは最新バージョンは、CLI または Marketplace を使用して、次の情報と共に一覧表示できます。
"publisher": "AlmaLinux", "offer": "AlmaLinux-HPC",
ベースの AlmaLinux Marketplace イメージから AlmaLinux-HPC VM イメージを作成するために使用されるスクリプトは、azhpc-images リポジトリにあります。
さらに、Ubuntu-HPC VM イメージと AlmaLinux-HPC VM イメージに含まれるものと、イメージのデプロイ方法について詳しくは、Azure HPC VM イメージを参照してください。
RHEL VM イメージ
Marketplace にあるベース RHEL ベースの非 HPC 基本 VM イメージは、SR-IOV 対応の RDMA 対応 VM で使用するように構成できます。 VM での InfiniBand の有効化と MPI の設定の詳細を参照してください。
Ubuntu VM イメージ
Marketplace にあるベースの Ubuntu Server 20.04 LTS と 22.04 LTS の VM イメージは、SR-IOV と非 SR-IOV の両方の RDMA 対応 VM でサポートされています。 VM での InfiniBand の有効化と MPI の設定の詳細を参照してください。
- Ubuntu VM イメージで InfiniBand を有効にする手順については、 「テクニカルコミュニティ」記事を参照してください。
Note
Mellanox OFED 5.1 以降は、FDR InfiniBand (NCv3 など) を使用する SR-IOV 対応 N シリーズ VM サイズ上の ConnectX3-Pro InfiniBand カードをサポートしていません。 ConnectX3-Pro カードが搭載された N シリーズ VM 上では、LTS Mellanox OFED バージョン 4.9-0.1.7.0 以前を使用してください。 詳細については、Linux InfiniBand ドライバーに関するページをご覧ください。
SUSE Linux Enterprise Server VM イメージ
Marketplace の SLES 12 SP3 for HPC、SLES 12 SP3 for HPC (Premium)、SLES 12 SP1 for HPC、SLES 12 SP1 for HPC (Premium)、SLES 12 SP4、SLES 15 VM の各イメージがサポートされています。 これらの VM イメージには、RDMA (SR-IOV 以外の VM サイズの場合) および Intel MPI バージョン 5.1 用の Network Direct ドライバーが事前に読み込まれています。 詳細については、VM での MPI の設定に関するページを参照してください。
VM を最適化する
VM のパフォーマンスを向上させるためのオプションの最適化設定を次に示します。
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
必要に応じて、HPC ワークロードに VM リソースを最大限使用できるように、ジョブを実行する前に WALinuxAgent を無効にしてから、ジョブ後にそれを有効にすることができます。
次の手順
- InfiniBand 対応の HB シリーズおよび N シリーズ VM 上で InfiniBand を有効にする方法の詳細を確認します。
- VM でサポートされているさまざまな MPI ライブラリのインストールと実行の詳細について確認します。
- HBv3 シリーズの概要および HC シリーズの概要に関する記事を確認します。
- Azure Compute Tech Community のブログで、最新の発表、HPC ワークロードの例、およびパフォーマンスの結果について参照します。
- HPC ワークロードの実行をアーキテクチャの面から見た概要については、「Azure でのハイ パフォーマンス コンピューティング (HPC)」をご覧ください。