如何估算LLM推理和训练所需的GPU内存?

作者:孙鹏飞,南京大学 · 计算机科学与技术
原文:https://zhuanlan.zhihu.com/p/716317173

在实际工作中,经常有人问,7B、14B或70B的模型需要多大的显存才能推理?如果微调他们又需要多大的显存呢?为了回答这个问题整理一份训练或推理需要显存的计算方式。如果大家对具体细节不感兴趣,可以直接参考经验法则评估推理或训练所需要的资源。更简单的方式可以通过这个工具[1]或者huggface官网计算推理/训练需要的显存工具[2]在线评估。

数据精度

开始介绍之前,先说一个重要的概念——数据精度。数据精度指的是信息表示的精细程度,在计算机中是由数据类型和其位数决定的。如果想要计算显存,从“原子”层面来看,就需要知道我们的使用数据的精度,因为精度代表了数据存储的方式,决定了一个数据占多少bit。目前,精度主要有以下几种:

  • • 4 Bytes: FP32 / float32 / 32-bit

  • • 2 Bytes: FP16 / float16 / bfloat16 / 16-bit

  • • 1 Byte: int8 / 8-bit

  • • 0.5 Bytes: int4 / 4-bit

经验法则

  • • 推理: 参数量 * 精度。

例如,假设模型都是16-bit权重发布的,也就是说一个参数消耗16-bit或2 Bytes的内存,模型的参数量为70B,基于上述经验法则,推理最低内存需要70B * 2Bytes = 140G。

  • • 训练: 4 - 6 倍的推理资源。

推理

在模型推理阶段,需要的资源主要有三部分:模型的权重、KV Cache和激活(在推理过程中创建的张量)。

模型权重

加载模型权重(即模型大小)占用资源主要依赖于模型的参数量和精度。其中,参数量基本不变,精度可以通过模型量化技术进行优化。尽管量化会影响模型的性能,但相比于选择更高精度的小模型来说,量化技术更受青睐。

公式:模型的大小 = 模型的参数量 * 精度

在这里插入图片描述

十亿参数模型在 32 位、16 位和 8 位精度下所需的近似 GPU 内存[2]

KV Cache

在Transformer的解码阶段,每次推理生成一个token,依赖于之前的token结果,如果每次都对所有token重新计算一次,代价非常大。为了避免重新计算,通过KV Cache技术将其缓存到GPU内存中。

公式:KV Cache = 2 * Batch Size * Sequence Length * Number of Layers * Hidden Size * Precision

注意:第一个因子2解释了K和V矩阵。通常,在Transformer中,Hidden Size和Number of Layers的值可以在模型相关的配置文件中找到。

激活内存

在模型的前向传播过程中,必须存储中间激活值。这些激活值代表了神经网络中每层的数据在向前传播时的输出。它们必须保持为 FP32 格式,以避免数值爆炸并确保收敛。

公式 :Activation Memory = Batch Size * Sequence Length * Hidden Size * (34 + (5 * Sequence Length * Number of attention heads) / (Hidden Size))

训练

训练阶段所需的资源,除了上述介绍的模型权重、KV Cache和激活内存之外,还需要存储优化器和梯度状态,因此,训练比推理需要更多的资源。

优化器内存

优化器需要资源来存储参数和辅助变量。这些变量包括诸如Adam或SGD等优化算法使用的动量和方差等参数。这取决于优化状态的数量及其精度。例如,AdamW优化器是最流行的微调llm,它为模型的每个参数创建并存储2个新参数。如果我们有一个70B的模型,优化器将创建140B的新参数!假设优化器的参数为float32,即每个参数占用4字节的内存。优化器至少需要 140B * 4 Bytes = 516 G的资源。

在这里插入图片描述

其中,不同优化器的状态数量如下:

  • • AdamW (2 states): 8 Bytes per parameter

  • • AdamW (bitsandbytes Quantized): 2 Bytes per parameter

  • • SGD (1 state): 4 Bytes per parameter

梯度

在模型的反向传播过程中计算梯度值。它们表示损失函数相对于每个模型参数的变化率,对于在优化过程中更新参数至关重要。作为激活值,它们必须存储在 FP32 中以保持数值稳定性 。因此,每个参数占用4字节的内存 。例如,一个70B的模型,计算梯度所需的内存需要 70B * 4 Bytes = 280 G左右。

在这里插入图片描述

总结

在本文中,我们介绍的评估方法,都是基于Transformer架构推算的,该评估方法不适合Transformer以外的其他体系结构。同时,目前存在大量的框架、模型和优化技术,估计运行大型语言模型的确切内存可能很困难。然而,本文可作为估计执行 LLM 推理和训练所需内存资源的起点。

零基础如何学习大模型 AI

领取方式在文末

为什么要学习大模型?

学习大模型课程的重要性在于它能够极大地促进个人在人工智能领域的专业发展。大模型技术,如自然语言处理和图像识别,正在推动着人工智能的新发展阶段。通过学习大模型课程,可以掌握设计和实现基于大模型的应用系统所需的基本原理和技术,从而提升自己在数据处理、分析和决策制定方面的能力。此外,大模型技术在多个行业中的应用日益增加,掌握这一技术将有助于提高就业竞争力,并为未来的创新创业提供坚实的基础。

大模型典型应用场景

AI+教育:智能教学助手和自动评分系统使个性化教育成为可能。通过AI分析学生的学习数据,提供量身定制的学习方案,提高学习效果。
AI+医疗:智能诊断系统和个性化医疗方案让医疗服务更加精准高效。AI可以分析医学影像,辅助医生进行早期诊断,同时根据患者数据制定个性化治疗方案。
AI+金融:智能投顾和风险管理系统帮助投资者做出更明智的决策,并实时监控金融市场,识别潜在风险。
AI+制造:智能制造和自动化工厂提高了生产效率和质量。通过AI技术,工厂可以实现设备预测性维护,减少停机时间。

AI+零售:智能推荐系统和库存管理优化了用户体验和运营成本。AI可以分析用户行为,提供个性化商品推荐,同时优化库存,减少浪费。

AI+交通:自动驾驶和智能交通管理提升了交通安全和效率。AI技术可以实现车辆自动驾驶,并优化交通信号控制,减少拥堵。


这些案例表明,学习大模型课程不仅能够提升个人技能,还能为企业带来实际效益,推动行业创新发展。

学习资料领取

如果你对大模型感兴趣,可以看看我整合并且整理成了一份AI大模型资料包,需要的小伙伴文末免费领取哦,无偿分享!!!
vx扫描下方二维码即可
加上后会一个个给大家发

在这里插入图片描述

部分资料展示

一、 AI大模型学习路线图

整个学习分为7个阶段
在这里插入图片描述

二、AI大模型实战案例

涵盖AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,皆可用。
在这里插入图片描述

三、视频和书籍PDF合集

从入门到进阶这里都有,跟着老师学习事半功倍。
在这里插入图片描述

在这里插入图片描述

四、LLM面试题

在这里插入图片描述

如果二维码失效,可以点击下方链接,一样的哦
【CSDN大礼包】最新AI大模型资源包,这里全都有!无偿分享!!!

😝朋友们如果有需要的话,可以V扫描下方二维码联系领取~
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值