Corso
La tokenizzazione è un'attività fondamentale quando si lavora su compiti di NLP. Consiste nel suddividere il testo in unità più piccole, chiamate token, che possono essere parole, sottoparole o caratteri.
Una tokenizzazione efficiente è cruciale per le prestazioni dei modelli linguistici, rendendola un passaggio essenziale in vari compiti di NLP come generazione di testo, traduzione e riassunto.
Tiktoken è una libreria di tokenizzazione veloce ed efficiente sviluppata da OpenAI. Offre una soluzione robusta per convertire il testo in token e viceversa. La sua velocità ed efficienza la rendono un'ottima scelta per sviluppatori e data scientist che lavorano con grandi dataset e modelli complessi.
Questa guida è pensata per sviluppatori, data scientist e chiunque intenda usare Tiktoken e abbia bisogno di un riferimento pratico con esempi.
Primi passi con Tiktoken
Per iniziare a usare Tiktoken, dobbiamo installarla nel nostro ambiente Python (Tiktoken è disponibile anche per altri linguaggi di programmazione). Puoi farlo con il seguente comando:
pip install tiktoken
Puoi consultare il codice della versione open-source di Tiktoken per Python nel seguente repo GitHub.
Per importare la libreria, eseguiamo:
import tiktoken
Modelli di codifica
I modelli di codifica in Tiktoken determinano le regole per suddividere il testo in token. Questi modelli sono cruciali perché definiscono come il testo viene segmentato e codificato, influenzando l'efficienza e l'accuratezza delle attività di elaborazione del linguaggio. I diversi modelli OpenAI usano codifiche diverse.
Tiktoken fornisce tre modelli di codifica ottimizzati per diversi casi d'uso:
- o200k_base: codifica per il nuovissimo modello GPT-4o-Mini.
- cl100k_base: modello di codifica per i modelli OpenAI più recenti come GPT-4 e GPT-3.5-Turbo.
- p50k_base: codifica per i modelli Codex, usati per applicazioni di codice.
- r50k_base: codifica meno recente per diverse versioni di GPT-3.
Tutti questi modelli sono disponibili con l'API di OpenAI. Nota che l'API dà accesso a molti più modelli di quelli elencati qui. Per fortuna, la libreria Tiktoken offre un modo semplice per verificare quale codifica usare con ciascun modello.
Per esempio, se ho bisogno di sapere quale modello di codifica usa il modello text-embedding-3-small, posso eseguire il seguente comando e ottenere la risposta in output:
print(tiktoken.encoding_for_model('text-embedding-3-small'))
Otteniamo <Encoding 'cl100k_base'> come output. Prima di passare a lavorare direttamente con Tiktoken, voglio menzionare che OpenAI ha una web app per la tokenizzazione in cui puoi vedere come vengono tokenizzate diverse stringhe—puoi accedervi qui. Esiste anche un tokenizer online di terze parti, Tiktokenizer, che supporta modelli non OpenAI.
Codificare il testo in token
Per codificare il testo in token con Tiktoken, prima devi ottenere un oggetto di codifica. Ci sono due modi per inizializzarlo. Per prima cosa, puoi farlo con il nome del tokenizer:
encoding = tiktoken.get_encoding("[name of the tokenizer]")
Oppure puoi eseguire la funzione encoding_for_model menzionata in precedenza per ottenere l'encoder di un modello specifico:
encoding = tiktoken.encoding_for_model("[name of the model]")
Ora possiamo eseguire il metodo encode del nostro oggetto encoding per codificare una stringa. Per esempio, possiamo codificare la stringa “I love DataCamp” nel seguente modo—qui uso l'encoder cl100k_base:
print(encoding.encode("I love DataCamp"))
Otteniamo [40, 3021, 2956, 34955] come output.
Decodificare i token in testo
Per decodificare i token di nuovo in testo, possiamo usare il metodo .decode() sull'oggetto encoding.
Decodifichiamo i seguenti token [40, 4048, 264, 2763, 505, 2956, 34955]:
print(encoding.decode([40, 4048, 264, 2763, 505, 2956, 34955]))
I token vengono decodificati in “I learn a lot from DataCamp.”
Casi d'uso pratici e suggerimenti
Oltre alla codifica e decodifica, ci sono altri due casi d'uso a cui posso pensare.
Stima e gestione dei costi
Conoscere il conteggio dei token prima di inviare una richiesta all'API di OpenAI può aiutarti a gestire efficacemente i costi. Poiché la fatturazione di OpenAI si basa sul numero di token elaborati, pre-tokenizzare il tuo testo ti consente di stimare il costo dell'uso dell'API. Ecco come puoi contare i token nel tuo testo usando Tiktoken:
tokens = encoding.encode(text)
print(len(tokens))
Semplicemente vediamo quanti token otteniamo controllando la lunghezza dell'array. Conoscendo in anticipo il numero di token, puoi decidere se accorciare il testo o adeguare l'uso per rimanere entro il budget.
Puoi leggere di più su questo approccio in questo tutorial su Stimare il costo di GPT usando la libreria tiktoken in Python.
Validazione della lunghezza dell'input
Quando usi i modelli OpenAI dall'API sei vincolato dal numero massimo di token per input e output. Superare questi limiti può causare errori o output troncati. Con Tiktoken, puoi validare la lunghezza dell'input e assicurarti che rispetti i limiti di token.
Conclusione
Tiktoken è una libreria di tokenizzazione open-source che offre velocità ed efficienza su misura per i modelli linguistici di OpenAI.
Capire come codificare e decodificare il testo con Tiktoken, insieme ai suoi vari modelli di codifica, può migliorare notevolmente il tuo lavoro con i modelli linguistici di grandi dimensioni.


