Andrej Karpathy, ex ricercatore di OpenAI, ha pubblicato un nuovo tutorial sulla tokenizzazione per i modelli di linguaggio a grandi dimensioni (LLM). Nel corso, Karpathy spiega come costruire da zero il tokenizer utilizzato nella serie GPT di OpenAI. Egli evidenzia che i tokenizer sono una parte distinta della pipeline LLM, con un proprio set di addestramento e un algoritmo specifico, noto come Byte Pair Encoding (BPE). Questo algoritmo permette ai tokenizer di eseguire due funzioni fondamentali: “encode()”, che converte stringhe in token, e “decode()”, che fa l’opposto.
Karpathy sostiene che molti problemi e comportamenti anomali nei LLM derivano dalla tokenizzazione. Nel suo corso, analizza questi problemi, discutendo le lacune nella tokenizzazione e l’importanza di trovare un modo per eliminare questa fase.
In aggiunta, Karpathy ha creato “minbpe”, un nuovo repository su GitHub. Questo repository contiene un codice essenziale e pulito per l’algoritmo BPE, ampiamente usato nella tokenizzazione LLM.
Karpathy ha recentemente lasciato OpenAI, affermando in un post che la sua partenza è dovuta al desiderio di concentrarsi su progetti personali. Durante il suo periodo in OpenAI, ha contribuito significativamente allo sviluppo di un assistente AI e ha lavorato a stretto contatto con Bob McGrew, capo della ricerca dell’azienda.
Ha inoltre analizzato il tokenizer Gemma, un modello open source rilasciato di recente da Google. Nel tentativo di capire il tokenizer Gemma, Karpathy ha decodificato il suo modello protobuf in Python, confrontandolo dettagliatamente con il tokenizer Llama 2. Tra le osservazioni principali del suo confronto, si evidenzia l’incremento della dimensione del vocabolario di Gemma da 32.000 a 256.000 token e la scelta di impostare l’opzione “add_dummy_prefix” su False, in linea con le pratiche GPT. Questo promuove una maggiore coerenza con una preelaborazione minima.
Il tokenizer Gemma si distingue anche per l’inclusione di numerosi simboli definiti dall’utente e token speciali, come sequenze di fine riga ed elementi HTML, che aggiungono complessità al suo processo di tokenizzazione. Il “model_prefix” di Gemma indica un ampio corpus di addestramento, suggerendo un dataset di circa 51 GB.
In conclusione, il tokenizer di Gemma condivide somiglianze fondamentali con quello di Llama 2, ma si differenzia per la dimensione del vocabolario, l’inclusione di token speciali e un approccio funzionale leggermente diverso riguardo l’impostazione “add_dummy_prefix”. Karpathy offre una visione approfondita delle sfumature della metodologia di tokenizzazione di Gemma attraverso la sua analisi.