テクニカルガイド
AI トレーニング クラスター用の Slurm
Slurm は、ハイパフォーマンス コンピューティング クラスター上でジョブをスケジュールおよび実行するオープンソースのワークロード マネージャーであり、大規模な AI トレーニングのデフォルトの選択肢となっています。
このガイドを聴くAIによるナレーション · ~2 min
概要
It matters because it reliably distributes massive training runs across thousands of GPUs.
ディープダイブ
Slurm (Simple Linux Utility for Resource Management) はスーパーコンピューティングで誕生し、現在では世界最大の AI トレーニング クラスターの多くを支えています。ユーザーは sbatch を使用してバッチ スクリプトを送信し、--gres=gpu:8 などのディレクティブを使用してノードや GPU などのリソースを要求し、Slurm キューを使用して優先順位を付け、作業を開始します。その srun ランチャーはノード全体で調整されたプロセスを生成し、PyTorch DDP や NCCL などの分散フレームワークと自然に連携します。 Slurm は、リソース アカウンティングを追跡し、フェア シェアとパーティションの制限を強制し、バックフィル スケジュールを処理して小さなジョブをギャップに配置します。フロンティア モデルのトレーニングでは、チームは Slurm を利用して数千の GPU を管理し、ノード障害後にチェックポイントから再開し、数週間にわたる長期実行に備えて専用の容量を予約します。
現実世界の実装
フロンティア ラボは、数百のノードを要求する単一のスバッチ スクリプトを使用して、数千の GPU にわたる数週間にわたるトレーニングの実行を開始します。
研究者は、PyTorch DDP 実験のために 1 つのノード上で 8 つの GPU を取得するために「srun --gres=gpu:8」を送信します。
バックフィル スケジュールでは、大規模な予約済みトレーニング実行が開始を待機している間に、短い評価ジョブをアイドル状態の GPU にスロットに入れます。
実行中にノードに障害が発生すると、Slurm はジョブをキューに再登録し、最初からやり直すのではなく、最新のチェックポイントから再開します。
AI トレーニング クラスターの Slurm の未来
Slurm は、クラウド バースティング、Pyxis および Enroot を介したコンテナ サポート、およびより緊密な GPU 対応機能を追加し続けています。 AI クラスターが 100,000 を超える GPU に向けて拡張されるにつれ、より強力なフォールト トレランス、自動チェックポイントと再起動の統合、障害後にサイズが変更される柔軟なジョブが期待されます。現在、多くの組織が Kubernetes と並行して、または Kubernetes の下で Slurm を実行しており、ハイブリッド スケジューラーは、HPC スタイルの効率性とクラウドネイティブの柔軟性を組み合わせて、ますます大規模なトレーニングを実行することを目指しています。
実践する
なぜそれが重要なのか
- 費用と予算. アーキテクチャの決定により、パフォーマンスと運用コストが何年にもわたって推進されます。
- より明確な判決. 技術教育は、チームが最新のスタックだけでなく、適切なスタックを選択するのに役立ちます。
- 品質管理. より良いエンジニアリングの選択により、本番環境での信頼性に関するインシデントが減少します。
気をつけてください
- 1 つのベンチマークを最適化すると、より広範なシステムの弱点が隠れる可能性があります。
- インフラストラクチャとメンテナンスのコストは過小評価されがちです。
- システムが複雑になるにつれて、セキュリティと可観測性のギャップが拡大する可能性があります。
次のステップ
- 実装前にレイテンシ、品質、コストの目標を定義します。
- 現実的な負荷とデータ条件でのベンチマーク。
- エラー、ドリフト、ユーザーへの影響を計測器で監視します。
- スケーリングの前に、ロールバックとインシデント対応のパスを準備します。
探検を続けましょう
よくある質問
What is Slurm for AI Training Clusters?
Slurm は、ハイパフォーマンス コンピューティング クラスター上でジョブをスケジュールおよび実行するオープンソースのワークロード マネージャーであり、大規模な AI トレーニングのデフォルトの選択肢となっています。これは、大規模なトレーニングの実行を数千の GPU に確実に分散するため、重要です。
ユーザーは通常、Slurm にバッチ ジョブを送信するためにどのコマンドを使用しますか?
sbatch は、ジョブのリソースとコマンドを記述するバッチ スクリプトを Slurm キューに送信します。
Slurm ジョブはどのように GPU を要求しますか?
Generic Resource (GRES) システムを使用すると、ジョブが明示的に GPU を要求できます (例: --gres=gpu:8)。
どの Slurm コンポーネントが中央のスケジュール決定を行いますか?
slurmctld はジョブをスケジュールするコントローラー デーモンであり、slurmd は各ノードで実行されてタスクを起動します。
Why can srun help launch distributed training tasks inside a Slurm allocation?
srun launches task steps in the allocation and exposes Slurm task information; distributed frameworks may still require explicit rendezvous settings.
Slurm でのバックフィル スケジュールの目的は何ですか?
バックフィルは、予約されたジョブを押し戻さない限り、より小さなジョブをスケジュールのギャップに合わせることで使用率を向上させます。