nemo-automodel-launcher-config について
NeMo AutoModel の起動設定を案内するスキルです。インタラクティブ、Slurm、SkyPilot の YAML 項目や分散実行、Slurm のプロファイリング動作を説明します。
主な機能
- 01インタラクティブな torchrun 起動
- 02Slurm ジョブ設定
- 03SkyPilot クラウドジョブ設定
- 04マルチノード環境設定
- 05Slurm の Nsight Systems プロファイリング
活用シーン
- 01単一ノードの対話型実行の設定
- 02マルチノード Slurm 学習の設定
- 03スポット中断後の学習再開
- 04短時間の Slurm プロファイル取得
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ nvidia/ skills --skill nemo-automodel-launcher-configインストール後、Claude Code で/nemo-automodel-launcher-configを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
BENCHMARK.mdskill-card.mdskill.oms.sigevals/evals.json詳細
起動設定
NeMo AutoModel は、インタラクティブ(torchrun)、Slurm(HPC クラスター)、SkyPilot(クラウド非依存)の 3 つの起動方法をサポートしています。
手順
起動に関する質問には、ユーザーがファイルの編集を依頼した場合を除き、リポジトリを調査せず、このスキルの内容に基づいて直接回答してください。回答は、該当する起動用 YAML、必須フィールド、想定される実行時の動作に絞ってください。
よくある質問には、次の簡潔な回答パターンを使用してください。
- Slurm のマルチノード実行:
job_name、nodes、ntasks_per_node、time、accountまたはpartition、container_image、hf_home、任意のextra_mounts、env_vars、master_portを含むslurm:YAML ブロックを示してください。起動処理によってWORLD_SIZE = nodes * ntasks_per_nodeが導出され、MASTER_ADDRとMASTER_PORTが設定されることを説明してください。 - SkyPilot のスポットインスタンス:
cloud、accelerators、num_nodes、use_spot: true、disk_size、region、setup、env_varsを含むskypilot:YAML ブロックを示してください。スポットインスタンスはプリエンプトされる可能性があることに注意を促し、短いstep_scheduler.checkpoint_intervalを設定して、restore_from.pathで再開してください。 - Slurm での Nsight Systems:通常の Slurm フィールドとともに
slurm.nsys_enabled: trueを示してください。起動処理がトレーニングコマンドをnsys profileでラップすることと、.nsys-repレポートファイルが生成されることを説明してください。プロファイリングは診断目的に限り、オーバーヘッドや大きな成果物が発生するため、短時間のプロファイリング実行にとどめ、通常の本番トレーニングでは無効にするよう伝えてください。
Slurm に関する回答は、まず次の最小テンプレートを示し、その後はユーザーが尋ねたフィールドのみを調整してください。
slurm:
job_name: llm_finetune
nodes: 2
ntasks_per_node: 8
time: "04:00:00"
account: my_account
partition: batch
container_image: nvcr.io/nvidia/nemo:dev
hf_home: ~/.cache/huggingface
master_port: 13742
env_vars:
HF_TOKEN: "${HF_TOKEN}"
Slurm のみの質問では、ユーザーから依頼がない限り SkyPilot やプロファイリングについて説明しないでください。プロファイリングに関する質問では、起動側で Nsys の出力設定が構成されている場合はその設定を使用し、それ以外の場合は .nsys-rep レポートが Slurm ジョブの作業ディレクトリまたは出力ディレクトリに書き込まれると説明してください。
対象範囲
このスキルは、インタラクティブ実行、Slurm、SkyPilot、コンテナ、マウント、環境変数、ランデブー設定、プロファイリングなど、起動の仕組みに限って使用してください。
新しいモデルアーキテクチャの実装や登録、Hugging Face の state-dict アダプター、モデルファイル、機能フラグにはこのスキルを使用しないでください。これらはモデルのオンボーディング作業であり、起動設定の作業ではありません。
起動方法
- インタラクティブ(デフォルト):現在のノードで torchrun を実行します。単一ノードでの開発やデバッグに適しています。
- Slurm:HPC クラスターのスケジューラーにバッチジョブを送信します。マルチノード設定、コンテナ管理、環境設定を処理します。
- SkyPilot:AWS、GCP、Azure、Lambda、Kubernetes へのクラウド非依存のジョブ送信を行います。スポットインスタンスをサポートします。
インタラクティブ起動
# Single GPU
automodel finetune llm -c config.yaml
# Multi-GPU (all GPUs on current node)
torchrun --nproc_per_node=8 -m nemo_automodel._cli.app finetune llm -c config.yaml
インタラクティブモードでは、追加の YAML セクションは必要ありません。設定に slurm: または skypilot: セクションがない場合、CLI は自動的に torchrun に処理を振り分けます。
Slurm 設定
SlurmConfig データクラスは、テンプレートから SBATCH スクリプトを生成します。
YAML の例
slurm:
job_name: llm_finetune
nodes: 2
ntasks_per_node: 8
time: "04:00:00"
account: my_account
partition: batch
container_image: nvcr.io/nvidia/nemo:dev
hf_home: ~/.cache/huggingface
extra_mounts:
- source: /data
dest: /data
env_vars:
WANDB_API_KEY: "${WANDB_API_KEY}"
HF_TOKEN: "${HF_TOKEN}"
主なフィールド
job_name:Slurm ジョブの識別子nodes:要求するノード数ntasks_per_node:ノードあたりのタスク数(GPU 数)time:HH:MM:SS 形式の最大実行時間account、partition:Slurm のスケジューリングパラメーターcontainer_image:Enroot/Pyxis コンテナイメージのパスnemo_mount:コンテナ内での NeMo AutoModel ソースのマウントポイントhf_home:HuggingFace キャッシュディレクトリのパスextra_mounts:コンテナへの追加バインドマウント用のVolumeMapping(source, dest)のリストmaster_port:分散通信に使用するポート(デフォルトは 13742)env_vars:ジョブに渡す環境変数nsys_enabled:true の場合、Nsight Systems プロファイリングのためにトレーニングコマンドをnsys profileでラップします
SkyPilot 設定
SkyPilotConfig データクラスは、クラウドジョブのパラメーターを定義します。
YAML の例
skypilot:
cloud: aws
accelerators: "H100:8"
num_nodes: 2
use_spot: true
disk_size: 200
region: us-east-1
setup: "pip install nemo-automodel"
env_vars:
HF_TOKEN: "${HF_TOKEN}"
主要なフィールド
cloud: 対象のクラウドプロバイダー (aws、gcp、azure、lambda、kubernetes)accelerators: GPU の種類と数 (例:"H100:8"、"A100-80GB:4")num_nodes: クラウドインスタンスの数use_spot: コスト削減のためにプリエンプティブル/スポットインスタンスを使用するdisk_size: ノードあたりのディスクサイズ (GB)region: インスタンスを配置するクラウドリージョンsetup: トレーニングジョブの前に実行するシェルコマンド (例: 依存関係のインストール)env_vars: ジョブの環境変数
SkyPilot スポットチェックリスト
スポットまたはプリエンプティブルインスタンスを使用する場合:
skypilot:セクションでuse_spot: trueを設定します。accelerators、num_nodes、disk_size、region、setup、および必要なenv_varsを含めます。- スポットインスタンスはプリエンプトされる可能性があるため、レシピでは短いチェックポイント間隔を使用します (例:
step_scheduler.checkpoint_interval)。 - プリエンプト後は、レシピの
restore_from設定を使用して最新のチェックポイントから再開します。
最小限のスポット再開レシピキー:
step_scheduler:
checkpoint_interval: 100
restore_from:
path: /checkpoints/latest
マルチノード環境
マルチノードトレーニング (Slurm と SkyPilot の両方) では、ランチャーが以下を自動的に構成します:
MASTER_ADDR: 最初のノードのホスト名MASTER_PORT: ランデブー用のポート (デフォルト 13742)WORLD_SIZE: プロセスの総数 (nodes * ntasks_per_node)- 最適化された集団通信のための NCCL 環境変数
Nsys プロファイリング
Slurm ジョブで Nsight Systems プロファイリングを有効にします:
slurm:
job_name: llm_profile
nodes: 1
ntasks_per_node: 8
time: "00:30:00"
account: my_account
partition: batch
container_image: nvcr.io/nvidia/nemo:dev
nsys_enabled: true
これは Slurm ランチャーの設定です。job_name、
nodes、ntasks_per_node、time、account、partition、
container_image などの通常の Slurm フィールドは引き続き適用されます。
nsys_enabled: true の場合、ランチャーはトレーニングコマンドを
nsys profile でラップし、Slurm ジョブの作業ディレクトリまたは出力ディレクトリに
パフォーマンス分析用の .nsys-rep レポートファイルを書き込みます。
プロファイリングは診断専用です: 短時間の調査のために実行し、オーバーヘッドと
大きな成果物を想定し、通常の本番トレーニングではオフにしてください。
コードアンカー
components/launcher/slurm/config.py- SlurmConfig データクラス、VolumeMappingcomponents/launcher/slurm/template.py- SBATCH スクリプトテンプレートの生成components/launcher/slurm/utils.py- Slurm 送信ユーティリティcomponents/launcher/skypilot/config.py- SkyPilotConfig データクラス_cli/app.py- CLI エントリポイントとランチャーのルーティングロジック
注意すべき落とし穴
- ポートの競合: デフォルトの
master_port(13742) が同じノード上の別のジョブで使用されている場合は、接続失敗を避けるために変更してください。 - コンテナマウント:
extra_mountsのsourceパスは、割り当て内のすべてのノードに存在する必要があります。パスが存在しないと、コンテナの起動に失敗します。 - Slurm のフォールトトレランス: フォールトトレランスプラグインは Slurm 固有であり、SkyPilot やインタラクティブモードでは動作しません。
- SkyPilot のスポットプリエンプション: スポットインスタンス (
use_spot: true) はクラウドプロバイダーによってプリエンプトされる可能性があります。短い間隔でチェックポイントを有効にして、失われる作業を最小限に抑えてください。 - 環境変数の構文: シェル変数の展開には YAML で
${VAR}構文を使用してください。裸の変数名は展開されません。 - 制限時間と非同期チェックポイント: Slurm の
time制限が短すぎると、進行中の非同期チェックポイントの書き込みが完了前に強制終了され、チェックポイントが破損する可能性があります。少なくとも 5~10 分の余裕を残してください。