大模型量化2
https://arxiv.org/pdf/2208.07339.pdf
论文题目: LLM.int8(): 8-bit Matrix Multiplication for Transformers at Scale
第二章: 基础知识:
2.1 8bit的数据和量化
绝对值量化:
我们直接看公式. 就是很平凡的一个矩阵, 除以最大值然后乘以127. 让范围到[-127,127]. 后面两个等号也就是等价表述. 无穷范数的定义就是max
零点量化:
大概意思就是放射变换, 但是感觉他公式有问题.
3. int8乘法:
向量外积:
https://baike.baidu.com/item/%E5%A4%96%E7%A7%AF/4743897?fr=aladdin
这里面论文里面公式又写错了, 到处错误居然还发表了.神奇.
$C_x$属于$R^b$才是对的, 这里根本就没有s这个变量.
总结一下这个.就是两个矩阵AB相乘等于A行量化, B列量化. 再乘.
3.2 混合精度分解: int8算法的核心.
可能这里才是算法核心吧. 所以其他地方笔误非常多.
首先概念是outlier 和inner. 绝对值大于一个阈值的叫outlier. 否则叫inner.
核心算法就是这个公式了. 8这个公式是忽略了交叉项. 这里面的说法是: outliers的分布是对称的对于s和h. 所以两个矩阵交叉项的乘机非常小.
爱因斯坦求和记号比较常用.就是sigama符号里面的进行求和而已.
参考: https://huggingface.co/blog/hf-bitsandbytes-integration
上面一块是8bit乘法, 下面是普通矩阵乘法. 结果再相加即可.
原始矩阵右边是
-1 0
2 0
0 -2
3 -2
-1 2
原始矩阵左是这个. 按照列找 2,4 列太大.抽出来之后
右边矩阵也抽出2,4 行.
之后就变成上面的图片里面的2个矩阵部分了.
下一篇我们读:
https://huggingface.co/blog/4bit-transformers-bitsandbytes
这篇博客比较新. 开始读这个. 看不了的童鞋FQ试试.