技术指南

优化器状态卸载到 CPU 和 NVMe

一种节省内存的技巧,可将繁重的训练记录(优化器状态、梯度,有时是权重)存放在 CPU RAM 或 NVMe SSD 上,而不是稀缺的 GPU 内存中。

概述

一种节省内存的技巧,可将繁重的训练记录(优化器状态、梯度,有时是权重)存放在 CPU RAM 或 NVMe SSD 上,而不是稀缺的 GPU 内存中。它可以让人们训练比 GPU 内存允许的更大的模型。

优化器状态卸载到 CPU 和 NVMe 是一个技术构建块,会大规模影响模型质量、基础设施成本、延迟和可靠性。

深入探讨

当您使用 Adam 这样的优化器训练神经网络时,每个参数都会带来额外的负担:两个运行统计数据(动量和方差),加上权重的全精度副本及其梯度。在混合精度训练中,每个参数总计大约 16 个字节,使权重本身的 2 个字节相形见绌。卸载将这些负担从 GPU 上移走。 CPU 卸载通过 PCIe 总线将优化器状态流式传输到普通系统 RAM,而 NVMe 卸载将它们一直推送到快速固态磁盘。该技术因 DeepSpeed 的 ZeRO-Infinity 和 ZeRO-Offload 而流行,以原始速度换取容量,让单个 GPU 或小型集群能够微调具有数十亿个参数的模型。

技术洞察

关键是将数据移动与计算重叠。优化器状态位于 CPU/NVMe 中;在向后传递期间,分区在需要之前通过 PCIe 预取,并且优化器步骤本身通常在 CPU 上运行。 ZeRO-Offload 将 float32 主权重和 Adam 矩保留在 CPU 上,因此只有前向和后向数学保留在 GPU 上。 NVMe 添加了分层缓存,因此 TB 级状态会溢出到磁盘,而热分区则保留在 RAM 中。

掌握优化器状态卸载到 CPU 和 NVMe

一种节省内存的技巧,可将繁重的训练记录(优化器状态、梯度,有时是权重)存放在 CPU RAM 或 NVMe SSD 上,而不是稀缺的 GPU 内存中。它可以让人们训练比 GPU 内存允许的更大的模型。优化器状态卸载到 CPU 和 NVMe 是一个技术构建块,会大规模影响模型质量、基础设施成本、延迟和可靠性。为了加深理解,请将优化器状态卸载到 CPU 和 NVMe 视为一种操作模型,而不是单个功能:定义所需的结果,澄清假设,并将系统可以可靠地执行的操作与仍需要专家判断的操作分开。

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

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

战略影响

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

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

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

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

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

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

优化器状态卸载到 CPU 和 NVMe 的未来

随着模型的 GPU 内存不断增长,分层卸载正在成为标准而不是奇特的。预计与更快的互连(例如模糊 CPU-GPU 边界的 NVLink-C2C 和 CXL 内存池)以及更智能的调度程序(可以预测要预取的状态)的更紧密集成。 Grace Hopper 等统一内存架构减少了 PCIe 损失,并且框架正在推动多层卸载几乎透明,以便爱好者可以在适度的硬件上微调大型模型。

现实世界的实施

使用 DeepSpeed ZeRO-Offload 在单个 24 GB 消费级 GPU 上微调 130 亿参数 LLM,将 Adam 状态推送到 CPU RAM。

一个小型研究实验室通过 ZeRO-Infinity 将优化器状态溢出到 NVMe 驱动器,在几个 GPU 上训练数十亿参数模型。

Hugging Face Accelerate 配置可启用 CPU 卸载,以便用户可以运行完整的微调作业,否则会引发内存不足错误。

注重成本的初创公司租用更便宜、内存更低的云 GPU 并卸载到附加的 NVMe,而不是购买顶级 80 GB 卡。

实施模式

实践中优化器状态卸载到 CPU 和 NVMe

使用 DeepSpeed ZeRO-Offload 在单个 24 GB 消费级 GPU 上微调 130 亿参数 LLM,将 Adam 状态推送到 CPU RAM。

使用 DeepSpeed ZeRO-Offload 在单个 24 GB 消费级 GPU 上微调 130 亿参数的 LLM,将 Adam 状态推送到 CPU RAM 团队在预先定义质量阈值、为边缘情况保留人工升级路径并随着时间的推移跟踪生产力增益和错误成本时,通常会获得更好的结果。

实践中优化器状态卸载到 CPU 和 NVMe

一个小型研究实验室通过 ZeRO-Infinity 将优化器状态溢出到 NVMe 驱动器,在几个 GPU 上训练数十亿参数模型。

一个小型研究实验室通过使用 ZeRO-Infinity 团队将优化器状态溢出到 NVMe 驱动器来在几个 GPU 上训练数十亿参数模型,当他们预先定义质量阈值、为边缘情况保留人工升级路径并随着时间的推移跟踪生产力增益和错误成本时,通常会得到更好的结果。

实践中优化器状态卸载到 CPU 和 NVMe

Hugging Face Accelerate 配置可启用 CPU 卸载,以便用户可以运行完整的微调作业,否则会引发内存不足错误。

Hugging Face Accelerate 配置可实现 CPU 卸载,以便用户可以运行全面的微调作业,否则会引发内存不足错误。当团队预先定义质量阈值、为边缘情况保留人工升级路径并随着时间的推移跟踪生产力增益和错误成本时,通常会获得更好的结果。

实践中优化器状态卸载到 CPU 和 NVMe

注重成本的初创公司租用更便宜、内存更低的云 GPU 并卸载到附加的 NVMe,而不是购买顶级 80 GB 卡。

具有成本意识的初创公司租用更便宜、内存更低的云 GPU 并卸载到附加的 NVMe,而不是支付顶级 80 GB 卡的费用。当团队预先定义质量阈值、为边缘情况保留人工升级路径并随着时间的推移跟踪生产力增益和错误成本时,通常会获得更好的结果。

风险与防护栏

!

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

!

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

!

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

实施路线图

1

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

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

2

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

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

3

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

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

4

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

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

不断探索