Speculative Decoding: Inferenza LLM più efficiente
L'inferenza nei modelli linguistici di grandi dimensioni (LLM) è spesso percepita come lenta a causa della complessità delle moltiplicazioni di matrici. In realtà, per inferenze locali o chat con una dimensione batch di 1, il collo di bottiglia principale è la larghezza di banda della memoria. Il trasferimento dei pesi del modello dalla VRAM alle unità di calcolo assorbe la maggior parte del tempo, lasciando le unità logico-aritmetiche (ALU) inattive.
Lo Speculative Decoding sfrutta questi tempi morti per offrire un aumento di velocità da 2x a 3x, mantenendo inalterati i risultati.
Come funziona
-
Setup: Bozza vs. Obiettivo
Si utilizza un modello "bozza" di dimensioni ridotte (ad esempio, 100 milioni di parametri) insieme al modello "obiettivo" più grande (ad esempio, Llama-70B). Il modello bozza genera rapidamente una sequenza di token.
-
Verifica Parallela
I token generati dal modello bozza vengono inseriti nel modello obiettivo in un singolo passaggio. Poiché l'inferenza è vincolata dalla memoria, il caricamento dei pesi per un token richiede circa lo stesso tempo del caricamento per più token.
-
Rejection Sampling
Si utilizza il rejection sampling per garantire che la distribuzione corrisponda esattamente a quella del modello obiettivo. Se la probabilità stimata dal modello bozza è inferiore a quella del modello obiettivo, il token viene accettato. Altrimenti, viene rifiutato con una certa probabilità. Anche se solo alcuni token vengono accettati, si ottiene comunque un vantaggio in termini di efficienza.
Lo Speculative Decoding trasforma un'operazione vincolata dalla memoria in una vincolata dal calcolo, ottimizzando l'utilizzo dell'hardware senza richiedere un nuovo training del modello.
💬 Commenti (0)
🔒 Accedi o registrati per commentare gli articoli.
Nessun commento ancora. Sii il primo a commentare!