AI トレーニング クラスター用の Slurm
Slurm は、ハイパフォーマンス コンピューティング クラスター上でジョブをスケジュールおよび実行するオープンソースのワークロード マネージャーであり、大規模な AI トレーニングのデフォルトの選択肢となっています。
概要
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 を管理し、ノード障害後にチェックポイントから再開し、数週間にわたる長期実行に備えて専用の容量を予約します。
技術的な洞察
Slurm コントローラー デーモン (slurmctld) はスケジュールを決定し、各ノードの slurmd エージェントはタスクを起動してステータスを報告します。 Generic Resource (GRES) プラグインは GPU を追跡するため、ジョブは明示的に GPU を要求します。 srun は、分散トレーニング ライブラリが NCCL 通信をブートストラップするために読み取る環境変数 (ランク、ワールド サイズ、マスター アドレス) を設定します。バックフィル スケジュールを使用すると、優先度の高い予約を遅らせない限り、短いジョブを早期に実行でき、使用率を高く保つことができます。
戦略的影響
費用と予算
アーキテクチャの決定により、パフォーマンスと運用コストが何年にもわたって推進されます。
より明確な判決
技術教育は、チームが最新のスタックだけでなく、適切なスタックを選択するのに役立ちます。
品質管理
より良いエンジニアリングの選択により、本番環境での信頼性に関するインシデントが減少します。
AI トレーニング クラスターの Slurm の未来
Slurm は、クラウド バースティング、Pyxis および Enroot を介したコンテナ サポート、およびより緊密な GPU 対応機能を追加し続けています。 AI クラスターが 100,000 を超える GPU に向けて拡張されるにつれ、より強力なフォールト トレランス、自動チェックポイントと再起動の統合、障害後にサイズが変更される柔軟なジョブが期待されます。現在、多くの組織が Kubernetes と並行して、または Kubernetes の下で Slurm を実行しており、ハイブリッド スケジューラーは、HPC スタイルの効率性とクラウドネイティブの柔軟性を組み合わせて、ますます大規模なトレーニングを実行することを目指しています。
現実世界の実装
フロンティア ラボは、数百のノードを要求する単一のスバッチ スクリプトを使用して、数千の GPU にわたる数週間にわたるトレーニングの実行を開始します。
研究者は、PyTorch DDP 実験のために 1 つのノード上で 8 つの GPU を取得するために「srun --gres=gpu:8」を送信します。
バックフィル スケジュールでは、大規模な予約済みトレーニング実行が開始を待機している間に、短い評価ジョブをアイドル状態の GPU にスロットに入れます。
実行中にノードに障害が発生すると、Slurm はジョブをキューに再登録し、最初からやり直すのではなく、最新のチェックポイントから再開します。
リスクとガードレール
1 つのベンチマークを最適化すると、より広範なシステムの弱点が隠れる可能性があります。
インフラストラクチャとメンテナンスのコストは過小評価されがちです。
システムが複雑になるにつれて、セキュリティと可観測性のギャップが拡大する可能性があります。
実装ロードマップ
実装前にレイテンシ、品質、コストの目標を定義します。
現実的な負荷とデータ条件でのベンチマーク。
エラー、ドリフト、ユーザーへの影響を計測器で監視します。
スケーリングの前に、ロールバックとインシデント対応のパスを準備します。
探検を続けましょう
Free newsletter
Get the daily AI briefing
Three verified AI stories every weekday morning, written in plain English. Free forever, no ads.
One email each weekday. Unsubscribe in one click. We never sell or share your address.
Test yourself
Take the Slurm for AI Training Clusters quiz
Instant feedback on every answer, and a shareable certificate with a verifiable ID once you pass a course.
Support free AI education. AI Understanding is a 501(c)(3) nonprofit — no ads, no paywall, ever. Make a donation
次のガイド
DeepSpeed および Megatron トレーニング スタック
よくある質問
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 は各ノードで実行されてタスクを起動します。
srun が PyTorch DDP のような分散トレーニング フレームワークとうまく組み合わせられるのはなぜですか?
srun は、ノード間で同期されたタスクを起動し、分散ライブラリがブートストラップに使用するランクとマスターアドレス情報を提供します。
Slurm でのバックフィル スケジュールの目的は何ですか?
バックフィルは、予約されたジョブを押し戻さない限り、より小さなジョブをスケジュールのギャップに合わせることで使用率を向上させます。