Vai al contenuto
AI.info

The Pulse

Tokenizers v1 di Hugging Face codifica fino a 30 volte più velocemente

La release candidate di Tokenizers v1 di Hugging Face codifica il testo da tre a 30 volte più velocemente della v0.23 su un Apple M4 Max, afferma l’azienda. La riprogettazione mantiene gli stessi ID dei token, sostituendo la suddivisione tr

Tokenizers v1 di Hugging Face codifica fino a 30 volte più velocemente

AI.info Team · Scritto con l’IA · verificato ·

Tokenizers v1 di Hugging Face codifica il testo da tre a 30 volte più velocemente della precedente versione v0.23 nei test a thread singolo su un Apple M4 Max, secondo benchmark pubblicati il 21 settembre 2026. Il guadagno maggiore si osserva con il tokenizer GPT-2, mentre T5-base registra il valore più basso dell’intervallo.

La release candidate mantiene gli stessi ID dei token, vocabolario, ranghi di fusione e interfaccia pubblica di codifica della v0.23. Ciò significa che le applicazioni possono usare l’implementazione più veloce senza cambiare le sequenze di token inviate a un modello. Il benchmark copre dieci famiglie di modelli e misura le prestazioni su documenti distinti, anziché codificare ripetutamente un unico documento in cache.

Trenta volte più veloce senza cambiare gli input del modello

La tokenizzazione converte il testo negli ID interi utilizzati da un modello linguistico. Questa fase può diventare un collo di bottiglia quando i team addestrano modelli su dataset molto grandi, gestiscono molte richieste simultanee o elaborano ripetutamente input lunghi, afferma Hugging Face. Un tokenizer lento può lasciare un acceleratore altrimenti impegnato in attesa che la CPU prepari i dati.

Nei test dell’azienda, Tokenizers v1 raggiunge il 76% della scalabilità lineare su otto worker. Il risultato deriva da diverse modifiche al processo di codifica, non da un nuovo formato di tokenizzazione. La libreria continua a supportare diverse famiglie di tokenizer, tra cui byte pair encoding, WordPiece e Unigram.

Risultato misurato: Hugging Face riferisce un miglioramento della velocità di codifica a thread singolo da tre a 30 volte rispetto alla v0.23 su un Apple M4 Max, con ID dei token in output identici.

Sostituire le espressioni regolari e le allocazioni ripetute

Otto delle dieci famiglie di modelli esaminate usano il byte pair encoding, o BPE. Nel precedente processo, un’espressione regolare suddivide il testo in pre-token prima che l’algoritmo di fusione combini coppie di byte adiacenti in base ai ranghi appresi.

Tokenizers v1 sostituisce questo uso generico delle espressioni regolari con un componente di suddivisione scritto a mano, chiamato bitcannon, per i pattern supportati. Il componente usa operazioni booleane su flussi di bit e istruzioni SIMD, che gli consentono di esaminare 64 byte per ogni operazione su registro. I tokenizer i cui pattern non rientrano tra quelli supportati continuano a usare il processo basato sulle espressioni regolari, quindi i guadagni riportati variano a seconda del modello.

La riprogettazione aggiunge anche una cache delle parole locale a ciascun thread. Quando un pre-token ricompare, la libreria può riutilizzare gli ID dei token già ottenuti invece di eseguire una seconda volta il processo di fusione. La cache è più utile quando gli input contengono pre-token ripetuti e può aggiungere operazioni di ricerca senza grandi benefici su testi molto vari, avverte Hugging Face.

Un nuovo ciclo di fusione basato su memoria riutilizzabile

Il ciclo di fusione BPE usa ora memoria temporanea fornita dal chiamante, anziché allocarla per ogni operazione. Memorizza i simboli in un array piatto e collega i simboli adiacenti in base alla posizione, consentendo a una fusione di aggiornare gli indici invece di spostare i dati. Le coppie candidate vengono raccolte in valori a 64 bit, così che l’implementazione possa confrontare le priorità di fusione come numeri interi.

L’elaborazione in batch riduce un’altra fonte di overhead. Anziché richiamare la fase del modello una volta per ogni pre-token, la v1 può elaborare un batch di segmenti di pre-token con un’unica chiamata al modello. Il parallelismo nativo assegna a ogni worker un buffer temporaneo e un’area di cache delle parole propri, eliminando l’unico lock che in precedenza causava contesa per lo stato condiviso durante la codifica simultanea.

La release è ancora una candidate

Hugging Face ha pubblicato la candidate della v1 per Rust tramite crates.io. Gli sviluppatori possono installarla con cargo add tokenizers --pre; le applicazioni che necessitano soltanto della codifica possono disabilitare la funzionalità di addestramento predefinita e installare il processo di codifica senza la sua dipendenza C++.

Le misurazioni pubblicate si riferiscono al crate Rust. I binding Python usano la stessa implementazione ma aggiungono un overhead per ogni chiamata che il benchmark non include. Altre famiglie di modelli passeranno al nuovo ciclo di fusione prima della versione 1.0.0; sono previsti successivi interventi sulla libreria Transformers e su altri progetti basati su Tokenizers.

Il cambiamento immediato ha una portata più limitata rispetto a una nuova architettura di modello, ma è più pratico per i sistemi che elaborano testo su larga scala: lo stesso input produce gli stessi ID, mentre la CPU impiega meno tempo a suddividerlo, allocare memoria e fonderlo. La release candidate rimane la versione disponibile per i test e l’azienda non ha ancora dichiarato completo il pacchetto 1.0.0.

Leggi il benchmark e il rapporto sull’implementazione di Hugging Face.

Fonte

Notizie correlate

Esplora

Altri articoli