← 返回书架人工智能 · 交互式 Wiki
生成与检索服务进阶计算演示

QUANTIZATION / INTEGER LINEAR LAYER

量化线性层:整数怎样恢复为同一单位

把输入、权重、累加器和 bias 放在一起,逐项核对零点与 scale。先确认整数算术实现了声明的量化层,再比较它与原始浮点层的误差。

01 / UNITS

每个数值都有自己的刻度与整数零点

q=clip⁡(round⁡(x/s)+z,0,255),x^=s(q−z),Cij=∑k(qikX−zX)(qkjW−zjW),qjb=round⁡ ⁣(bjsXsjW),Y^ij=sXsjW(Cij+qjb).\begin{aligned}q&=\operatorname{clip}(\operatorname{round}(x/s)+z,0,255),\\\hat x&=s(q-z),\\C_{ij}&=\sum_k(q^X_{ik}-z_X)(q^W_{kj}-z^W_j),\\q^b_j&=\operatorname{round}\!\left(\frac{b_j}{s_Xs^W_j}\right),\\\hat Y_{ij}&=s_Xs^W_j(C_{ij}+q^b_j).\end{aligned}
输入使用逐张量 scale,权重按输出通道 j 校准;每次点积的归约维 k 内 scale 固定。bias 使用与累加器相同的单位 sX×sWⱼ。

校准区间包含实数零点:low=min(0,min x),high=max(0,max x),s=(high−low)/255,z=clip(round(−low/s),0,255)。全零时规定 s=1、z=0。整数舍入采用半数远离零;输入区间来自独立的两条校准记录,权重范围来自当前层。

输出 scale 由校准记录通过原始浮点层得到,再将量化层输出映射回 uint8。校准与展示输入分离;“输入超出校准范围”场景把展示输入放大八倍,暴露 clipping 的影响。

02 / DOT PRODUCT

怎样从原始整数点积补回零点修正?

Cij=∑kqikXqkjW−zjW∑kqikX−zX∑kqkjW+KzXzjW.\begin{aligned}C_{ij}={}&\sum_k q^X_{ik}q^W_{kj}-z^W_j\sum_k q^X_{ik}\\&-z_X\sum_k q^W_{kj}+Kz_Xz^W_j.\end{aligned}
本例 K=3。原始点积与零点修正相加,必须等于先减零点再点积。累加器范围连同整数 bias 一起检查。

这条 W8A8 路径用 INT32 可表达的整数进行精确累加,但输出 scale 相乘与重定标仍用实数运算。生产中的纯整数输出常把倍率转换为固定点乘数和移位;本例未模拟该逼近,其误差和舍入需要另行验证。

03 / THREE REFERENCES

同一线性层,分别比较实现误差和近似误差

两条输入、两个输出通道

固定校准 · 独立矩阵参考
实现与恢复矩阵乘最大差
量化近似最大差(输出重定标前)
最终输出与原始层最大差
权重最大绝对误差
饱和位置
位置原始浮点恢复矩阵乘参考当前实现最终输出

整数累加、bias 与输出整数
i,j原始点积零点修正CqBiassX×sWⱼqOutput
输入、校准记录、权重与整数编码
04 / ERROR BUDGET

权重误差小,输出误差一定也小吗?

X^W^−XW=(X^−X)W+X(W^−W)+(X^−X)(W^−W)\hat X\hat W-XW=(\hat X-X)W+X(\hat W-W)+(\hat X-X)(\hat W-W)
这里还未加 bias 量化和输出重定标误差。输入分布、误差方向和层敏感性共同影响最终结果。

算术一致性

恢复后的 X/W/bias 做矩阵乘,与整数累加再恢复应该一致。这个比较可发现零点、轴和单位错误。

模型近似

原始层与正确量化层允许有误差;校准输入上的小误差需要在独立任务与长尾输入上复核。

W4A16 的口径

权重用逐通道 −7…7 对称刻度;输入先舍入到 FP16 可表达值,恢复后的乘加使用 binary64。它展示权重压缩与激活舍入,不执行低位硬件 kernel。

逐通道与分组

本例的 scale 在每次点积内部固定。沿 k 分组时,各组点积需要分别乘 scale 后相加,不能把一个倍率提到整行外。

05 / STORAGE & VALIDATION

数值位宽、元数据与耗时分别记账

小矩阵逐元素检查之外,npm run lab:decisions 使用独立 NumPy 整数计算核对零点展开、bias、输出饱和与 W4A16 恢复路径。报告保存所有配置和误差。它不测 GPU kernel、模型准确率或推理吞吐;这些指标应放到目标设备和任务数据上单独实验。

适用范围与一手资料

2×3 输入和 3×2 权重,uint8 仿射量化与 INT32 范围检查;重定标用实数倍率。W4A16 恢复后使用 binary64 乘加,未运行低位 kernel、QAT 或性能测试。

公式与机制的原始依据 · 3 项
知识目录
搜索知识库