Pixiv - 蒼ஐ/お仕事募集中
709 字
4 分钟
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. 推荐的日志规范
为了避免日志文件到处乱飞,建议统一放在:
~/slurm_logs/<job_name>/<jobid>.out~/slurm_logs/<job_name>/<jobid>.err例如:
~/slurm_logs/train/12345.out~/slurm_logs/train/12345.err你可以在脚本中这样设置:
#SBATCH --output=/home/$USER/slurm_logs/train/%j.out#SBATCH --error=/home/$USER/slurm_logs/train/%j.err📌 3. 编写 .slurm 作业脚本
下面是一个规范化的作业脚本示例:
#!/bin/bash#SBATCH --job-name=test_job#SBATCH --partition=lab104#SBATCH --nodes=1#SBATCH --ntasks=1#SBATCH --cpus-per-task=4#SBATCH --mem=16G#SBATCH --gres=gpu:1#SBATCH --time=48:00:00
#SBATCH --output=/home/$USER/slurm_logs/test_job/%j.out#SBATCH --error=/home/$USER/slurm_logs/test_job/%j.err
echo "Job started at $(date)"python train.pyecho "Job finished at $(date)"📝 常用 Slurm 参数说明表
| 参数 | 作用 |
|---|---|
--cpus-per-task=4 | 每个任务分配 4 个 CPU |
--gres=gpu:1 | 申请 1 个 GPU |
--mem=16G | 申请 16GB 内存 |
--time=48:00:00 | 最长运行 48 小时 |
--output / --error | 指定日志路径 |
📌 4. 提交任务:sbatch
sbatch job.slurm输出示例:
Submitted batch job 12345📌 5. 查看任务队列:squeue
查看自己的任务:
squeue -u $USER查看所有任务:
squeue任务状态说明:
| 状态 | 含义 |
|---|---|
PD | Pending(排队) |
R | Running(运行中) |
CG | Completing(结束中) |
F | Failed(失败) |
📌 6. 取消任务:scancel
取消指定任务:
scancel 12345取消当前用户全部任务:
scancel -u $USER📌 7. 查看 .out 和 .err 日志
假设日志路径为:
~/slurm_logs/test_job/12345.out~/slurm_logs/test_job/12345.err查看输出日志:
cat ~/slurm_logs/test_job/12345.out查看错误日志:
cat ~/slurm_logs/test_job/12345.err📌 8. 滚动查看实时输出(tail -f)
训练过程持续产生输出时最常用:
实时查看 .out:
tail -f ~/slurm_logs/test_job/12345.out实时查看 .err:
tail -f ~/slurm_logs/test_job/12345.err退出:
Ctrl + C📌 9. 交互式任务(srun)
如果你需要进入带 GPU 的交互式环境调试:
srun --partition=lab104 --gres=gpu:1 --cpus-per-task=4 --mem=16G --pty bash退出:
exit📌 10. GPU 多卡示例
#!/bin/bash#SBATCH --job-name=multi_gpu#SBATCH --partition=lab104#SBATCH --gres=gpu:2#SBATCH --cpus-per-task=8#SBATCH --mem=64G#SBATCH --output=/home/$USER/slurm_logs/multi_gpu/%j.out#SBATCH --error=/home/$USER/slurm_logs/multi_gpu/%j.err
python train_ddp.py📌 11. 用大模型自动生成 .slurm 文件(推荐)
只需一条指令,例如:
帮我生成一个 Slurm 脚本,partition 为 lab104,需要 1 块 GPU、4 个 CPU、32GB 内存,运行 train.py,并规范输出日志。
大模型即可自动生成可直接运行的 Slurm 脚本,非常方便。
文章分享
如果这篇文章对你有帮助,欢迎分享给更多人!