Come funziona il greedy decoding
A ogni passo di generazione il modello produce una distribuzione di probabilità sul suo vocabolario. Con il greedy decoding viene scelto sempre il token con la probabilità più alta: niente sampling, niente casualità. Il passo successivo parte da quel token, produce una nuova distribuzione e prende di nuovo il massimo. Si va avanti così finché il modello non emette un token di stop o raggiunge il limite di output.
Attivi il greedy decoding impostando temperature a 0, che concentra tutta la distribuzione in un picco sul token più probabile, oppure impostando il top-k a 1, che lascia un solo candidato. L'effetto è lo stesso: il generatore di numeri casuali non viene mai interpellato, e lo stesso input produce sempre lo stesso output, a patto che le condizioni numeriche sull'hardware siano identiche.
Il problema dei loop di ripetizione
Il determinismo del greedy decoding è insieme il suo fascino e il suo modo di fallire. Poiché il modello prende sempre la strada più probabile, può restare bloccato. Se una sequenza di token porta in uno schema in cui ripetere o riformulare è la continuazione più probabile, il greedy decoding segue quella strada all'infinito. Il sampling sceglierebbe ogni tanto un token meno probabile e ne uscirebbe. Il greedy decoding non può farlo.
Lo abbiamo osservato direttamente sui modelli di ragionamento: a temperature 0, un modello ha risolto correttamente un rompicapo logico, poi è entrato in un ciclo infinito di sinonimi, riformulando la conclusione con parole diverse fino a raggiungere il limite di token. Con le impostazioni raccomandate da chi pubblica il modello (temperature 1.0 con top-p e top-k), gli stessi prompt si sono conclusi normalmente. Il loop è un punto fisso nella distribuzione di probabilità del modello: il sampling può uscirne, il greedy decoding no.
Quando usarlo e quando no
Il greedy decoding è adatto ai compiti in cui la consistenza conta più della varietà e l'output è breve o molto vincolato: etichette di classificazione, estrazione strutturata o output JSON tramite constrained decoding. Per la generazione aperta, il ragionamento o qualsiasi compito in cui il modello possa entrare in uno schema che si autoalimenta, usa invece i parametri di sampling raccomandati da chi pubblica il modello. Su Infercom, se ometti temperature, la maggior parte dei modelli usa il greedy decoding: per questo la nostra documentazione avverte di impostarlo sempre in modo esplicito.
Fonti
Scopri come l'architettura dataflow di SambaNova cambia l'economia dell'inferenza, e perché abbiamo scelto di costruirci sopra.
Esplora la tecnologia