Antidoom: come Liquid AI ha risolto il problema dei loop infiniti nei modelli di ragionamento

Avete presente quando un modello di linguaggio inizia a ripetere la stessa frase all’infinito, tipo ‘Aspetta, fammi riconsiderare…’ e poi ancora ‘Aspetta, fammi riconsiderare…’ fino a esaurire l’intera finestra di contesto? Liquid AI chiama questo fenomeno ‘doom loop’ — il loop della dannazione — e ha appena pubblicato una soluzione che funziona davvero.

Il problema è particolarmente fastidioso nei modelli di ragionamento piccoli, quelli che devono pensare a lungo su problemi complessi. Su un checkpoint iniziale del loro LFM2.5-2.6B, il 10,2% delle risposte su problemi di matematica e coding difficili finiva in un loop degenerativo. Dopo l’applicazione di Antidoom? 1,4%. E gli score di valutazione sono migliorati su tutta la linea.

Anatomia di un disastro computazionale

I doom loop nascono dall’interazione di tre meccanismi. Primo: alcuni token sono sovra-addestrati. Se avete mai visto un modello che usa ‘delve’ o ‘testament’ in modo sospetto, sapete di cosa parlo. Nei modelli di ragionamento, i colpevoli più comuni sono marker di discorso come ‘Wait’, ‘So’, ‘Alternatively’. Non sono necessariamente negativi — possono segnalare un cambio di strategia o una verifica. Ma quando il modello è incerto o bloccato, diventano scorciatoie comode che riavviano lo stesso pattern invece di far progredire il ragionamento.

I dati di Liquid AI sono eloquenti. Nel checkpoint iniziale di LFM2.5-2.6B, i token che più spesso innescavano un loop erano:

  • ‘the’ — 11,39%
  • ‘So’ — 4,51%
  • ‘Alternatively’ — 3,22%
  • ‘Wait’ — 2,56%
  • ‘But’ — 2,46%

Secondo meccanismo: il contesto precedente rinforza il loop. A ogni ripetizione, la probabilità di ogni token nella sequenza si avvicina a 1. È un circolo vizioso documentato anche nel lavoro di Duan et al. sulla ‘circular reasoning’, che hanno identificato un pattern di attenzione a forma di V: prima arriva la ripetizione semantica (il modello si fissa su un’idea), poi quella testuale (le stesse parole che riappaiono nell’output).

Terzo: il sampling greedy. I modelli di ragionamento girano tipicamente a temperatura bassa per mantenere tracce stabili e riproducibili. A temperatura 0, il token più probabile viene sempre selezionato, e un loop localmente rinforzato non ha via d’uscita. Temperature più alte aiutano in teoria, ma una volta che il meccanismo 2 ha spinto la probabilità del token-loop vicino a 1, non resta quasi nulla per il resto del vocabolario. I risultati di Liquid AI mostrano looping significativo anche a temp=0.67.

Final Token Preference Optimization: chirurgia di precisione

La soluzione comune è applicare una penalità di ripetizione durante l’inferenza, ribilanciando la distribuzione di output. Ma è un cerotto, e può degradare le performance. Il reinforcement learning può affrontare il problema, ma richiede reward calibrati con attenzione e rollout online costosi.

Liquid AI ha preso un’altra strada. Hanno identificato l’esatto token che inizia il loop, addestrato il modello a preferire alternative coerenti in quella singola posizione, e lasciato il resto della distribuzione praticamente intatto. Il metodo adatta Antislop, addestrando su coppie chosen/rejected che rappresentano un singolo token di completamento, usando quello che chiamano Final Token Preference Optimization (FTPO).

FTPO differisce da DPO (Direct Preference Optimization) in modi importanti. Primo: addestra solo il token finale di una sequenza a metà generazione. Secondo: supporta più token ‘chosen’ per sample, distribuendo la probabilità su un gruppo di alternative invece di sostituire un token sovra-addestrato con un altro. Terzo: usa una componente di loss simile a KL implementata nello spazio dei logit, evitando pressione sui gradienti per token non correlati omettendo il softmax. Quarto: una regolarizzazione a due parti che permette ai token chosen e rejected di muoversi più liberamente rispetto al riferimento, mentre il resto del vocabolario è più strettamente vincolato.

