微信扫码
添加专属顾问
我要投稿
探索70B参数LLM运行的GPU显存需求,揭开GPU在AI计算中的独特优势。 核心内容: 1. AI计算密集型任务与GPU的天然契合 2. GPU显存占用的多因素分析 3. 模型大小与数据精度对显存的影响
正如文章标题所言,你是否也曾好奇过:加载使用一个 70B 大小的 LLM,究竟需要多大的 GPU 显存呢?读完这篇文章应该会有答案。
AI 本质上是大量的 矩阵 与
向量
运算 ,属于计算密集型运算,需要大量的内存空间来保存模型的训练参数。一般通用 CPU 运算单元都是标量
,而 GPU 是一个把SIMD(单指令多数据)和SIMT(单指令多线程)运用到极致的协处理器,在体系结构上实现了运算单元的高度并行。
简单讲,就是 GPU 比 CPU 更适合用来做计算密集型任务。而 LLM 的推理、部署过程恰巧就是计算型任务。所以 GPU 比 CPU 更加适合用来运行 LLM 运算。
有一个有趣的事实,GPU的全称是Graphic Processing Unit,从名字中就能看出它最初被设计用来处理图像渲染相关的。但是命运似乎开了一个玩笑,没想到后来ML/AI也长成了矩阵的模样。GPU 就顺其自然的接管 AI/ML 甚至 LLM 运算了。
模型自身大小
Key-Value Cache
Memory Overhead
模型大小
模型本身的大小在很大程度上,决定了需要使用 GPU Memory 的大小。模型越大,需使用的 GPU 内存越大。
模型的大小由 2 部分决定:模型参数量
和 数据精度类型
模型参数量
也就是进行模型训练的参数个数,单位是B(Billion缩写)。比如 GPT-3 的参数量是 175 Billion,LLaMa-2 13B
的参数量就是13 BIllion。
参数数据类型
也就是模型的输入参数数据类型,有float32或float16或者float8等。例如,在 PyTorch 中,你可以通过以下方式指定数据类型:
import torch
# 设置数据类型为 float16
torch.set_default_dtype(torch.float16)
# 创建一个 Transformer 模型实例
model = TransformerModel()
不同的数据类型,每个参数占用的大小也不一样:
float32 : 1 个参数占用 4 个 byte
float16 :1 个参数占用 2 个 byte
8 bit :1 个参数只占用 1 个 byte
假设我们使用 float16 加载 LLaMa-2 13B 的模型,那最终加载模型的内存大小为 : 13 Billion * 2 byte = 26 GB。
KV缓存(Key-Value Cache)是 Transformer 模型在自回归解码过程中使用的一种优化技术,主要是用来提升大模型的推理速度。它通过缓存之前计算得到的 键Key
和 值Value
向量来减少重复计算,从而提高推理效率。大体思想其实跟动态规划DP中的以空间换时间差不多。
计算公式如下:
2 * n_dtype * n_layers * n_hidden_size
参数解释:
2 代表每个 KV-Cache 都需要保存 2 个byte 来分别缓存 Key 和 Value。
n_dtype 就是上文中提到的参数数据类型。这个参数确保了模型在处理数据时使用正确的数据类型,从而避免潜在的精度问题。
n_layers 表示Transformer中编码器和解码器的层数总和。每个编码器层和解码器层都包含自注意力机制和前馈神经网络,通过堆叠多个这样的层,可以增加模型的深度和表达能力。
n_hidden_size 指隐藏层的维度大小。神经网络通常包括输入层、隐藏层和输出层,而n_hidden_size就是用来定义隐藏层的维度大小。
同样还是以 LLaMa-2 13B 模型举例,数据类型为 float16,1 个 token 的 KV Cache 大小为:
2 * 2 * 40 * 5120 = 820 KB/token
LLaMa-2 13B 的 n_layers是 40,n_hidden_size是 5120,所以最终结果是 820 KB。
可以看出总共占用了 5 个 Token。然后输出结果如下:
可以看出大模型输出上海天气结果使用了 54 个 Token。
因此 "上海今天天气怎么样?" 这句 Query,大模型LLM总共使用了 5 + 54 个 Token。每个 Token 需使用 800KB,因此这次 Query 总共需要使用 59 * 800 KB = 46MB。
注意:实际场景中,LLM有可能接收到更多 Token 的输入Input,比如处理长文本等需求。 LLaMa-2 13B 单个请求可设置的最大 Token 数是 4096 个。因此 LLaMa-2 13B 单次能处理的最大 KV-Cache 就是 4096 * 820 KB = 3.2 GB。另外随着并发请求次数的增多,这个数字还会成倍的增长!
在 LLM 的推理过程中,还有一些碎片化的临时变量。这些临时变量也需要占用 GPU Memory。所以除了模型大小、KV-Cache 之外,还需要有一定的额外内存开销。一般可以使用模型大小 + KV-Cache最大值的 10% 来当做额外内存开销的大小。
Total GPU Memory = 模型大小 + KV Cache + Memory Overhead
模型大小= 13 Billion * 2 Bytes = 26 GB
Total KV cache= 800 KB * 4096 Tokens * 10 并发请求 = 32 GB
Memory Overhead= 0.1 * (26 GB + 32 GB) = 5.8 GB
所以最终需要总 GPU memory为: 26 GB + 32 GB + 5.8 GB = 63.8 GB。需要 2 块英伟达的 A100 芯片才可以。
下面 2 张表格分别描述了不同大小的模型,根据不同Token数以及不同并发请求数的情况下,所需要的 GPU Memory 大小。
单次并发请求:
10 次 并发请求:
53AI,企业落地大模型首选服务商
产品:场景落地咨询+大模型应用平台+行业解决方案
承诺:免费场景POC验证,效果验证后签署服务协议。零风险落地应用大模型,已交付160+中大型企业
2025-02-15
腾讯云TI平台和HAI部署DeepSeek的步骤及其区别
2025-02-15
Chain-of-Action (行动链):从Agent工作流到Agent模型
2025-02-14
使用 Apache Dubbo 释放 DeepSeek R1 的全部潜力
2025-02-14
DeepSeek:没用CUDA,没用NVlink,AMD率先拥抱
2025-02-14
漫画趣解:一口气搞懂模型蒸馏!
2025-02-14
DeepSeek R1多版本性能与负载测试(基于RTX3060+R7 5800+32GB内存实测)
2025-02-13
深入理解 DeepSeek 与企业实践(一):蒸馏、部署与评测
2025-02-13
DeepSeek本地部署+知识库+联网搜索,终极版方案,保姆级教程!
2025-02-04
2025-02-04
2024-09-18
2024-07-11
2024-07-11
2024-07-26
2024-07-09
2025-01-27
2024-12-29
2025-02-01
2025-02-10
2025-02-10
2025-02-09
2025-02-05
2025-01-24
2025-01-22
2025-01-14
2025-01-12