【白话模型量化系列一】矩阵乘法量化

简介: 矩阵乘法量化

- BEGIN -

模型量化是模型加速方向一个很重要的方法,主要思想就是用int8数据格式来存储和进行计算。这样做有两点好处:

  1. 可以减小模型存储的体积。原本float32存储需要4个字节,现在int8存储只需要1个字节,体积是原来的1/4。
  2. 可以加快计算速度。这主要是因为int8数据的读写更快,并且int8矩阵乘法一般来说会更快一点。

以现在最常用的Transformer模型来举例,在使用CUDA推理加速库(例如LightSeq)之后,矩阵乘法的占比高达将近90%。所以优化非矩阵乘法的速度意义不是很大了,占比不高,你算得再快对整体的提速也很小,因此可以尝试优化矩阵乘法。

image.png

用整数矩阵来表示浮点数矩阵



image.png

这样我们就可以得到两个浮点数矩阵的整数表示,接下来就可以利用他们来进行整数矩阵乘法的转换。

转化为整数矩阵乘法



image.png

总结一下流程


image.png

进阶(relu激活函数)



image.png

image.png

总结


如果矩阵乘法两个输入的范围都是关于零点对称的,那么计算公式为:


image.png

当然还有很多其他情况,例如softmax的输出范围一定是,那么attention中的矩阵乘法公式还得改写。

此外为了减小量化的损失,还需要在模型结构中插入伪量化节点,然后进行量化感知训练(QAT)。接着还需要将finetune后的模型存储为int8格式。然后还需要开发加载int8模型的推理加速库代码。最后就是本文讲到的整数矩阵乘法了。整个流程比较繁琐,这部分内容今后我会慢慢给大家分享。网上关于量化的优秀教程非常多,我不会讲太多理论上的量化知识,只会从实践的角度来白话一下我们在Transformer模型量化过程中做的一些尝试。

相关文章
|
1天前
|
算法 数据可视化
R语言使用Metropolis-Hastings采样算法自适应贝叶斯估计与可视化
R语言使用Metropolis-Hastings采样算法自适应贝叶斯估计与可视化
|
1月前
|
人工智能 搜索推荐 物联网
DoRA(权重分解低秩适应):一种新颖的模型微调方法_dora模型
DoRA(权重分解低秩适应):一种新颖的模型微调方法_dora模型
75 0
|
8月前
|
机器学习/深度学习 算法 Python
【ARIMA-SSA-LSTM】合差分自回归移动平均方法-麻雀优化-长短期记忆神经网络研究(Python代码实现)
【ARIMA-SSA-LSTM】合差分自回归移动平均方法-麻雀优化-长短期记忆神经网络研究(Python代码实现)
|
9月前
|
机器学习/深度学习 算法 Python
【ARIMA-WOA-LSTM】合差分自回归移动平均方法-鲸鱼优化-长短期记忆神经网络研究(Python代码实现)
【ARIMA-WOA-LSTM】合差分自回归移动平均方法-鲸鱼优化-长短期记忆神经网络研究(Python代码实现)
101 0
|
11月前
|
存储 机器学习/深度学习 并行计算
【白话模型量化系列一】矩阵乘法量化
【白话模型量化系列一】矩阵乘法量化
156 0
|
11月前
|
机器学习/深度学习 编解码 计算机视觉
建议背诵 | 字节用4大准则教你设计一个拥有CNN的速度,Transformer精度的模型!
建议背诵 | 字节用4大准则教你设计一个拥有CNN的速度,Transformer精度的模型!
46 0
|
11月前
|
机器学习/深度学习 大数据
相较神经网络,大名鼎鼎的傅里叶变换,为何没有一统函数逼近器?答案在这
相较神经网络,大名鼎鼎的傅里叶变换,为何没有一统函数逼近器?答案在这
|
11月前
|
机器学习/深度学习 人工智能 监控
【Pytorch神经网络理论篇】 35 GaitSet模型:步态识别思路+水平金字塔池化+三元损失
步态特征的距离匹配,对人在多拍摄角度、多行走条件下进行特征提取,得到基于个体的步态特征,再用该特征与其他个体进行比较,从而识别出该个体的具体身份。
239 0
|
数据采集 自然语言处理 算法
广义学习矢量量化(GLVQ)分类算法介绍和代码实现
广义学习矢量量化(Generalized Learning Vector Quantization,GLVQ)是一种基于原型的分类算法,用于将输入数据分配到先前定义的类别中。
105 0
广义学习矢量量化(GLVQ)分类算法介绍和代码实现
|
机器学习/深度学习 算法
十一、神经网络的成本函数和误差反向传播算法
十一、神经网络的成本函数和误差反向传播算法
十一、神经网络的成本函数和误差反向传播算法