テクニカルガイド

AI トレーニング クラスター用の Slurm

Slurm は、ハイパフォーマンス コンピューティング クラスター上でジョブをスケジュールおよび実行するオープンソースのワークロード マネージャーであり、大規模な AI トレーニングのデフォルトの選択肢となっています。

概要

Slurm は、ハイパフォーマンス コンピューティング クラスター上でジョブをスケジュールおよび実行するオープンソースのワークロード マネージャーであり、大規模な AI トレーニングのデフォルトの選択肢となっています。これは、大規模なトレーニングの実行を数千の GPU に確実に分散するため、重要です。

AI トレーニング クラスター用の Slurm は、大規模なモデルの品質、インフラストラクチャのコスト、レイテンシー、信頼性に影響を与える技術的なビルディング ブロックです。

ディープダイブ

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 は、ハイパフォーマンス コンピューティング クラスター上でジョブをスケジュールおよび実行するオープンソースのワークロード マネージャーであり、大規模な AI トレーニングのデフォルトの選択肢となっています。これは、大規模なトレーニングの実行を数千の GPU に確実に分散するため、重要です。 AI トレーニング クラスター用の Slurm は、大規模なモデルの品質、インフラストラクチャのコスト、レイテンシー、信頼性に影響を与える技術的なビルディング ブロックです。深い理解を構築するには、Slurm for AI Training Clusters を単一の機能ではなくオペレーティング モデルとして扱います。望ましい結果を定義し、前提条件を明確にし、システムが確実に実行できることと、依然として専門家の判断が必要なことを分離します。

実際、AI トレーニング クラスターに Slurm を使用する強力なチームは、信頼性とコストに照らしてアーキテクチャ、データ、インフラストラクチャの選択を最適化します。明示的な成功基準を文書化し、現実的なデータとワークフローに対してテストし、一度限りのベンチマークの成功ではなく、観察された失敗パターンに基づいて反復します。ここで、理論的な理解が、製品、ポリシー、運用全体にわたる永続的な機能に変わります。

アーキテクチャの決定により、パフォーマンスと運用コストが何年にもわたって推進されます。同時に、1 つのベンチマークを最適化すると、より広範なシステムの弱点が隠れる可能性があります。最も回復力のあるアプローチは、実験のスピードとガバナンスの規律を組み合わせることであり、パイロットを実行し、証拠を取得し、意思決定ログを公開し、モデルの動作、ユーザーの期待、規制要件の進化に応じて安全対策を継続的に更新します。

戦略的影響

アーキテクチャの決定により、パフォーマンスと運用コストが何年にもわたって推進されます。

アーキテクチャの決定により、パフォーマンスと運用コストが何年にもわたって推進されます。高品質の導入では、これが測定可能な運用ルール、所有権の境界、定期的なレビューの儀式に変換されるため、チームは曖昧さを拡大するのではなく、自信を拡大することができます。

技術教育は、チームが最新のスタックだけでなく、適切なスタックを選択するのに役立ちます。

技術教育は、チームが最新のスタックだけでなく、適切なスタックを選択するのに役立ちます。高品質の導入では、これが測定可能な運用ルール、所有権の境界、定期的なレビューの儀式に変換されるため、チームは曖昧さを拡大するのではなく、自信を拡大することができます。

より良いエンジニアリングの選択により、本番環境での信頼性に関するインシデントが減少します。

より良いエンジニアリングの選択により、本番環境での信頼性に関するインシデントが減少します。高品質の導入では、これが測定可能な運用ルール、所有権の境界、定期的なレビューの儀式に変換されるため、チームは曖昧さを拡大するのではなく、自信を拡大することができます。

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 はジョブをキューに再登録し、最初からやり直すのではなく、最新のチェックポイントから再開します。

実装パターン

AI トレーニング クラスターの Slurm の実践

フロンティア ラボは、数百のノードを要求する単一のスバッチ スクリプトを使用して、数千の GPU にわたる数週間にわたるトレーニングの実行を開始します。

フロンティア ラボは、数百のノードを要求する単一のスバッチ スクリプトを使用して、数千の GPU にわたる数週間にわたるトレーニングの実行を開始します。チームは通常、品質のしきい値を事前に定義し、エッジ ケースに対する人的エスカレーション パスを維持し、生産性の向上とエラー コストの両方を長期的に追跡すると、より良い結果が得られます。

AI トレーニング クラスターの Slurm の実践

研究者は、PyTorch DDP 実験のために 1 つのノード上で 8 つの GPU を取得するために「srun --gres=gpu:8」を送信します。

研究者は、PyTorch DDP 実験のために 1 つのノード上で 8 つの GPU を取得するために「srun --gres=gpu:8」を送信します。チームは通常、品質のしきい値を事前に定義し、エッジ ケースに対する人的エスカレーション パスを維持し、生産性の向上とエラー コストの両方を長期的に追跡すると、より良い結果が得られます。

AI トレーニング クラスターの Slurm の実践

バックフィル スケジュールでは、大規模な予約済みトレーニング実行が開始を待機している間に、短い評価ジョブをアイドル状態の GPU にスロットに入れます。

バックフィル スケジュールでは、大規模な予約済みトレーニングの実行が開始されるまで待機している間に、短い評価ジョブをアイドル状態の GPU に割り当てます。チームは通常、品質のしきい値を事前に定義し、エッジ ケースに対する人的エスカレーション パスを確保し、生産性の向上とエラー コストの両方を長期的に追跡すると、より良い結果が得られます。

AI トレーニング クラスターの Slurm の実践

実行中にノードに障害が発生すると、Slurm はジョブをキューに再登録し、最初からやり直すのではなく、最新のチェックポイントから再開します。

実行中にノードに障害が発生すると、Slurm はジョブを再度キューに入れ、最初からやり直すのではなく、最新のチェックポイントから再開します。チームは通常、品質のしきい値を事前に定義し、エッジ ケースに対する人的エスカレーション パスを維持し、生産性の向上とエラー コストの両方を長期にわたって追跡すると、より良い結果が得られます。

リスクとガードレール

!

1 つのベンチマークを最適化すると、より広範なシステムの弱点が隠れる可能性があります。

!

インフラストラクチャとメンテナンスのコストは過小評価されがちです。

!

システムが複雑になるにつれて、セキュリティと可観測性のギャップが拡大する可能性があります。

実装ロードマップ

1

実装前にレイテンシ、品質、コストの目標を定義します。

実装前にレイテンシ、品質、コストの目標を定義します。各ステップを証拠ゲートとして扱います。基準が満たされない場合は、ロールアウトを一時停止し、ギャップを埋めてから、使用を拡大します。

2

現実的な負荷とデータ条件でのベンチマーク。

現実的な負荷とデータ条件でのベンチマーク。各ステップを証拠ゲートとして扱います。基準が満たされない場合は、ロールアウトを一時停止し、ギャップを埋めてから、使用を拡大します。

3

エラー、ドリフト、ユーザーへの影響を計測器で監視します。

エラー、ドリフト、ユーザーへの影響を計測器で監視します。各ステップを証拠ゲートとして扱います。基準が満たされない場合は、ロールアウトを一時停止し、ギャップを埋めてから、使用を拡大します。

4

スケーリングの前に、ロールバックとインシデント対応のパスを準備します。

スケーリングの前に、ロールバックとインシデント対応のパスを準備します。各ステップを証拠ゲートとして扱います。基準が満たされない場合は、ロールアウトを一時停止し、ギャップを埋めてから、使用を拡大します。

探検を続けましょう