UbuntuにSlurmを自動導入する無料スクリプト|H100・A100でGPU割り当てを検証

CPU・メモリ・GPUを検出して、単一UbuntuサーバーにSlurmを導入。H100×2、A100×4でGPUの割り当てとアクセス制限を確認した無料スクリプトを、動画・コマンド・検証条件とともに紹介します。

Share
UbuntuにSlurmを自動導入。H100とA100でGPU割り当て・制限まで検証。

GPUサーバーを複数人で使うと、「今どのGPUが空いているか」「ほかの人の計算とぶつからないか」が気になります。Slurmを使うと、必要なCPU・メモリ・GPUを指定してジョブを投入でき、空きがなければ待機させられます。

ただし、パッケージを入れただけでは、そのサーバーのCPU構成やGPU枚数に合う設定は完成しません。そこでServerGearでは、1台のUbuntuサーバーを対象に、構成の検出からSlurmの導入、テストジョブまで進めるスクリプトを作成しました。

ServerGear Slurm Starter 0.2.0 はMIT Licenseで無料配布するソフトウェアです。この記事では、実機で確認した範囲と使い方を紹介します。

無料ダウンロードはこちら — メールアドレスの確認と、更新情報・技術情報・関連サービスのお知らせ配信への同意が必要です。配信はいつでも停止できます。

動画で全体の流れを見る

YouTubeで動画を見る。約6分13秒。実機の検証記録を図解とコマンド例で説明しています。インストール操作の画面録画ではありません。ナレーションはOpenAIのAI音声「Marin」です。

まずは「1台で使えるSlurm」から

今回の対象は、新しく用意したUbuntu 26.04の単一サーバーです。CPUのみの構成に加え、NVIDIA A100・H100を同一モデルで搭載した構成に対応します。MIGは無効とし、GPUドライバーは事前に導入してください。

スクリプトはCPUトポロジー、メモリ容量、GPUの枚数と実デバイスを検出します。OS用のメモリを予約し、CPU・メモリ・GPUをジョブごとに制限する設定を生成します。

既存Slurmの移行、複数ノード、MIG、共有ストレージ、ユーザー管理、会計DBの構築は対象外です。「あらゆる環境を自動で本番運用できる」というツールではありません。

3つのコマンドで導入を確認

ダウンロードページでメールアドレスを登録し、確認メールのリンクから手続きを進めます。メール確認と、更新情報・技術情報・関連する製品/構築サービスのお知らせ配信への同意が必要です。配信はいつでも停止できます。

ZIPを展開し、sg-slurm.pyとtests/を同じ階層に置きます。同梱のREADMEと検証条件を読み、Linux上でチェックサムを確認します。

sha256sum -c SHA256SUMS

初回導入には、x86_64、systemd、cgroup v2、Python 3、sudo権限、UbuntuのAPTリポジトリへの接続が必要です。導入途中のパッケージ・サービス変更をすべて自動で巻き戻す機能はないため、新規検証環境または復元可能な環境で実施してください。

python3 sg-slurm.py inspect
sudo python3 sg-slurm.py apply --yes
python3 sg-slurm.py verify

verifyは一般ユーザーで実行します。rootから実行する場合は、--user ユーザー名を指定してください。

最初のinspectは情報を読むだけです。OS、CPU、メモリ、GPU、既存設定の有無を表示します。

apply --yesでUbuntuのSlurm・MUNGEパッケージを導入し、設定とサービスを準備します。最後のverifyで、一般ユーザーが実際にジョブを投入して完了できるか確認します。

既存の管理外設定を見つけた場合は上書きしません。ドライバーが動かない場合や、対象外のGPU・MIG構成も停止理由として表示します。

「GPUが見える」だけで終わらせない

H100を2枚搭載したサーバーでは、次のように確認できます。

python3 sg-slurm.py verify --gpus 0
python3 sg-slurm.py verify --gpus 1
python3 sg-slurm.py verify --gpus 2

GPUを要求しないジョブはGPUデバイスを開けません。1枚だけ要求したジョブは割り当てられた1枚を利用でき、残りのGPUへのアクセスは拒否されます。2枚を要求した場合は、各GPUで小さなCUDA計算を実行します。

ここでは、環境変数の表示だけでなく、デバイスを実際に開けるかを確認しています。GPU試験はCUDA Driver APIを利用するため、この確認だけのためにPyTorchやCUDA Toolkitを追加する必要はありません。

同時ジョブの「GPU 0」は同じ物理GPUとは限らない

H100の同時ジョブで、ジョブAはnvidia0だけ、ジョブBはnvidia1だけを利用できた検証結果
H100×2の実測結果を再構成。相手に割り当てられたGPUデバイスを開けないことも確認しました。

H100で1枚ずつ要求する2ジョブを同時に動かしたところ、一方は/dev/nvidia0、他方は/dev/nvidia1だけを開けました。両方でCUDA_VISIBLE_DEVICES=0と表示されても、各ジョブから見た番号なので矛盾しません。SlurmのGRESとデバイス制限の関係は、Slurm公式のGPU管理の説明にも記載されています。

