LOADING

加载过慢请开启缓存 浏览器默认开启

几种模型量化的方式

2025/5/14 AI AI

标量量化(Scalar Quantization)

FP32 -> FP16,FP16 -> INT8

以 FP16 -> INT8 为例,将 FP16 的数值映射为 INT8 的范围。如果 tensor 中存在离群值(远大于平均的值),在 de-Quantized 之后可能导致其他值消失(接近 0)。解决方法是把这部分离群值拎出来,不量化,按照原有精度处理。

乘积量化(Production Quantization)

将原向量拆分成若干子向量,找到子向量距离最近的 cluster(聚类)对应的标识。由这些标识构成量化后的向量。

以上图为例,假设绿色为 0,蓝色为 1,红色为 2,则量化后的向量为:
[0, 1, 1, 2]。

二进制量化与 RaBitQ

https://zhuanlan.zhihu.com/p/7193968541

二进制量化直接将向量的每一维度映射到一个 bit(0 或 1),常见的做法就是将大于 0 的维度设置为 1,否则则为 0。然而这种做法虽然极大地压缩了空间,但是也会显著影响召回率。

RabitQ 通过将向量进行归一化,将其放入一个单位高维球中,这个单位高维球中有一个 D 维的超正方体(D 为向量维度)。靠近哪个顶点,就被划定为这个顶点,以这个顶点对应的向量作为量化结果。