LLM大模型所需 GPU 内存笔记

引言

在运行大型模型时,不仅需要考虑计算能力,还需要关注所用内存GPU 的适配情况。这不仅影响 GPU 推理大型模型的能力,还决定了在训练集群中总可用的 GPU 内存,从而影响能够训练的模型规模。

大模型推理的内存计算只需考虑模型权重即可。

大模型训练的内存计算往往会考虑包括模型权重反向传播的梯度优化器所用的内存正向传播的激活状态内存

接下来以ChatGLM-6B为例,它的参数设置为隐藏层神经元数量(hidden_size) 为 4096,层数(num_layers) 为 28,token 长度为 2048,注意力头数(attention heads) 为 32,讲解怎么计算推理内存和训练内存。

推理内存

模型权重

  • 对 int8 而言,模型内存 =1 * 参数量 (字节)
  • 对 fp16 和 bf16 而言,模型内存=2 * 参数量(字节)
  • 对 fp32 而言,模型内存= 4 * 参数量(字节)

因为 1 GB(10243字节) ≈ 1B字节(???),也正好和1B参数量的数据量级一致,估算时就比较简单了。

例如,对于一个ChatGLM-6B而言,就是:

  • 对 int8 而言,模型内存=1 * 6GB=6GB
  • 对 fp16 和 bf16 而言,模型内存=2 * 6GB=12GB
  • 对 fp32 而言,模型内存=4 * 6GB=24GB

推理总内存

除了用于存储模型权重的内存外,在实际的前向传播过程中还会产生一些额外的开销。根据经验,这些额外开销通常控制在总内存的20%以内(只有80%的有效利用率)

因此,推理总内存≈1.2×模型内存

训练

模型权重

可以使用纯 fp32 或纯 fp16 训练模型:

  • 纯 fp32,模型内存=4 * 参数量(字节)
  • 纯 fp16,模型内存=2 * 参数量(字节)

除了常规推理中讨论的模型权重数据类型,训练阶段还涉及混合精度训练

混合精度 ≈ 纯fp16

  • 混合精度 (fp16/bf16 + fp32), 模型内存=2 * 参数量(字节)

例如,对于一个ChatGLM-6B而言,就是:

  • 纯 fp32,模型内存=4 * 6GB=24GB
  • 纯 fp16,模型内存=2 * 6GB=12GB
  • 混合精度 (fp16/bf16 + fp32), 模型内存=2 * 6GB=12GB

优化器状态

  • 对于纯 AdamW,优化器内存=12 * 参数量(字节)
  • 对于像 bitsandbytes 这样的 8 位优化器,优化器内存=6 * 参数量(字节)
  • 对于含动量的类 SGD 优化器,优化器内存=8 * 参数量(字节)

例如,对于一个ChatGLM-6B而言,就是:

  • 对于纯 AdamW,优化器内存=12 * 6GB=72GB
  • 对于像 bitsandbytes 这样的 8 位优化器,优化器内存=6 * 6GB=36GB
  • 对于含动量的类 SGD 优化器,优化器内存=8 * 48GB=36GB

梯度

梯度可以存储为 fp32 或 fp16 (梯度数据类型通常与模型数据类型匹配。因此在 fp16 混合精度训练中,梯度数据类型为 fp16)

  • 对于 fp32,梯度内存=4 * 参数量(字节)
  • 对于 fp16,梯度内存=2 * 参数量(字节)

例如,对于一个ChatGLM-6B而言,就是:

  • 对于 fp32,梯度内存=4 * 6GB=24GB
  • 对于 fp16,梯度内存=2 * 6GB=12GB

激活状态

在进行LLM(大语言模型)训练时,现代GPU通常会遇到内存问题,而不是算力问题。因此,激活重计算(也称为激活检查点)变得非常流行,它是一种以计算力为代价来减少内存使用的方法。激活重计算/检查点的主要思路是重新计算某些层的激活,而不将它们存储在GPU内存中,从而降低内存使用量。具体来说,减少内存的多少取决于我们选择重新计算哪些层的激活

https://blog.eleuther.ai/transformer-math/

接下来,假设激活数据类型为 fp16,没有使用序列并行

  • 无重计算的激活内存=token 长度 * batch size * hidden layer 的神经元数量 * 层数(10+24/t+5 * a * token 长度/hidden layer 的神经元数 * t) 字节
  • 选择性重计算的激活内存=token 长度 * batch size * hidden layer 的神经元数量 * 层数(10+24/t) 字节
  • 全部重计算的激活内存=2 * token 长度 * batch size * hidden layer 的神经元数量 * 层数 字节

其中:

  • a :transformer 模型中注意力头 (attention heads) 的个数
  • t :张量并行度 (如果无张量并行,则为 1)

对于一个ChatGLM-6B而言,就是:

  • token 长度 * batch size * hidden layer 的神经元数量 * 层数 = 2048 * 1 * 4096 * 28 ≈ 0.23GB
  • 无重计算的激活内存 = 0.23GB * (10+24/1+5 * 32 * 2048/4096 * 1) = 0.23 * 114 = 26.22G
  • 选择性重计算的激活内存 = 0.23GB * (10+24/1) = 7.8G
  • 全部重计算的激活内存 = 2 * 0.23GB = 0.46GB

