計算/GPUノードデプロイ時の効果的なOSカスタマイズ方法
注意 : 本コンテンツ内の画面ショットは、現在のOCIコンソール画面と異なっている場合があります。
HPCクラスタやGPUクラスタの計算/GPUノードは、ノード数が数十ノードから時には数百ノードになることもあり、これらのOSに自身の環境に合わせたカスタマイズを加える際、どのような手法を採用するのが最も効果的かという観点で考慮する必要があります。
OCIでこれらのカスタマイズを加えるための代表的な選択肢は、以下が挙げられます。
-
Ansible
RedHat社が開発するオープンソースの構成管理ツールで、YAML形式で記述されたPlaybookの情報を元に、ターゲットノードの構成管理を管理ノードからSSHで実行します。
Playbookは、条件分岐や反復処理を記述することが可能で、cloud-initやカスタム・イメージと比較して複雑な構成管理処理を実現することが可能です。
下表は、これらの選択肢をいくつかの評価基準から比較しており、これらの特徴をふまえて自身のOSカスタマイズ要件にあった手法を選定します。
Ansible | cloud-init | カスタム・イメージ | 備考 | |
---|---|---|---|---|
難易度 | 高(※1) | 中(※2) | 低 | ※1) 管理ノード構築要 Playbook・インベントリファイル等構文習得要 ※2) cloud-config構文習得要 |
カスタマイズ柔軟性 | 高(※3) | 中(※4) | 低(※5) | ※3) 条件分岐や反復を使用した柔軟なカスタマイズ可 ※4) 様々なモジュールを使用した柔軟なカスタマイズ可 ※5) 作成時に適用されているカスタマイズに限定 |
デプロイ時カスタマイズ | 必要 | 必要 | 不要(※6) | ※6) カスタマイズ適用済のためデプロイ時間短縮可 |
以上を踏まえて次章以降は、 cloud-init と カスタム・イメージ を使用した計算/GPUノードのOSカスタマイズの手順を解説します。
なおAnsibleは、オープンソースでインターネットから様々な情報を入手することが可能なため、ここでは解説しません。
cloud-init を使用した計算/GPUノードのOSカスタマイズは、以下の手順で実施します。
- cloud-init 設定ファイル(cloud-config)作成
- cloud-configを指定した インスタンス構成 作成
- インスタンス構成 を指定した クラスタ・ネットワーク 作成
- cloud-init 完了確認
本章は、OSカスタマイズの内容に沿った cloud-init 設定ファイル(cloud-config)を作成します。
以下は、 BM.Optimized3.36 向けに以下のカスタマイズを適用するためのcloud-config例で、OCIコンソールを実行している端末上にテキストファイルで保存します。
- タイムゾーンをJSTに変更
- NVMe SSDローカルディスク領域ファイルシステム作成
- firewalld停止
#cloud-config
#
# Change time zone to JST
timezone: Asia/Tokyo
runcmd:
#
# Mount NVMe local storage
- parted -s /dev/nvme0n1 mklabel gpt
- parted -s /dev/nvme0n1 -- mkpart primary xfs 1 -1
- mkfs.xfs -L localscratch /dev/nvme0n1p1
- mkdir -p /mnt/localdisk
- echo "LABEL=localscratch /mnt/localdisk/ xfs defaults,noatime 0 0" >> /etc/fstab
- systemctl daemon-reload
- mount /mnt/localdisk
#
# Stop firewalld
- systemctl disable --now firewalld
本章は、先に作成したcloud-configを使用して インスタンス構成 を作成します。
インスタンス構成 を作成する際のcloud-config指定は、OCIコンソールのインスタンス構成作成画面で以下 拡張オプションの表示 ボタンを選択し、
表示される以下 管理 フィールドで cloud-initスクリプト フィールドに作成したcloud-configを選択( 参照 ボタンでファイルを選択)します。
本章は、先に作成した インスタンス構成 を使用して クラスタ・ネットワーク を作成します。
クラスタ・ネットワーク を作成する際の インスタンス構成 指定は、OCIコンソールの クラスタ・ネットワーク 作成画面で表示される以下 インスタンス・プール の構成 フィールドで、 インスタンス構成 メニューに先に作成した インスタンス構成 を選択します。
cloud-init は、適用したインスタンスが起動してSSHログインできる状態であっても、その処理が継続している可能性があるため、以下コマンドを当該インスタンスのopcユーザで実行し、ステータスが done となっていることで cloud-init の処理完了を確認します。
ステータスが running の場合は、 cloud-init の処理が継続中のため、処理が完了するまで待ちます。
$ cloud-init status
status: done
$
カスタム・イメージ を使用した計算/GPUノードのOSカスタマイズは、以下の手順で実施します。
- カスタム・イメージ 作成用インスタンス起動
- カスタマイズ 適用
- カスタム・イメージ 使用時問題となる設定修正
- カスタム・イメージ 取得
- カスタム・イメージ を指定した インスタンス構成 作成
- インスタンス構成 を指定した クラスタ・ネットワーク 作成
本章は、 カスタム・イメージ を作成するためのインスタンスを起動します。
通常 カスタム・イメージ を作成する場合、組み込むカスタマイズの内容が正しく動作しているかを確認する必要があるため、最終的に構築するHPCクラスタやGPUクラスタの規模のみを縮小した同一構成のものを使用します。
例えば、16ノードのクラスタ構築に使用する カスタムイメージ であれば、同じシェイプとOSを使用した2ノードのクラスタをデプロイします。
この手順は、 OCI HPCチュートリアル集 の HPCクラスタを構築する(基礎インフラ手動構築編) や GPUクラスタを構築する(基礎インフラ手動構築編) が参考になります。
このクラスタがデプロイ出来たら、必要なカスタマイズを適用してその動作を確認します。
本章は、 カスタム・イメージ を使用してクラスタをデプロイする際に問題となる設定を、 カスタム・イメージ 取得前に除去します。
問題となる設定で代表的なものは、以下の2項目です。
-
NVMe SSDローカルディスク領域ファイルシステム設定
HPC/機械学習用途のベアメタルインスタンスに搭載されるNVMe SSDローカルディスクは、 カスタム・イメージ を使用する場合でも、デプロイ時にファイルシステムとしフォーマットしマウントする必要があります。
このため、 カスタム・イメージ 取得前にこのファイルシステム設定を削除し、 カスタム・イメージ を使用してインスタンスをデプロイする際に改めてこの設定を追加します。 -
クラスタ・ネットワーク 用ネットワークインターフェース設定
クラスタ・ネットワーク のネットワークインターフェース設定は、 カスタム・イメージ 取得インスタンス用の静的IPアドレスを含んでおり、そのまま カスタム・イメージ を取得すると、これを使用してデプロイしたインスタンスで全て同じIPアドレスが設定され、 クラスタ・ネットワーク に接続することが出来ません。 このため、 カスタム・イメージ 取得前にこのネットワークインターフェース設定を削除し、カスタム・イメージ を使用してインスタンスをデプロイする際に改めてこの設定を追加します。
以上より、 カスタム・イメージ 取得前に以下の修正を適用します。
- /etc/fstab 内NVMe SSDローカルディスク領域ファイルシステムマウント設定削除
- /etc/sysconfig/network-scripts/ifcfg-rdmaxx 削除
なお、 カスタム・イメージ によるクラスタデプロイ時にここで削除した設定を適用し直すには、NVMe SSDローカルディスク領域ファイルシステム設定の場合は 1. cloud-initを使用したOSカスタマイズ の手法を、 クラスタ・ネットワーク 用ネットワークインターフェース設定の場合は Oracle Cloud Agent を使用します。
本章は、 カスタム・イメージ 取得用インスタンスで カスタム・イメージ を取得します。
カスタム・イメージ の取得は、当該インスタンスの以下 インスタンスの詳細 ページで 他のアクション プルダウンメニューから カスタム・イメージの作成 メニューを選択し、
表示される以下画面で 名前 フィールドに カスタム・イメージ に付与する名前を指定し、 カスタム・イメージの作成 ボタンをクリックします。
なお、 カスタム・イメージ 取得中は、当該インスタンスが停止します。
本章は、先に作成した カスタム・イメージ を使用して インスタンス構成 を作成します。
インスタンス構成 を作成する際の カスタム・イメージ 指定は、OCIコンソールの インスタンス構成 作成画面の以下 イメージとシェイプ フィールドで イメージの変更 ボタンをクリックし、
表示される以下 イメージの選択 サイドバーで マイ・イメージ を選択し表示される先に作成した カスタム・イメージ を選択し イメージの選択 ボタンをクリックします。
本章は、先に作成した インスタンス構成 を使用して クラスタ・ネットワーク を作成します。
クラスタ・ネットワーク を作成する際の インスタンス構成 指定は、OCIコンソールの クラスタ・ネットワーク 作成画面で表示される以下 インスタンス・プール の構成 フィールドで、 インスタンス構成 メニューに先に作成した インスタンス構成 を選択します。