1. 前言
砚上三五笔,落墨鹧鸪啼
关于大模型总是会出现几B,然后想知道他们的存储空间大小分别是多少。还有描述一些显卡的TFLOPS是怎么计算的。这里做一个简单的记录。
如有不对,欢迎评论区指正!
2. 正文
2.1 精度类型
包括FP64:64位双精度浮点型 8字节 double
FP32:32位单精度浮点型 4字节 float 32
FP16:16位单精度浮点数 2字节 float 16
INT8: 8位整数 1字节 int8
INT4: 4位整数 0.5字节 int4
2.2大模型参数量
比如一个7B的大模型,采用FP32,则占用存储空间大小为:7x4 GB,即28GB的存储大小。
比如一个70B的大模型,采用FP16,则占用存储空间大小为:70x2 GB,即140GB的存储大小。
但实际的存储大小肯定不是这么简单,真实情况往往比上面更大,因为还包括:
-
优化器状态(训练时需要 2–3 倍显存)
-
额外索引、分片信息
-
KV cache(推理时存上下文)
2.2大模型量化
2.3 对称量化
在对称量化过程中,原本浮点数的值域会被映射到量化空间(quantized space)中一个以零为中心的对称区间,量化前后的值域都是围绕零点对称的。
引用自:https://zhuanlan.zhihu.com/p/1899107168172630461
假设给出上面的一组浮点数的参数。那么根据最大的绝对值范围做归一化。然后乘以整数型量的最大值。比如INT8是1个字节,那么无符号型为256,有符号型为127,这么这个最大值就乘以127(假设)。
量化误差。衡量量化后和解量化后的浮点数之间的误差。
这里其他的量化方法就不再赘述。上述的引用链接的博客写的非常全面,可以对一个参考。
3. 后记
To be continued.......