由于重计算的引入也会引起计算成本的增加,具体增加多少取决于选择了多少层进行重计算,但其上界为所有层都额外多了一次前向传播,因此,更新后的前向传播计算成本如下:

https://blog.eleuther.ai/transformer-math/

2 * token数 * 模型参数 ≤ C(前向传播)≤ 4 * token数 * 模型参数

总结

因为训练大模型时通常会采用AdamW优化器,并用混合精度训练来加速训练,所以训练一个ChatGLM-6B所需的训练总内存为:

训练总内存=模型内存+优化器内存+激活内存+梯度内存 = 12GB + 72GB + 12Gb + 7.8GB = 103GB

在这里插入图片描述

将以上内容总结为一个简单的类比(非常粗糙的类比):TPUv3-8机器,对标八卡V100-16GB版本的机器;TPUv4-8机器,对标四卡A100-40GB版本的机器

ChatGLM-6B使用了八台TPU v3-8 机器训练,共使用内存为 128 GB,和我们计算的基本一致。


推理总内存 ≈1.2×模型内存 = 1.2 * 12 GB = 14.4GB

在这里插入图片描述

推理总内存的值基本上和ChatGLM-6B官方文档一致。

如何系统的去学习大模型LLM ?

大模型时代,火爆出圈的LLM大模型让程序员们开始重新评估自己的本领。 “AI会取代那些行业?”“谁的饭碗又将不保了?”等问题热议不断。

事实上,抢你饭碗的不是AI,而是会利用AI的人。

科大讯飞、阿里、华为等巨头公司发布AI产品后,很多中小企业也陆续进场!超高年薪,挖掘AI大模型人才! 如今大厂老板们,也更倾向于会AI的人,普通程序员,还有应对的机会吗?

与其焦虑……

不如成为「掌握AI工具的技术人」,毕竟AI时代,谁先尝试,谁就能占得先机!

但是LLM相关的内容很多,现在网上的老课程老教材关于LLM又太少。所以现在小白入门就只能靠自学,学习成本和门槛很高。

针对所有自学遇到困难的同学们,我帮大家系统梳理大模型学习脉络,将这份 LLM大模型资料 分享出来:包括LLM大模型书籍、640套大模型行业报告、LLM大模型学习视频、LLM大模型学习路线、开源大模型学习教程等, 😝有需要的小伙伴,可以 扫描下方二维码领取🆓↓↓↓

👉CSDN大礼包🎁:全网最全《LLM大模型入门+进阶学习资源包》免费分享(安全链接,放心点击)👈

一、LLM大模型经典书籍

AI大模型已经成为了当今科技领域的一大热点,那以下这些大模型书籍就是非常不错的学习资源。

在这里插入图片描述

二、640套LLM大模型报告合集

这套包含640份报告的合集,涵盖了大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。(几乎涵盖所有行业)

在这里插入图片描述

三、LLM大模型系列视频教程

在这里插入图片描述

四、LLM大模型开源教程(LLaLA/Meta/chatglm/chatgpt)

在这里插入图片描述

LLM大模型学习路线

阶段1:AI大模型时代的基础理解

  • 目标:了解AI大模型的基本概念、发展历程和核心原理。

  • 内容

    • L1.1 人工智能简述与大模型起源
    • L1.2 大模型与通用人工智能
    • L1.3 GPT模型的发展历程
    • L1.4 模型工程
    • L1.4.1 知识大模型
    • L1.4.2 生产大模型
    • L1.4.3 模型工程方法论
    • L1.4.4 模型工程实践
    • L1.5 GPT应用案例

阶段2:AI大模型API应用开发工程

  • 目标:掌握AI大模型API的使用和开发,以及相关的编程技能。

  • 内容

    • L2.1 API接口
    • L2.1.1 OpenAI API接口
    • L2.1.2 Python接口接入
    • L2.1.3 BOT工具类框架
    • L2.1.4 代码示例
    • L2.2 Prompt框架
    • L2.3 流水线工程
    • L2.4 总结与展望

阶段3:AI大模型应用架构实践

  • 目标:深入理解AI大模型的应用架构,并能够进行私有化部署。

  • 内容

    • L3.1 Agent模型框架
    • L3.2 MetaGPT
    • L3.3 ChatGLM
    • L3.4 LLAMA
    • L3.5 其他大模型介绍

阶段4:AI大模型私有化部署

  • 目标:掌握多种AI大模型的私有化部署,包括多模态和特定领域模型。

  • 内容

    • L4.1 模型私有化部署概述
    • L4.2 模型私有化部署的关键技术
    • L4.3 模型私有化部署的实施步骤
    • L4.4 模型私有化部署的应用场景

这份 LLM大模型资料 包括LLM大模型书籍、640套大模型行业报告、LLM大模型学习视频、LLM大模型学习路线、开源大模型学习教程等, 😝有需要的小伙伴,可以 扫描下方二维码领取🆓↓↓↓

👉CSDN大礼包🎁:全网最全《LLM大模型入门+进阶学习资源包》免费分享(安全链接,放心点击)👈

  • 4
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值