模型参数量的计算公式
隐藏层大小为:\(d_{model}\)
transformer的layer数:\(N\)
嵌入层大小为:\(V_{dim}\)
transformer模型参数大小 = \(N\) * (12 * \(d_{model}^2\)+ 13*\(d_{model}\))+ \(V_{dim}\)
当\(d_{model}\)的数量较大时,参数量≈12*\(d_{model}^2\)*\(N\)
例如llama3-7b的配置:
- \(d_{model}\):4096
- \(N\):32
所以其参数估算约为:6.4b,实际为6.7B
训练
训练内存 = 模型加载内存 + 4 * 可训练参数大小
推理
推理内存 = 参数量与加载字节数的关系
前置知识:
- 1字节 = 8bit = 8位
- float32:表示32位的浮点数,占用字节数为4个
- float16:表示16位的浮点数,占用字节数为2个
- int8:表示8位的整型,占用字节数为1
- int4:表示4位的整型,占用字节数为0.5
把float32
变成int8
或者int4
的过程就叫做模型量化。
参数量 | 加载方式 | 内存占用(G) | 计算公式 |
---|---|---|---|
7b | float32 | 26G内存 | 4*7b/1024/1024/1024 |
7b | float16 | 13G内存 | 2*7b/1024/1024/1024 |
7b | int8 | 6.5G内存 | 1*7b/1024/1024/1024 |
7b | int4 | 3.75G内存 | 0.5*7b/1024/1024/1024 |