这个标题听起来非常的具有迷惑性。往简单里说,我要干的事情就是:为了写一个程序和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 卡
  • 你作为学生能用的主要是 StudentsAI1001COM 分区
  • 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就可以看出分区已经被更改成功!