2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

SlurmによるGPUクラスタの構築手順 ①

Last updated at Posted at 2025-08-18

はじめに

1 Intro

こんにちは、今年の4月から研究室配属になった新B4の学生です。

研究室内で学習環境を整備し、GPUクラスタとジョブスケジューラを構築することになったが、ネット上の情報が少なく、参考にしづらかったです。したがってこの記事ではジョブスケジューラであるSlurm、NFS、LDAPを用いたGPUクラスタの構築手順を自分の試行錯誤経験をベースに紹介して行きたいです。

初心者で恐縮だが、もしなにか不備あったら教えてくれるとありがたい。

2. 構成

使用する構成:

  • OS: Ubuntu 24.04 LTS
  • GPU: RTX3080, RTX3060

ネットワーク環境:

  • mDNSによるネットワーク内の各ノード間の通信すでに行っている

Slurmの構築

1. インストール

1.1 Slurm

Slurmにはコントローラー用、計算ノード用など複数種類の実行ファイルが用意されているが、インストールは主に2つの方法がある:

  1. ソースコードからビルドする
  2. aptを使用して、パッケージとしてインストールする

ソースコードからビルドする場合は次の記事を参考にしてください。

今回の場合はパッケージからインストールする。

bash
sudo apt install slurm-wlm

aptを使用してコントローラーノードと計算ノードの両方にインストールする必要がある。

1.2 munge

mungeはノード間通信の認証のためのパッケージであり、同様にaptでインストールする。

bash
sudo apt install munge libmunge-dev

2 設定

2.1 mungeのkey 作成

mungeはノード間での通信の検証を行うためには共通のkeyを全ノード間で持つ必要がある。従って、mungeのkeyを生成し、他のノードになんかしらの方法で送信する必要がある。

bash
sudo /usr/sbin/create-munge-key
sudo ls -la /etc/munge

次のmunge.keyがあればOK

-r--------.   1 munge munge 1024 Nov 24 14:34 munge.key

すべてのノードに同じkeyをコピーする必要がある

bash
sudo scp /etc/munge/munge.key  [your_node_username]@[your_node_ip]:/etc/munge

2.2 munge userのuidの統一

全ノードのmunge userのuidを統一する必要がある

全ノード間では、mungeのuidとgidを統一する必要があるので、slurm controllerとなるノードに合わせることをおすすめする。今回は990で統一する。

sudo su
systemctl stop munge #mungeを一時的に止める
groupmod -g 990 munge #mungeのuid gidを変更
usermod  -u 990 -g 990 munge
chown -R munge:munge /etc/munge /var/lib/munge /var/log/munge #mungeと関連あるディレクトリの権限を変更
systemctl daemon-reload #daemon processのmungeを再起動
systemctl start munge

2.3 slurm userのuidの統一

全ノードのslurm userのuidを統一する必要がある

slurmも同じく全ノード間のuidとgidを揃える必要がある。今回は64030にする

systemctl stop slurmctld #計算ノードの場合は slurmd
groupmod -g 64030 slurm
usermod  -u 64030 -g 64030 slurm
systemctl daemon-reload #daemon processのslurmctldを再起動
systemctl start slurmctld

2.4 slurm.confの設定

slurm.confの設定内容が多く、項目が煩雑なので、今回の記事では重要な項目についてのみ説明する。slurm公式はにはslurm.confを作成するためのツールがあり、次となる。

作成したslurm.confはおそらくコメントが多いと思うが、ここでコメントされていない項目について羅列する

# slurm.conf file generated by configurator.html.
# Put this file on all nodes of your cluster.
# See the slurm.conf man page for more information.
#
ClusterName=your-cluster-name
SlurmctldHost=you-controller-name
SlurmctldParameters=enable_configless #重要!
GresTypes=gpu  #gpu
ProctrackType=proctrack/cgroup

ReturnToService=1
SlurmctldPidFile=/run/slurm/slurmctld.pid
SlurmctldPort=6817
SlurmdPidFile=/run/slurm/slurmd.pid
SlurmdPort=6818
SlurmdSpoolDir=/var/spool/slurmd
SlurmUser=slurm
SlurmdUser=root
StateSaveLocation=/var/spool/slurmctld

InactiveLimit=0
KillWait=30
MinJobAge=300
SlurmctldTimeout=120
SlurmdTimeout=300
Waittime=0
#
#
# SCHEDULING
SchedulerType=sched/backfill
SelectType=select/cons_tres
#
# LOGGING AND ACCOUNTING
JobCompType=jobcomp/none

JobAcctGatherFrequency=30
#JobAcctGatherType=
SlurmctldDebug=info
SlurmctldLogFile=/var/log/slurm/slurmctld.log
SlurmdDebug=info
SlurmdLogFile=/var/log/slurm/slurmd.log

ここで特に重要な項目として挙げられるのは:

  1. SlurmctldParameters=enable_configless
  2. SlurmctldHost=you-controller-name
  3. GresTypes=gpu
  4. SlurmdUser=root
  5. SlurmdLogFile,SlurmctldLogFile

1. configless モード

まずはconfiglessですが、従来のslurm.confはすべてのノードに配置する必要があったが、このenable_configlessを使用することで、コントローラーに配置するだけで済ませるので、configlessモードを使用すると、slurm.confに変更があったときにとても手間が減る。

2. SlurmctldHost

SlurmctldHostはコントローラーのホスト名となり、

hostname -s

で確認できる。

3. GresTypes

gpuクラスタを構築するために、計算資源をgpuとして指定する必要がある。

ただし、gpu使用するには、gpuの情報を入力する必要があるため、ノード間の通信の確認が終わるまで書かないほうがいい

4. logファイルの保存

SlurmdLogFile、SlurmctldLogFileはSlurmの動作そして設定中のログの確認のためのファイルであり、構築時のエラーメッセージが非常に重要である。この項目を上記のパスのように設定し、そのパスにあるディレクトリのuserと権限を変更を忘れないでください

sudo chown -R slurm:slurm /var/log/slurm

5. SlurmdUser

計算ノードで計算した結果を書き込む場合に権限周りがめんどくさいため、rootに指定すると無難である。

最後に

この記事では、slurmによるgpuクラスタを構築するための最初の設定の説明を行った。次の記事では、

  • slurm.confの配置の残りの説明
  • 計算ノードslurmd.service の設定内容
  • ノード間通信は正常に行ってるか確認するための方法

について述べる予定。

参考文献

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?