大模型通常指的是大语言模型,三个核心参数有:模型的参数数量、浮点数、量化
1.参数数量
相当于“大脑的容量”,参数越多,模型越强,所需显存越高。
常见的开源大模型的参数数量(其中B=Billion=10亿):
- LLAMA:1B,3B,8B,70B,405B
- 通义千问Qwen:0.5B,1,5B,3B,7B,14B,32B,72B
- Deepseek: 1.5B,7B,8B,14B, 32B, 70B,671B(俗称满血版)
(这里插播一个知识点,DeepSeek的这些蒸馏模型(也叫学生模型)实际上是对千问的模型做了微调训练,则基于Qwen和Llama系列架构,从教师模型Deepseek-R1中提取推理数据样本,这些数据将用于训练蒸馏模型)
2.浮点数FP
指在模型计算时的数值精度,精度越高(数值越高) 计算结果越准确,需要的计算资源越多,推理速度越慢。
该参数是用在模型训练的过程中,训练完成后精度不会再改变。
- FP32: 标准的训练精度,最常用,训练出的大模型参数占用 4字节/参数
- FP16: 半精度浮点,减少内存占用和计算成本,损失结果质量,训练出的大模型参数占用 2字节/参数
- BF16:bfloat16,更适合深度学习,训练出的大模型参数占用 2字节/参数
- FP8: 8位浮点数,适合加速推理场景,训练出的大模型参数占用 1字节/参数
3.量化Q
对大模型权重和激活值进行数值压缩,模型体积变小,可解决运行所需显存,少量牺牲模型的精度,影响模型智商
量化过程用在推理过程,量化后模型体积变小,推理速度变快。
量化过程不是简单的按比例压缩,与模型的原始数值精度(FP)无关,而是将参数映射到更低的比特数
- INT8:8位整数量化,将32位/16位浮点数映射到8位整数,量化后 1字节/参数
- INT4:4位整数量化,量化后 0.5字节/参数
- INT1/2:极端压缩
如:FP32模型是4字节/参数,经过INT4量化后是0.5字节/参数;
FP16模型是2字节/参数,经过INT4量化后也是0.5字节/参数;
硬件配置和模型参数的关系
显存需求=模型大小*(1.2-1.5)
模型大小=参数数量*每参数字节数
因为显存中不仅要在调用模型的时候存放模型,还需要存放前向传播/反向传播中间的计算结果。而且在实际应用中输入数据量、上下文长度长文本输入都会增加显存占用。
一个比较简单的普遍计算方式是用模型的参数量*2.5=推荐显存大小
举例:
一个FP32的1B模型,不经过量化:
- 模型大小=1B*4字节/参数=40亿字节=4000000000bit = 4000000kbit=4000Mbit=4Gbit
- 显存需求=4G*1.5=6G
(速记:10亿字节=1G)
一个FP32的1B模型,经过INT4量化:
- 模型大小=1B*0.5字节/参数=5亿字节=0.5GB
- 显存需求=0.5G*1.5=0.75G
————
Deepseek系列模型推荐显存:
(仅供参考,可以倒推出来大约0.4字节/参数)
模型参数量 | 实际模型大小 |
---|---|
1.5B | 1.1GB |
7B | 4.7GB |
8B | 4.9GB |
14B | 9GB |
32B | 20GB |
70B | 43GB |
671B | 404GB |