技术指南

用于 AI 训练集群的 Slurm

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

概述

Slurm 是一款开源工作负载管理器,可以在高性能计算集群上调度和运行作业,它已成为大型 AI 训练的默认选择。这很重要,因为它可以在数千个 GPU 上可靠地分配大量训练运行。

AI 训练集群的 Slurm 是一个技术构建块,会大规模影响模型质量、基础设施成本、延迟和可靠性。

深入探讨

Slurm(用于资源管理的简单 Linux 实用程序)起源于超级计算,现在为世界上许多最大的人工智能训练集群提供支持。用户使用 sbatch 提交批处理脚本,使用 --gres=gpu:8 等指令请求节点和 GPU 等资源,以及 Slurm 队列、优先级并启动工作。它的 srun 启动器在节点之间生成协调的进程,这与 PyTorch DDP 和 NCCL 等分布式框架自然配对。 Slurm 跟踪资源核算,实施公平共享和分区限制,并处理回填调度以将小作业放入间隙中。对于前沿模型训练,团队依靠 Slurm 来管理数千个 GPU,在节点故障后从检查点重新启动,并为长时间的多周运行保留专用容量。

技术洞察

Slurm 控制器守护进程 (slurmctld) 做出调度决策,而每个节点上的 slurmd 代理启动任务并报告状态。通用资源 (GRES) 插件跟踪 GPU,以便作业明确请求它们。 srun 设置分布式训练库读取的环境变量(排名、世界大小、主地址)以引导 NCCL 通信。回填调度可以让较短的作业尽早运行,只要它们不延迟较高优先级的预留即可,从而保持较高的利用率。

掌握 AI 训练集群的 Slurm

Slurm 是一款开源工作负载管理器,可以在高性能计算集群上调度和运行作业,它已成为大型 AI 训练的默认选择。这很重要,因为它可以在数千个 GPU 上可靠地分配大量训练运行。 AI 训练集群的 Slurm 是一个技术构建块,会大规模影响模型质量、基础设施成本、延迟和可靠性。为了建立深入的理解,请将 Slurm for AI Training Clusters 视为一种操作模型,而不是单一功能:定义期望的结果,澄清假设,并将系统可以可靠地完成的任务与仍需要专家判断的任务分开。

在实践中,强大的团队使用 Slurm 进行 AI 训练集群,根据可靠性和成本优化架构、数据和基础设施选择。他们记录明确的成功标准,根据实际数据和工作流程进行测试,并根据观察到的失败模式而不是一次性基准测试胜利进行迭代。这就是理论理解转变为跨产品、政策和运营的持久能力的地方。

多年来,架构决策决定着性能和运营成本。与此同时,优化一个基准测试可以隐藏更广泛的系统弱点。最具弹性的方法是将实验速度与治理规则结合起来:运行试点、捕获证据、发布决策日志,并随着模型行为、用户期望和监管要求的发展不断更新保障措施。

战略影响

多年来,架构决策决定着性能和运营成本。

多年来,架构决策决定着性能和运营成本。在高质量部署中,这会转化为可衡量的操作规则、所有权边界和定期审查仪式,以便团队可以增强信心,而不是扩大模糊性。

技术教育帮助团队选择正确的堆栈,而不仅仅是最新的堆栈。

技术教育帮助团队选择正确的堆栈,而不仅仅是最新的堆栈。在高质量部署中,这会转化为可衡量的操作规则、所有权边界和定期审查仪式,以便团队可以增强信心,而不是扩大模糊性。

更好的工程选择可以减少生产中的可靠性事故。

更好的工程选择可以减少生产中的可靠性事故。在高质量部署中,这会转化为可衡量的操作规则、所有权边界和定期审查仪式,以便团队可以增强信心,而不是扩大模糊性。

AI 训练集群 Slurm 的未来

Slurm 继续添加云爆发、通过 Pyxis 和 Enroot 的容器支持以及更严格的 GPU 感知功能。随着 AI 集群扩展到超过 100,000 个 GPU,预计会有更强的容错能力、自动检查点重启集成以及在故障后调整大小的弹性作业。许多组织现在在 Kubernetes 旁边或之下运行 Slurm,混合调度程序旨在将 HPC 式的效率与云原生的灵活性相结合,以实现更大规模的训练运行。

现实世界的实施

前沿实验室使用请求数百个节点的单个 sbatch 脚本在数千个 GPU 上启动了为期数周的训练。

一名研究人员提交“srun --gres=gpu:8”以在一个节点上获取 8 个 GPU 来进行 PyTorch DDP 实验。

回填调度将一个简短的评估作业插入空闲 GPU,同时大量保留的训练运行等待开始。

节点在运行中失败后,Slurm 会重新排队作业,并从最新的检查点恢复,而不是重新开始。

实施模式

Slurm 的 AI 训练集群实践

前沿实验室使用请求数百个节点的单个 sbatch 脚本在数千个 GPU 上启动了为期数周的训练。

前沿实验室使用单个批处理脚本在数千个 GPU 上启动了为期数周的训练,请求数百个节点。当团队预先定义质量阈值、为边缘情况保留人工升级路径并随着时间的推移跟踪生产力增益和错误成本时,通常会获得更好的结果。

Slurm 的 AI 训练集群实践

一名研究人员提交“srun --gres=gpu:8”以在一个节点上获取 8 个 GPU 来进行 PyTorch DDP 实验。

研究人员提交“srun --gres=gpu:8”以在一个节点上获取 8 个 GPU 来进行 PyTorch DDP 实验。当团队预先定义质量阈值、为边缘情况保留人工升级路径并随着时间的推移跟踪生产力增益和错误成本时,通常会获得更好的结果。

Slurm 的 AI 训练集群实践

回填调度将一个简短的评估作业插入空闲 GPU,同时大量保留的训练运行等待开始。

回填调度将一个简短的评估作业插入空闲 GPU,同时大量预留的训练运行等待开始。当团队预先定义质量阈值、为边缘情况保留人工升级路径并跟踪一段时间内的生产力增益和错误成本时,通常会获得更好的结果。

Slurm 的 AI 训练集群实践

节点在运行中失败后,Slurm 会重新排队作业,并从最新的检查点恢复,而不是重新开始。

节点在运行中出现故障后,Slurm 会重新排队作业,并从最新的检查点恢复,而不是重新开始。当团队预先定义质量阈值、为边缘情况保留人工升级路径并随着时间的推移跟踪生产力增益和错误成本时,通常会获得更好的结果。

风险与防护栏

!

优化一项基准测试可以隐藏更广泛的系统弱点。

!

基础设施和维护成本常常被低估。

!

随着系统变得更加复杂,安全性和可观察性差距可能会扩大。

实施路线图

1

在实施之前定义延迟、质量和成本目标。

在实施之前定义延迟、质量和成本目标。将每个步骤视为证据门:如果不满足标准,则暂停推出,缩小差距,然后再扩大使用。

2

在实际负载和数据条件下进行基准测试。

在实际负载和数据条件下进行基准测试。将每个步骤视为证据门:如果不满足标准,则暂停推出,缩小差距,然后再扩大使用。

3

仪器监控错误、漂移和用户影响。

仪器监控错误、漂移和用户影响。将每个步骤视为证据门:如果不满足标准,则暂停推出,缩小差距,然后再扩大使用。

4

在扩展之前准备回滚和事件响应路径。

在扩展之前准备回滚和事件响应路径。将每个步骤视为证据门:如果不满足标准,则暂停推出,缩小差距,然后再扩大使用。

不断探索