Che cosa ha annunciato Zyphra
Zyphra ha pubblicato ZYFA (Zyphra FlashAttention on AMD), una libreria di kernel per l'attenzione di tipo prefill in precisione FP8 e BF16 destinata alle GPU AMD Instinct MI355X, come riporta MarkTechPost. Il codice è distribuito con licenza Apache 2.0 ed è accompagnato da un articolo tecnico. Secondo l'azienda, ZYFA alimenta il motore di attenzione dello Zyphra Optimization Engine, il sistema che gestisce il servizio Zyphra Cloud, e si presenta come interfaccia sostitutiva di flash_attn_func.
Il rilascio riguarda una fase specifica del calcolo, il prefill dell'attenzione causale, con testa di dimensione 128 e la forma richiesta dal meccanismo MLA (192/128). L'ambiente dichiarato è circoscritto: GPU MI355X con architettura CDNA4 (gfx950), ROCm 7.2.3 e PyTorch 2.12. I kernel BF16 sono scritti in HIP, mentre quelli FP8 sono assembly con pianificazione manuale generato da uno script Python.
I numeri dichiarati e il confronto con AITER
Il termine di paragone scelto da Zyphra è AITER, la libreria di kernel predefinita di AMD. Su attivazioni reali di modelli, i kernel FP8 di ZYFA risultano da 1,16 a 1,76 volte più veloci: 1,16x su Mistral-7B, 1,17x su Qwen3-8B e 1,76x su DeepSeek-V2-Lite, misure a 16K token e con clock sostenuti. In BF16 il guadagno è marginale, tra 1,01 e 1,02 volte. Nei benchmark gaussiani a 32K token, il kernel FP8 con testa 128 raggiunge 2.672 TFLOP/s contro 1.944 di AITER, pari al 53% del picco dichiarato nei datasheet FP8, mentre AITER si ferma al 39%. Sulla forma MLA il rapporto sale a 1,99x (2.464 contro 1.237 TFLOP/s).
Sul fronte dell'efficienza energetica, Zyphra riporta 1,94 e 1,91 TFLOP/J su livelli catturati di Mistral-7B e Qwen3-8B, contro 1,60 e 1,56 di AITER. Sulla precisione, l'errore FP8 di ZYFA è indicato come 0,22 volte quello di AITER su Mistral-7B e 0,38 su Qwen3-8B, con una divergenza KL dal riferimento fp64 di 3,4×10⁻³ contro 5,9×10⁻³ nel modello completo Mistral-7B. L'azienda segnala inoltre output identici bit per bit su 7.200 esecuzioni. Tutti questi valori sono dichiarazioni della società autrice e non risultati replicati da terzi.
Perché l'FP8 non basta da solo
La parte tecnicamente più interessante è la spiegazione del collo di bottiglia. Le istruzioni matriciali FP8 girano al doppio del picco BF16, ma accelerano solo i due prodotti matriciali QKᵀ e PV; la softmax intermedia resta sulla unità vettoriale alla stessa velocità in entrambe le precisioni. Con 32 query contro 128 chiavi, il lavoro matriciale FP8 richiede 1.024 cicli, mentre la softmax esatta ne consuma 896: servono quindi sovrapposizione quasi perfetta per tenere occupate le unità matriciali. Le tracce di Zyphra mostrano che con AITER la pipeline matriciale resta inattiva per il 31,7% dei cicli, anche perché l'MI355X non traccia a livello hardware il completamento delle istruzioni matriciali e l'ordine delle istruzioni deve creare l'overlap.
ZYFA interviene con tre scelte: una softmax approssimata detta Lean P, che sfrutta la struttura dei bit e4m3 per calcolare 2^x con una moltiplicazione-addizione e una conversione intera, riducendo i cicli vettoriali per blocco da 896 a 384; una pianificazione a due onde ping-pong che condivide ogni SIMD tra emissione di istruzioni matriciali e calcolo delle probabilità, portando l'occupazione della pipeline matriciale all'86% dei cicli a regime contro il 60%; e uno scaling per blocco di 64 chiavi tramite potenze di 2, assorbito dall'istruzione matriciale scalata di CDNA4, con un'istruzione matriciale aggiuntiva per la somma delle probabilità arrotondate. Zyphra segnala anche che una rotazione di Hadamard su Q e K circa dimezza l'errore di input dovuto alla quantizzazione, al costo di circa lo 0,1% del tempo di attenzione su Mistral-7B.
Limiti e questioni aperte
Il quadro ha confini precisi. Il caso peggiore dichiarato è 1,16x su Mistral-7B, e su quel livello il clock di ZYFA scende a 1.628 MHz contro 2.108 MHz di AITER: dipende dal numero di bit che cambiano, perché AITER trasforma più probabilità piccole in zeri o subnormali, facendo commutare meno bit. ZYFA compensa con meno cicli complessivi, ma i confronti fra vendor diversi provengono da input e clock differenti e, soprattutto, Zyphra non ha misurato GPU NVIDIA. La portabilità oltre le MI355X non è indicata, e l'adozione dipende dalla verifica indipendente di prestazioni ed errore su altre configurazioni.
