概述
这很重要,因为它可以在数千个 GPU 上可靠地分配大量训练运行。
深入探讨
Slurm(用于资源管理的简单 Linux 实用程序)起源于超级计算,现在为世界上许多最大的人工智能训练集群提供支持。用户使用 sbatch 提交批处理脚本,使用 --gres=gpu:8 等指令请求节点和 GPU 等资源,以及 Slurm 队列、优先级并启动工作。它的 srun 启动器在节点之间生成协调的进程,这与 PyTorch DDP 和 NCCL 等分布式框架自然配对。 Slurm 跟踪资源核算,实施公平共享和分区限制,并处理回填调度以将小作业放入间隙中。对于前沿模型训练,团队依靠 Slurm 来管理数千个 GPU,在节点故障后从检查点重新启动,并为长时间的多周运行保留专用容量。
现实世界的实施
前沿实验室使用请求数百个节点的单个 sbatch 脚本在数千个 GPU 上启动了为期数周的训练。
一名研究人员提交“srun --gres=gpu:8”以在一个节点上获取 8 个 GPU 来进行 PyTorch DDP 实验。
回填调度将一个简短的评估作业插入空闲 GPU,同时大量保留的训练运行等待开始。
节点在运行中失败后,Slurm 会重新排队作业,并从最新的检查点恢复,而不是重新开始。
AI 训练集群 Slurm 的未来
Slurm 继续添加云爆发、通过 Pyxis 和 Enroot 的容器支持以及更严格的 GPU 感知功能。随着 AI 集群扩展到超过 100,000 个 GPU,预计会有更强的容错能力、自动检查点重启集成以及在故障后调整大小的弹性作业。许多组织现在在 Kubernetes 旁边或之下运行 Slurm,混合调度程序旨在将 HPC 式的效率与云原生的灵活性相结合,以实现更大规模的训练运行。
付诸实践
为什么这很重要
- 成本与预算. 多年来,架构决策决定着性能和运营成本。
- 更清晰的判决. 技术教育帮助团队选择正确的堆栈,而不仅仅是最新的堆栈。
- 质量控制. 更好的工程选择可以减少生产中的可靠性事故。
留意
- 优化一项基准测试可以隐藏更广泛的系统弱点。
- 基础设施和维护成本常常被低估。
- 随着系统变得更加复杂,安全性和可观察性差距可能会扩大。
后续步骤
- 在实施之前定义延迟、质量和成本目标。
- 在实际负载和数据条件下进行基准测试。
- 仪器监控错误、漂移和用户影响。
- 在扩展之前准备回滚和事件响应路径。
不断探索
常见问题
什么是 AI 训练集群 Slurm?
Slurm 是一款开源工作负载管理器,可以在高性能计算集群上调度和运行作业,它已成为大型 AI 训练的默认选择。这很重要,因为它可以在数千个 GPU 上可靠地分配大量训练运行。
用户通常使用什么命令向 Slurm 提交批处理作业?
sbatch 将描述作业的资源和命令的批处理脚本提交到 Slurm 队列。
Slurm 作业如何请求 GPU?
通用资源 (GRES) 系统允许作业显式请求 GPU,例如 --gres=gpu:8。
哪个 Slurm 组件做出中央调度决策?
slurmctld 是调度作业的控制器守护进程,而 slurmd 在每个节点上运行以启动任务。
Why can srun help launch distributed training tasks inside a Slurm allocation?
srun launches task steps in the allocation and exposes Slurm task information; distributed frameworks may still require explicit rendezvous settings.
Slurm中回填调度的目的是什么?
回填通过将较小的作业放入调度间隙中来提高利用率,只要它们不推回保留的作业即可。