GPT-OSS utilizza la quantizzazione MXFP4 (che ora è supportata da MLX). Attualmente ci sono due formati FP4 in circolazione: MXFP4 e NVFP4 (NV per Nvidia). Dall'osservazione di come GPT-OSS utilizza MXFP4, risulta essere piuttosto subottimale. Penso che NVFP4 sarà il formato più comunemente utilizzato in futuro. Maggiori dettagli di seguito: Entrambi i formati quantizzano i pesi a 4 bit in virgola mobile (e2 m1) con una scala unica per gruppo. La differenza sta nella dimensione del gruppo e nel modo in cui la scala per ciascun gruppo è codificata. - MXFP4 utilizza una scala e8m0 (fisso, 8 bit) con una dimensione del gruppo di 32. Viene elevata alla potenza di 2 prima di moltiplicare il peso. - NVFP4 utilizza una scala e4m3 (fp8) con una dimensione del gruppo di 16. Viene moltiplicata direttamente con il peso. La codifica della scala in MXFP4 è piuttosto subottimale perché non ha rappresentazioni per molti valori nell'intervallo di cui abbiamo bisogno. Infatti, se guardi la distribuzione delle scale per GPT-OSS, è estremamente concentrata attorno a solo un paio di valori. Ad esempio, per il secondo strato MoE che sto esaminando, solo 8/256 valori possibili sono anche utilizzati. (Vedi grafico).
17,34K