Slurm 使用入门教程
🧭 Slurm 使用入门教程:作业脚本编写、任务提交与队列管理指南
Slurm(Simple Linux Utility for Resource Management)是目前最主流的高性能计算(HPC)资源调度系统。本文将介绍:
- 如何编写
.slurm作业脚本 - 如何提交任务
- 如何查看任务队列
- 如何规范存放日志
- 如何查看
.out/.err文件 - 如何使用
tail -f滚动查看输出 - 如何申请 GPU、CPU、内存
- 如何让大模型自动生成 Slurm 脚本
本文假设你所在的集群使用 partition = lab104。
📌 1. 集群资源最大限制(本服务器)
服务器硬件资源上限如下:
| 资源 | 最大可申请量 |
|---|---|
| CPU | 56 核 |
| 内存 | 约 256 GB |
| GPU | 2 张(NVIDIA) |
| 节点数 | 单节点(1 台服务器) |
注意事项:
- 若申请 GPU > 2,会导致作业永久 PENDING 或被系统拒绝
- 若申请内存过大(>250GB)也会导致任务无法调度
- 建议申请资源量 ≤ 实际需求,避免占用队列
📌 2. 推荐的日志规范
为了避免日志文件到处乱飞,建议统一放在:
1 | ~/slurm_logs/<job_name>/<jobid>.out |
例如:
1 | ~/slurm_logs/train/12345.out |
你可以在脚本中这样设置:
1 | SBATCH --output=/home/$USER/slurm_logs/train/%j.out |
📌 3. 编写 .slurm 作业脚本
下面是一个规范化的作业脚本示例:
1 |
|
📝 常用 Slurm 参数说明表
| 参数 | 作用 |
|---|---|
--cpus-per-task=4 | 每个任务分配 4 个 CPU |
--gres=gpu:1 | 申请 1 个 GPU |
--mem=16G | 申请 16GB 内存 |
--time=48:00:00 | 最长运行 48 小时 |
--output / --error | 指定日志路径 |
📌 4. 提交任务:sbatch
1 | sbatch job.slurm |
输出示例:
1 | Submitted batch job 12345 |
📌 5. 查看任务队列:squeue
查看自己的任务:
1 | squeue -u $USER |
查看所有任务:
1 | squeue |
任务状态说明:
| 状态 | 含义 |
|---|---|
PD | Pending(排队) |
R | Running(运行中) |
CG | Completing(结束中) |
F | Failed(失败) |
📌 6. 取消任务:scancel
取消指定任务:
1 | scancel 12345 |
取消当前用户全部任务:
1 | scancel -u $USER |
📌 7. 查看 .out 和 .err 日志
假设日志路径为:
1 | ~/slurm_logs/test_job/12345.out |
查看输出日志:
1 | cat ~/slurm_logs/test_job/12345.out |
查看错误日志:
1 | cat ~/slurm_logs/test_job/12345.err |
📌 8. 滚动查看实时输出(tail -f)
训练过程持续产生输出时最常用:
实时查看 .out:
1 | tail -f ~/slurm_logs/test_job/12345.out |
实时查看 .err:
1 | tail -f ~/slurm_logs/test_job/12345.err |
退出:
1 | Ctrl + C |
📌 9. 交互式任务(srun)
如果你需要进入带 GPU 的交互式环境调试:
1 | srun --partition=lab104 --gres=gpu:1 --cpus-per-task=4 --mem=16G --pty bash |
退出:
1 | exit |
📌 10. GPU 多卡示例
1 |
|
📌 11. 用大模型自动生成 .slurm 文件(推荐)
只需一条指令,例如:
帮我生成一个 Slurm 脚本,partition 为 lab104,需要 1 块 GPU、4 个 CPU、32GB 内存,运行 train.py,并规范输出日志。
大模型即可自动生成可直接运行的 Slurm 脚本,非常方便。