量化白皮书翻译 原论文链接 摘要
神经网络现在使用的领域很广泛 , 但是如果要进行端测使用的话 , 神经网络的参数量非常庞大 , 无法在计算资源有限的端侧芯片上发挥其性能(简而言之就是说 , 网络参数太大了 , 在嵌入式板子上跑不起来) 。接而引出量化 , 表明量化是用精度换速度 , 是目前较为常用的模型压缩方法之一(剪枝、量化、蒸馏) 。
介绍了一些sota的量化方法 , 大体上分为两类PTQ(post--)、QAT(-aware-) 。
1. 介绍
在服务器上训练的神经网络的和都是fp32精度(fp16) , 这里的代表类似于卷积核的参数 , 即网络训练完成后写死在里面的参数 , 表示的是输入的 , 比如输入一张224*224大小的3通道的图片 , 那这里的[1, 3, 224, 224]就是 。
当模型精度由32浮点型量化到int8型后 , 存储的内存变为原来的1/4 , 矩阵乘法运算的计算成本变为原来的1/16 。
重新介绍量化分为PTQ和QAT , 前者需要付出的成本比较小(需要很小的校准数据集 , 且数据集无需label) , 后者需要重新训练 , 但一般后者的效果较好 。
2.量化基本原理 2.1 硬件背景
两个基本单元:1.2. , 第一个我不知道咋翻译 , 就暂时叫做处理单元吧 , 第二个暂时叫做累加器 , 卷积的公式为
A n = b n + ∑ m C n , m A_n = b_n + \{n,m} An?=bn?+m∑?Cn,m?
这一次操作也叫做MAC( ) , 算完之后 , 会把数据从移动到(内存)中 。MAC操作和数据传输是神经网络计算速度最大的瓶颈 。从FP32->int8的过程可以表示为下列公式:
【量化白皮书翻译】
文章插图
x ^ = s x ? X i n t ≈ x \hat{x} = s_x\cdot X_{int}\ x x^=sx??Xint?≈x
其中x ^ \hat{x} x^ 是量化后的数据 , x x x 是量化前的数据 , X i n t X_{int} Xint? 是整形向量 , s x s_x sx? 是一个浮点类型的缩放因子 。
上图是引入量化后的卷积的计算步骤 , 这里注意累加器中的存储数据格式为int32类型 , 卷积的权重W()和输入张量()都是int8类型 。那经过累加器后 , 需要再次把int32类型的数据量化到int8类型 。
2.2 均匀量化
这是一种最常见的量化方式 , 并且中使用的应该也是均匀量化的方式 。均匀量化有三个参数分别是scales s s, zero-pointz z z 和 bit-widthb b b。
- 《几何原本》是如何翻译的?又有哪些人的参与?
- 说唱大神埃米纳姆居然被自己的手语翻译抢了镜头? ap破吉尼斯记录
- Skype Translator上线 多语言实时翻译
- 重庆农民家门前挖出大量化石专家:这是剑齿虎
- 芥末牌子,什么牌子的芥末好
- 打包砖运输既要轻量化也要长轴距,车主大胆选择了9米6重汽T5G 平板车中国之最
- 翻译出错引发的大案:竟然译错皇帝祖母位份
- 中国“红墙第一翻译”) 百年航程有“侨”精彩(27 中国之最英汉互译
- 12个以\u0026#34;E\u0026#34;开头的常见英语词根以及其详细解释 人类世界之最英文翻译
- 8.1 器件ID和指令集表