主要观点总结
本文围绕大模型的训练/推理场景,介绍如何有效估算模型加载后的显存值,包括模型显存内容分析、计算公式以及如何优化显存。文章详细阐述了模型参数、优化器状态、激活值和梯度值的估算方法,并介绍了训练的并行计算公式。此外,文章还讨论了显存优化策略,包括多卡并行、算子优化、数据类型修改、消除框架副本、显存管理和底层API等方法。
关键观点总结
关键观点1: 模型显存内容分析
包括系统层和框架侧的显存消耗,用户可控的是框架侧的显存消耗,也是本文的分析重点。以PyTorch框架为例,通过显存可视化工具看一下训练过程中显存的消耗。
关键观点2: 训练场景下的显存消耗估算
包括模型参数、优化器状态、梯度值和激活值的估算方法,以及不同时刻显存的占比变化。通过数值的变化,可将显存消耗分为静态/动态值。
关键观点3: 训练的并行计算公式
包括Tensor并行、序列并行、Pipeline并行等,目标都是让GPU能够装下更大的模型。通过并行策略的调整,可以降低单卡的显存消耗。
关键观点4: 推理场景的显存消耗估算
相比训练场景,推理的显存量组成成分更简单,有一个简单的估算公式。
关键观点5: 显存优化策略
包括多卡并行、算子优化、数据类型修改、消除框架副本、显存管理和底层API等方法。这些策略可以帮助降低模型算法的显存消耗,扩大显存空间。
文章预览
Author: kaiyuan Link: https://zhuanlan.zhihu.com/p/687226668 编辑 : 丁师兄大模型 引自:DataWhale AI 算法在服务器中运行时,一个常见问题“单张 GPU 能承载多少模型参数?”,该问题跟模型结构、引擎框架、驱动版本、GPU 硬件相关。 本文围绕大模型的训练/推理场景,介绍 Transformer 类模型的显存计算公式,帮助读者能更好的了解全局显存的组成以及如何优化显存。 文中涉及的主要问题: 如何有效估算一个模型加载后的显存值? 计算值与实际 GPU 中的最大值的差距可以有多大? 大模型切分策略是如何降低显存的?计算公式怎么构建? 优化显存的方法和常见的优化思路? 01 模型显存内容分析 在模型训练/推理时,显存(显卡的全局内存)分配一部分是给 AI 框架,另一部分给了系统(底层驱动)。 总的显存消耗量可以通过 API 查询,比如在 NVIDIA-GPU 上通过 nvid
………………………………