我现在看推理芯片,一个明显变化是,大家已经从FP8往FP4卷了。训练芯片也会用低精度,但推理卷的商业价值大。前提要说清,不能只问,跑多快?还要问,FP4跑快以后,模型还剩多少原来的能力?
卷到FP4,省了不少东西。但麻烦也很直接,只有4 比特,能表示的数很少。大模型的权重和中间计算结果,数值范围差异很大,有的很小,有的很大。如果全都硬塞进同一套FP4范围,小数直接没了,大数超范围。于是,缩放因子的重要性就突显出来了。
举个栗子。
一组数是:
0.02、0.03、0.04、0.05
另一组是:
2、3、4、5
如果硬用同一套FP4去记,小数那组很容易损失得很厉害。如果分别给它们一个缩放因子,情况就不一样了。
第一组可以记成:
2、3、4、5 × 0.01
第二组可以记成:
2、3、4、5 × 1
现在很多芯片把这个缩放做得越来越细,比如每32个数字共享一个缩放因子。也就是说,不是整个模型只用一把尺子,而是每32个数就重新调整一次数值范围。这样好处大大滴。如果一个组里突地冒出一个大数,它最多影响这一小组,不至于把后面的精度一起拖垮。
当然,缩放因子也不能无限加,也要占空间、占带宽、参与计算。做得太细,FP4省下来的,又还回去。这些被压成FP4的数字;权重是事先就知道的,激活是运行时才产生的。后者通常更难压,芯片得边算边决定怎么缩放。
本质是靠更细的缩放,把模型精度尽量保住,且这套骚操作还不能太贵。这才是现在低精度计算真正的技术门槛。因此我现在判断一颗芯片的FP4能力,不会只看它写没写“支持 FP4”。
这也是为什么英伟达Blackwell、Rubin这一代强调microscaling(微缩放),MXFP4(一种开放标准,32个数+ 1个共享缩放因子),NVFP4(看名字,英伟达自己往前做的工作),这些东西。硬件开始原生理解“小块数据+小块scale”这种新的数字表示方式。最后,要看模型精度和真实token/s到底怎么样,别把模型能力压坏了。