Per costruire il training set, generano completamenti su un mix di prompt progettato per elicitare looping (disponibile come LiquidAI/antidoom-mix-v1.0) a bassa temperatura, poi scavano nei fallimenti. Un loop viene rilevato se una sezione si ripete almeno quattro volte, su almeno 60 caratteri. Una volta identificata la sequenza, prendono di mira il primo token della prima ripetizione. In quella posizione, estraggono le alternative top-k dai log-prob del modello base, filtrano rumore breve o non alfanumerico, e mantengono fino a 20 sostituti plausibili come token ‘chosen’.

Iperparametri e tempi

Nell’implementazione Antidoom, il modello viene tipicamente addestrato per un’epoca con LoRA. Hanno scoperto che rank LoRA alti (128-256) producono i risultati migliori: maggiore apprendibilità con meno degradazione. Addestrano su tutte le proiezioni di attenzione e MLP, oltre a lm_head, con learning rate ottimali intorno a 4e-6 fino a 2e-5.

L’over-training può accadere facilmente. Quindi attivano early stopping condizionato su chosen_win (la proporzione di sample in cui i token chosen vincono sui rejected). Fermarsi a chosen_win=0.35 ha tipicamente ridotto i tassi di doom loop dal 20-30% all’1-2% con degradazione minima. Addestrare più a lungo tendeva a degradare il modello, spesso creando nuovi problemi di looping.

Per il checkpoint iniziale LFM2.5-2.6B, la generazione del training set richiede circa un’ora su 8x MI325 GPU, e l’addestramento successivo circa una-due ore su 1x MI325 GPU. Il tempo di generazione dipende dal tasso di doom loop del modello, fermandosi dopo aver raccolto 20k coppie.

I numeri parlano chiaro

Liquid AI ha testato Antidoom anche su Qwen3.5-4B, noto per produrre loop ripetitivi durante il ragionamento. Il tasso di doom-looping è crollato dal 22,9% all’1% con sampling greedy, con score di eval aumentati marcatamente.

Per il baseline checkpoint LFM2.5-2.6B, gli score di eval cambiano inversamente al tasso di doom-loop all’aumentare della temperatura. Si può dedurre che il looping stia riducendo direttamente i punteggi dei benchmark, dato che dopo l’addestramento Antidoom gli score sono sostanzialmente più alti.

C’è un effetto secondario interessante. Dopo l’addestramento Antidoom, il checkpoint vede un calo di performance a temp=1.0. È atteso: è generalmente compreso che sampling a temperatura più alta possa danneggiare le performance, dato che il modello è più propenso a selezionare token meno preferiti. C’è stata una saggezza prevalente secondo cui temperature più alte potrebbero essere preferibili per i modelli di ragionamento, permettendo loro di esplorare lo spazio delle soluzioni. Ma questa intuizione potrebbe essere fuorviante, confusa con l’effetto dominante del doom-looping. Una volta eliminati i loop, si vedono performance di eval più forti con sampling quasi-greedy, almeno nei modelli testati qui.

Qwen-3.5-4B mostra un miglioramento di performance ancora maggiore dopo l’addestramento Antidoom. Il pattern è lo stesso di LFM2.5-2.6B: il beneficio maggiore a temperature di sampling basse, e un pattern esposto di degradazione delle performance avvicinandosi a temp=1 dopo che il looping non è più un fattore.

Più round, meno problemi

Nella pratica, Liquid AI ha scoperto che può essere utile applicare più round di Antidoom. Dopo il primo round, il tasso di looping scende perché i token che causano loop vengono rifiutati e la probabilità viene ribilanciata verso le alternative chosen in quella posizione. Questo però può esporre nuovi punti di fallimento, dove altri token ora innescano loop altrove nella distribuzione. Applicare un round aggiuntivo di Antidoom prende di mira questi loop appena emersi, riducendo ulteriormente il tasso.

Il codice completo — generazione, rilevamento, trainer FTPO — è disponibile su github.com/Liquid4All/antidoom. Il README del repository contiene indicazioni sull’uso della pipeline di addestramento e sulla selezione degli iperparametri appropriati. Non male per una soluzione che richiede un paio d’ore su una singola GPU.