Llama.cpp ha appena incassato un piccolo ma significativo ritocco che fa felice chi serve modelli su hardware proprio. La pull request #25532 (in realtà il numero compare in fondo al post originale, ndr) sposta il sampling di MTP – la tecnica di speculative decoding multi-token – dalla CPU alla GPU. Nei test con una scheda di fascia consumer recente, una RTX 5090, il miglioramento misurato in token al secondo è dell’8% su Qwen3.6:35B. Su un’anziana Tesla P40, ancora molto diffusa negli homelab e in alcuni macchinari aziendali rigenerati, il guadagno scende al 4%, ma è comunque il più grande incremento di velocità che l’autore del report ricordi di aver visto negli ultimi tempi.

La differenza tra le due schede è istruttiva. La P40 (architettura Pascal, compute capability sm_61) ha una banda memoria di 580 GB/s, mentre la 5090 arriva a 1.792 GB/s. Con il modello Qwen3.6-35B-A3B quantizzato in IQ4_NL, sulla P40 il tempo di decode è dominato dal trasferimento dei pesi dalla VRAM ai core: il costo del round-trip CPU↔GPU per il sampling rappresentava una frazione contenuta del tempo totale. Spostandolo interamente su GPU, quel costo scompare, ma l’accelerazione netta è minore che sulla 5090, dove la banda molto più alta rendeva il ritardo CPU↔GPU relativamente più pesante. Il dato chiave: il rapporto di accettazione (acceptance ratio) rimane identico, quindi non c’è nessuna perdita di qualità nel passaggio.

Il test sulla P40: numeri e contesto

Il confronto pubblicato dall’utente mette a fianco CPU sampling e GPU sampling sulle stesse sessioni di benchmark. Con CPU sampling, la P40 viaggiava tra i 50 e i 76 token/s a seconda del task (codice Python, spiegazione concetti, riassunti, traduzioni, matematica stepwise). Spostando il sampling sulla GPU, lo stesso hardware sale a 52–80 token/s, con un picco massimo osservato di 84 token/s. Il guadagno assoluto è di circa 2 token/s, che su task lunghi accumula tempo prezioso.

Per il mondo on-premise, questa PR segnala una direzione chiara: i framework di inference comunitari stanno spremendo ogni millisecondo spostando verso la GPU anche gli ultimi stadi della pipeline che per anni sono rimasti sulla CPU. Non è solo una questione di ottimizzazione gratuita di cui godere oggi: è un segnale strutturale su come la competizione nella pura efficienza si stia spostando dal modello al runtime. Mentre le soluzioni commerciali a volte faticano a tenere il passo con le schede più eterogenee presenti nei parchi aziendali, progetti come llama.cpp continuano a offrire miglioramenti incrementali che, su carichi sostenuti, si traducono in risparmio di tempo e in una migliore esperienza utente per chi usa chatbot interni, analisi documentale riservata o ambienti air-gapped.

L’aspetto forse più rilevante non è il guadagno percentuale in sé, ma il fatto che la community stia affinando la gestione dello “speculative decoding” MTP anche su hardware datato. Su una P40, la mossa riduce la frizione tra le fasi della generazione senza richiedere upgrade hardware. Per chi sta valutando un deployment on-premise e ha a disposizione macchine con GPU di generazioni diverse, questo significa che un semplice aggiornamento del runtime può estendere la vita utile delle schede esistenti, rimandando investimenti capitali.

E mentre la banda delle nuove GPU continua a salire, il peso relativo delle operazioni di controllo ancora affidate alla CPU diventerà sempre più visibile. Llama.cpp, con questa modifica, anticipa un futuro in cui la pipeline di inference — dal caricamento dei pesi al campionamento dei token — sarà un monolito su GPU, riducendo ulteriormente il Total Cost of Ownership per chi fa self-hosting.