本地初步搭建Slurm集群
这个标题听起来非常的具有迷惑性。往简单里说,我要干的事情就是:为了写一个程序和slurm调度系统交互,为了方便快速开发和迭代,我需要在本地复现学校算力平台的调度环境。
任务描述:
写一个最简单的Python脚本,调用API打印当前运行中的作业数量将其包装成一个命令行工具或集简web页面,在集群登录节点上运行成功。
我当时看到这个任务的时候也是非常蒙的,这到底是在让我干什么啊?所以我就寻求了Claude的帮助。没想到大模型的帮助在此时就显得非常关键了。
一、安装slurm集群的镜像到本地
git clone https://github.com/giovtorres/slurm-docker-cluster.git
cd slurm-docker-cluster
Claude首先告诉我,Github上有一个现成的项目,可以直接放到我这个使用场景里来。我看了这个仓库的贡献历史,发现没有什么AI的痕迹,而且有五百多个Star,觉得很靠谱。
然后大模型想让我直接运行
docker compose up -d
结果失败了。我一看结尾又是网络错误,按照上一篇文章的经验,只需要我自己先把仓库下载下来。所以我就先运行了
docker pull giovtorres/slurm-docker-cluster:latest
docker tag giovtorres/slurm-docker-cluster:latest slurm-docker-cluster:25.11.4
再尝试进行compose就成功了!成功的标志是我运行docker exec -it slurmctld bash就可以进入交互页面,输入sinfo之类的就可以得到一个和超算中心结构相同的结果。
二、改配置文件
Claude说:
你们学校平台的核心特征:
- Slurm 版本
25.11.2,和本地 Docker 镜像25.11.4几乎一致 ✅- 有 GPU(RTX5090 和 A100),每节点 8 卡
- 你作为学生能用的主要是
Students和AI1001COM分区Students分区有DefMemPerCPU=4096(每核 4GB 内存限制)
然后我需要修改配置文件,把配置分区的部分改成下面的内容:
# 节点定义(本地用2个模拟节点就够了)
NodeName=c[1-2] CPUs=4 RealMemory=16000 State=UNKNOWN
# 对应学校的 Students 分区
PartitionName=Students Nodes=c[1-2] Default=YES MaxTime=INFINITE State=UP DefMemPerCPU=4096 MaxNodes=2
# 对应学校的 AI1001COM 分区
PartitionName=AI1001COM Nodes=c[1-2] Default=NO MaxTime=1-00:00:00 State=UP
# 对应学校的 CPU-6530 分区(默认分区)
PartitionName=CPU-6530 Nodes=c[1-2] Default=NO MaxTime=INFINITE State=UP
但是我怎么方便的进行修改呢?在交互界面调用Vim直接编辑配置是行不通的,所以Claude给我想了一个好办法,就是把配置文件拷贝出来,修改完之后拷贝回去就可以了。借助cp命令:
# 先把当前配置拷出来
docker cp slurmctld:/etc/slurm/slurm.conf ./slurm.conf
# 在本地用任意编辑器改好,然后拷回去
docker cp ./slurm.conf slurmctld:/etc/slurm/slurm.conf
# 重载
docker exec slurmctld scontrol reconfigure
就可以了。用docker exec slurmctld scontrol reconfigure刷新配置,
docker exec slurmctld sinfo就可以看出分区已经被更改成功!