O GPT-OSS usa quantização MXFP4 (que o MLX agora suporta). Existem dois formatos FP4 circulando no momento: MXFP4 e NVFP4 (NV para Nvidia). Ao observar como o GPT-OSS usa o MXFP4, é um pouco abaixo do ideal. Estou pensando que NVFP4 será o formato mais comumente usado no futuro. Mais detalhes abaixo: Ambos os formatos quantizam pesos para ponto flutuante de 4 bits (e2 m1) com uma escala exclusiva por grupo. A diferença é o tamanho do grupo e como a escala de cada grupo é codificada. - O MXFP4 usa uma escala e8m0 (ponto fixo, 8 bits) com um tamanho de grupo de 32. Ele é elevado à potência de 2 antes de multiplicar o peso. - O NVFP4 usa uma escala e4m3 (fp8) com um tamanho de grupo de 16. É multiplicado pelo peso diretamente A codificação de escala no MXFP4 é bastante abaixo do ideal porque não possui representações para muitos valores no intervalo de que precisamos. Na verdade, se você observar a distribuição de escalas para GPT-OSS, ela está extremamente concentrada em apenas alguns valores. Por exemplo, para a segunda camada MoE, estou olhando para apenas 8/256 valores possíveis são usados. (Veja o gráfico).
17,44K