技术指南

用于 AI 训练集群的 Slurm

Slurm 是一款开源工作负载管理器,可以在高性能计算集群上调度和运行作业,它已成为大型 AI 训练的默认选择。

听听这个指南AI叙述 · ~2 min

在本页阅读时间:2分钟
  1. 概述
  2. 深入探讨
  3. 现实世界的实施
  4. AI 训练集群 Slurm 的未来
  5. 付诸实践
  6. 不断探索
  7. 常见问题

概述

这很重要,因为它可以在数千个 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 式的效率与云原生的灵活性相结合,以实现更大规模的训练运行。

付诸实践

为什么这很重要

  • 成本与预算. 多年来,架构决策决定着性能和运营成本。
  • 更清晰的判决. 技术教育帮助团队选择正确的堆栈,而不仅仅是最新的堆栈。
  • 质量控制. 更好的工程选择可以减少生产中的可靠性事故。

留意

  • 优化一项基准测试可以隐藏更广泛的系统弱点。
  • 基础设施和维护成本常常被低估。
  • 随着系统变得更加复杂,安全性和可观察性差距可能会扩大。

后续步骤

  1. 在实施之前定义延迟、质量和成本目标。
  2. 在实际负载和数据条件下进行基准测试。
  3. 仪器监控错误、漂移和用户影响。
  4. 在扩展之前准备回滚和事件响应路径。

不断探索

免费通讯

获取每日AI简报

每个工作日早晨提供三条经过验证的AI故事,使用简明英文撰写。永久免费,无广告。

每个工作日发送一封邮件。一键退订。我们永不出售或分享您的地址。

测试一下自己

Take the Slurm for AI Training Clusters quiz

每个答案即时反馈,课程通过后可获得可验证ID的可分享证书。

开始测验

支持免费AI教育。AI Understanding是一家501(c)(3)非营利组织——无广告,无付费墙,永不收费。 捐款

常见问题

什么是 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中回填调度的目的是什么?

回填通过将较小的作业放入调度间隙中来提高利用率,只要它们不推回保留的作业即可。