この制限はSlurmが起動したジョブに対するものです。 SSHから直接起動した全処理を、自動的にSlurmの管理下へ入れる仕組みではありません。CPU・メモリ・デバイス制限の設定項目は、公式のcgroup.conf資料を参照してください。

実機で確認したこと

H100 PCIe×2、Ubuntu 26.04.1の環境で、新規導入、CPU・メモリ制限、GPUの割り当てとアクセス制限、設定変更なしの再実行、再起動後のジョブ実行を確認しました。

A100 80GB PCIe×4、Ubuntu 24.04.4でも、新しい版が生成した設定を一時的な検証環境で動かし、4枚のGPUでの計算と、2枚ずつ使う同時ジョブの分離を確認しました。A100側では既存Slurmを保護し、新規インストーラーで置き換える試験は行っていません。

GPUのないUbuntu VMでも動作を確認しています。これは動作試験であり、性能比較、長時間安定性、MPI・NCCL、GPU間通信の検証ではありません。詳しいOS・Slurmのバージョンと試験範囲は、同梱の検証条件に記載しています。

検証したOS・バージョンと方法

検証日:2026年10月24日。

環境 OS / Slurm 検証した範囲
H100 PCIe×2・32CPU Ubuntu 26.04.1 / 25.11.2-1ubuntu2 0.2.0新規導入、CPU・メモリ制限、GPU 0/1/2枚、同時1枚ずつ、再実行、実機再起動
A100 80GB PCIe×4・64CPU Ubuntu 24.04.4 / 23.11.4 生成設定を別状態領域・一時サービスで検証。GPU 0/1/4枚、同時2枚ずつ。既存Slurmへ復帰
CPU VM・2vCPU / 4GiB Ubuntu 26.04.1 / 25.11.2-1ubuntu2 クリーンOSから0.2.0を導入、9項目の統合試験
CPU VM・4vCPU / 3GiB Ubuntu 24.04.5 / 23.11.4-1.2ubuntu5 管理済み0.1.0から0.2.0へ更新、9項目の統合試験

H100のドライバーは595.91.07、A100は595.99.02。両機ともMIG無効です。H100では同じ設定のapplyをGPUジョブ実行中に再実行しても、デーモンPIDが変わらず、2ジョブが完了しました。再起動後もサービスが自動起動し、GPUジョブに成功しています。

この版で扱わないこと・既知の注意点

  • MIG、混在GPU、H200・B200・RTX、複数ノード、共有ストレージ、ユーザー管理、会計DB、HAは対象外です。
  • MPI・PMIx、NCCL、GPU間通信、性能比較、長時間安定性は未検証です。
  • Ubuntu 24.04のSlurm 23.11.4では、会計DBなしの構成で一時的にPENDING (InvalidAccount)となり、バックフィルの周期で実行される事象をCPU版の検証中に確認しました。基本優先順位設定だけでは解消しません。第一弾の導入手順は26.04を基準にしています。
  • GPUドライバー、SSH、ネットワーク、ファイアウォールの変更は行いません。ドライバー不調を検出しても、自動で再インストールや再起動はしません。
  • GPU名が同じでも、すべての筐体・ドライバーや将来のパッケージ更新を確認したものではありません。

詳細な検証条件と結果も公開しています。

実際の計算を投入する

srun --mpi=none --gres=gpu:1 --mem=1G --time=00:01:00 nvidia-smi
squeue

利用するソフトウェアやPython環境は別途用意します。ジョブには実際の計算に必要なCPU数、メモリ、実行時間を指定してください。

停止したときに確認すること

systemctl status munge slurmctld slurmd
sudo journalctl -u munge -u slurmctld -u slurmd --no-pager -n 100
scontrol show node
nvidia-smi

既存設定の上書きを拒否された場合は、その設定を削除して強行しないでください。現在の構成と移行方法を先に確認します。GPUドライバーとOSの更新は、別の運用計画で扱います。

複数台・本番運用・サーバー選定の相談へ

1台でジョブを動かせたら、次に考えるのは利用者や運用に合う構成です。

  • 複数のGPUサーバーを1つの待ち行列で使いたい。
  • 共有ストレージとユーザー管理を整えたい。
  • 既存環境を維持しながらOSやSlurmを更新したい。
  • 使うソフトに合うCPU・GPU・メモリ容量から相談したい。

ServerGearでは、こうした構築相談とサーバー選定の相談を受け付けています。仕様が決まる前でも、用途や現在困っていることからご相談ください。

サーバー・計算環境について相談する

相談時には「Slurm Starterの記事を見た」と添え、OS、GPU型番・枚数、使いたいソフト、利用人数が分かる範囲であると話を進めやすくなります。ログを送る場合は、秘密鍵・パスワード・トークンを含めないでください。

本スクリプト自体はMIT Licenseです。Slurm、MUNGE、NVIDIAソフトウェア、Ubuntuパッケージには、それぞれのライセンスが適用されます。ServerGearによるツールであり、SchedMDやNVIDIAの認証を示すものではありません。