Ieri sera ho insegnato a nanochat d32 come contare le 'r' in fragola (o varianti simili). Pensavo che questo sarebbe stato un buon/divertente esempio di come aggiungere capacità a nanochat e ho scritto una guida completa qui: Questo viene fatto tramite un nuovo compito sintetico `SpellingBee` che genera esempi di un utente che chiede questo tipo di problema e una soluzione ideale da un assistente. Poi facciamo un midtrain/SFT finetune su questi per dotare il LLM della capacità, o ulteriormente addestriamo con RL per renderlo più robusto. Ci sono molti dettagli da sistemare, specialmente con modelli più piccoli, e la guida li affronta. Come panoramica breve: - Devi garantire diversità nei prompt/query degli utenti - Per modelli piccoli come nanochat, in particolare, devi prestare molta attenzione ai dettagli della tokenizzazione per rendere il compito facile per un LLM. In particolare, devi fare attenzione agli spazi bianchi, e poi devi distribuire il calcolo del ragionamento su molti token di soluzione parziale: prima standardizziamo la parola tra virgolette, poi la scriviamo (per spezzare i token), poi iteriamo e manteniamo un contatore esplicito, ecc. - Sto incoraggiando il modello a risolvere il compito in due modi separati: un modo manuale (aritmetica mentale nella sua testa) e anche tramite l'uso dello strumento dell'interprete Python a cui nanochat ha accesso. Questo è un po' "fumo e specchi" perché ogni soluzione al momento è "pulita", senza errori. Si potrebbe modificare il compito per simulare errori e dimostrare recuperi per esempio, o eseguire RL. Molto probabilmente, una combinazione di entrambi funziona meglio, dove il primo funge da prior per il RL e gli fornisce elementi su cui lavorare. Se nanochat fosse un modello molto più grande, ti aspetteresti o spereresti che questa capacità "emergesse" più facilmente a un certo punto. Ma poiché il "cervello" di nanochat d32 è delle dimensioni di un ~ape, se vogliamo che conti le r in fragola, dobbiamo farlo sovra-rappresentandolo nei dati, per incoraggiare il modello a impararlo prima. Ma funziona! :)