大模型参数和内存解析
在讨论大模型时,我们通常会见到类似 “175B” 或 “125M” 的描述。
- B 表示 billion(十亿)
- M 表示 million(百万)
每个参数的内存占用
模型中参数的数据类型直接影响每个参数的内存大小,常见的数据类型包括:
数据类型 | 每个参数占用内存 | 说明 |
---|
float32 | 4 字节 | 全精度训练常用,但占用内存较大 |
float16/bfloat16 | 2 字节 | 半精度训练/推理,兼顾速度与精度 |
int8 | 1 字节 | 量化推理,内存和计算资源大大降低 |
int4 | 0.5 字节 | 边缘设备或极限量化场景,进一步降低内存开销 |
举例:
对于一个 7B 模型来说:
- float32:约 28 GB
- float16:约 14 GB
- int8:约 7 GB
- int4:约 3.5 GB
模型案例
GPT-3
- 参数规模从 125M 到 175B 不等
- 原始训练时可能使用 float32,但推理常用 float16 或经过 int8 量化
- 例如:GPT-3 175B 模型在推理时常采用 float16 来降低内存需求
LLaMA-2
- 提供 7B、13B 和 70B 等多个版本
- 原始训练一般采用 float16 或 bfloat16
- 推理阶段支持 float16,同时有 int8 或 int4 的量化版本
DeepSeek 系列
- 包括 DeepSeek-LLM 和 DeepSeek-Coder 等
- DeepSeek-LLM 常见有 7B 与 67B 版本,原始精度使用 float16/bfloat16,推理时可选 int8/int4
- DeepSeek-Coder 针对代码任务,提供 1.3B、6.7B、33B 不同版本,均支持灵活的数据类型选择