针对大模型所需显存的计算方法,一直是开发人员关注的焦点。在《大模型应用开发的内存管理》一文中,作者详细阐述了模型大小与显存占用的关系及计算方法,为读者提供了清晰的指导。
为了方便实际应用,现从实用角度简述一个估算公式并介绍一个评估工具。
估算公式简介
该公式经过简化处理,虽未考虑kvcache所需显存及context大小的影响,但依旧具有较高的参考价值。
以运行16位精度的Llama 70B模型为例,通过套用估算公式可快速得出所需的GPU内存。该模型拥有700亿参数。
估算方式如下:M = (模型参数数 × 每参数所需字节数) × 安全系数。对于16位精度,每参数所需字节数为4,安全系数通常设为1.2左右。计算得出,该模型大约需要168GB的显存。
这表明,单个80GB的A100 GPU无法满足需求,需多个GPU协同工作才能顺利运行。
如何降低显存占用
量化是一种有效的降低内存占用的方法。通过将模型参数的精度从浮点数降低到低位表示,如8位整数,可以显著降低内存和计算需求。这需要在保持模型性能的前提下进行精细调整,因为降低精度可能会影响输出的准确性。
例如,对于4位量化的Llama 2 70B模型,通过重新计算可得出约42GB的显存需求。这意味着使用两个24GB的L4 GPU即可运行此模型。
评估工具介绍
除了估算公式外,还推荐一个能够自动计算显存的评估工具。该工具可帮助用户快速确定在给定的RAM、操作系统开销、上下文窗口大小及量化级别下,能够载入运行多大参数量的模型。
工具的输入包括可用的RAM(以GB为单位)、估计操作系统RAM使用量(以GB为单位)、上下文窗口大小(Token数量)以及量化级别(每个参数的比特数)。通过一系列计算步骤,工具将输出可支持的最大参数量。
若计算结果为负值,则表示上下文窗口大小对于可用的RAM来说过大。工具将显示错误信息,建议用户调整上下文窗口大小或增加可用RAM。
参考文献:
[1] 相关文章链接,详见关于GPU内存计算的博客
[2] GitHub代码仓库链接,提供LLM计算工具