Slurm全称 Slurm Workload Manager曾用名 Simple Linux Utility for Resource Management是高性能计算HPC集群、超级计算机以及现代大规模 AI 算力集群中统治级的一款开源集群作业调度与工作负载管理器。简单来说当一个实验室、数据中心或云平台拥有成百上千台服务器、数万张 GPU 时不可能让每个工程师直接 SSH 登录到某台机器上抢占资源运行程序。Slurm 就是这个集群的“终极交通大队长”负责统一管理硬件资源公平、高效地分配任务。1. Slurm 的三大核心功能资源分配Resource Allocation为用户分配特定时间段内计算节点Nodes的独占或共享访问权限包括 CPU、显存、内存、通用资源如 GPU 等。作业调度Job Scheduling提供一个框架对排队等待的作业Jobs进行复杂的优先级排序、抢占和按序启动、执行和监控。资源争用仲裁当数百名研发人员同时提交训练任务、资源供不应求时Slurm 依靠公平份额Fair-share、多因子优先级、QoS服务质量等算法解决冲突。2. Slurm 的分布式架构与核心组件Slurm 采用一种高度模块化、轻量级的后台守护进程Daemon架构主要分为以下几个角色① 控制平面 (Control Plane)slurmctld中央控制器守护进程整个集群的“大脑”通常运行在独立的管理节点上。它负责监控所有硬件状态、维护作业队列、根据调度策略进行排产。为了防止单点故障通常会配置一个 Backupslurmctld实现高可用。slurmdbd数据库守护进程负责将历史作业、计费Accounting、资源配额限制、集群联动信息等持久化写入底层的 MySQL/MariaDB 数据库。这为后续做资源审计、算力开销统计提供了依据。② 执行平面 (Execution Plane)slurmd节点计算守护进程运行在每一个计算节点上的“包工头”。它像一个安全的远程 Shell 监听器接收来自slurmctld的指令在本地创建作业环境、拉起具体的计算进程、监控本地资源占用如防止内存溢出并在作业结束时清理现场、汇报状态。3. Slurm 的基本概念与术语在使用 Slurm 时你会频繁遇到以下核心术语Node节点集群中的单台物理服务器或虚拟机。Partition分区逻辑上的“作业队列”。管理员通常把节点按硬件类型、限时长短划分为不同的分区例如gpu_short分区限时 2 小时cpu_long分区允许运行 7 天。Job作业用户提交给 Slurm 管理的一核或多核计算请求。Job 可以由多个顺序或并行的Job Steps作业步组成。GRESGeneric Resources通用资源用于调度非 CPU 的特殊硬件。在 AI 集群中GPU 就是最典型的 GRES例如限制每个 Job 只能申请 4 张gpu:a100:4。4. 研发人员最常用的四核命令工具箱用户在登录节点Login Node进行日常开发和作业提交时主要通过以下几个命令行接口CLI与集群交互①sbatch—— 离线批处理提交最常用编写一个特殊的 Shell 脚本其中包含以#SBATCH开头的预编译指令提交给系统后用户可以断开连接Slurm 会在排到队时自动在后台执行它。#!/bin/bash#SBATCH --job-nametrain_llm # 作业名称#SBATCH --partitiongpu_nodes # 提交到 GPU 分区#SBATCH --nodes2 # 申请 2 个计算节点#SBATCH --gresgpu:4 # 每个节点申请 4 张 GPU (共 8 卡)#SBATCH --cpus-per-task8 # 每个任务分配 8 个 CPU 核心#SBATCH --time48:00:00 # 最大运行时间 48 小时#SBATCH --outputres_%j.log # 标准输出日志 (%j 会自动替换为 Job ID)# 真正执行的代码sourceactivate my_env srun python train.py--model_configconfigs/llama3.json提交命令sbatch run.sh②srun—— 交互式/实时任务拉起用于实时启动一个并行作业如运行 MPI 程序。如果你在交互式终端直接运行srun --gresgpu:1 --pty bashSlurm 会在分到 GPU 资源后立即把你重定向Drop到那台计算节点的 Bash 中非常适合调试代码。③squeuesinfo—— 状态观测sinfo查看当前集群中各个 Partition、各台机器的健康状态如idle空闲、alloc已分配、down故障。squeue查看当前正在运行状态为R以及正在排队状态为PD并显示排队原因如Dependency或Resources的作业列表。④scancel—— 强杀作业如果不小心写错代码发生死循环或死锁通过scancel Job_ID可以立即强制释放占用的机器资源。5. 为什么大模型LLM训练首选 Slurm 架构在 2026 年的今天虽然云原生 KubernetesK8s在微服务和 AI 推理部署Inference领域无处不在但在超大规模基础大模型预训练Pre-training阶段Slurm 依然是不可动摇的首选。核心原因在于极低的通信开销与裸金属性能大模型分布式训练对网络延迟InfiniBand 延迟极其敏感。Slurm 运行在高度一致的 Linux 裸金属Bare-metal环境上没有任何容器网络层如 Overlay 网络的封装剥离带来的额外开销。深度集成 MPI 与拓扑感知Slurm 原生理解物理网络拓扑。当提出需要 32 台机器、256 张 GPU 进行张量并行Tensor Parallel时Slurm 的算法会自动挑选物理上插在同一个 InfiniBand 交换机叶节点Leaf Switch下的服务器最大程度减少跨交换机通信引起的 NCCL 阻塞。极其高效的批量排产机制支持作业阵列Job Arrays和超大规模 Backfill回填机制。如果有一个大作业在等待很多机器Slurm 在等待期间可以把小作业“塞进”空闲的小时间碎片里运行把 GPU 集群的整体综合利用率Utilization压榨到 95% 以上。