stamatios
← Voltar ao feed
Gigatoken: tokenizador mil vezes mais rápido para pré-processamento de LLMs
Open Source · Dev & Engenharia

Gigatoken: tokenizador mil vezes mais rápido para pré-processamento de LLMs

resumo de ~3 min

Gigatoken: tokenização de LLMs na casa dos GB/s

Gigatoken é um tokenizador open-source escrito em Rust que promete ser até 1000x mais rápido que os tokenizers da HuggingFace e significativamente mais rápido que o tiktoken. O projeto, criado por Marcel Rød, funciona como drop-in replacement para ambos.

Como funciona

O ganho de performance vem de três frentes principais:

  1. Pretokenização otimizada com SIMD - em vez de delegar a pretokenização a um motor de regex (como fazem HF e tiktoken), o Gigatoken implementa essa etapa diretamente com instruções SIMD (AVX512, AVX2, NEON), cobrindo CPUs x86 modernas e ARM.
  2. Cache hierárquico de mapeamentos - quando uma palavra já foi vista, seus tokens são recuperados de um cache eficiente, evitando recomputação.
  3. Mínima interação com Python e entre threads - a leitura de dados é feita diretamente pelo Rust, reduzindo overhead de crossing de fronteira de linguagem.

Uso

A instalação é via pip install gigatoken. Existem dois modos:

  • Modo compatibilidade: aceita um tokenizer HF ou tiktoken existente e o envolve, mantendo a mesma interface. A saída é idêntica à do original, com ganho de performance menor (mas ainda substancial).
  • API nativa do Gigatoken: aceita nomes de modelos do HuggingFace diretamente e lê arquivos em disco pelo Rust, alcançando o máximo de throughput.

Benchmarks

Medidos no arquivo owt_train.txt (11,9 GB, representativo de texto extraído do Common Crawl):

CPU Tokenizador Gigatoken HF tokenizers Speedup
AMD EPYC 9565 (144 cores) GPT-2 24,53 GB/s 24,8 MB/s 989×
AMD EPYC 9565 (144 cores) Qwen 3 22,16 GB/s 34,2 MB/s 648×
Apple M4 Max (16 cores) GPT-2 8,79 GB/s 6,9 MB/s 1.268×
AMD Ryzen 7 9800X3D (16 cores) GPT-2 6,27 GB/s 59 MB/s 106×

No EPYC, a taxa observada permitiria tokenizar o Common Crawl inteiro (~130 trilhões de tokens) em menos de 6,5 horas.

Os tokenizadores baseados em SentencePiece (Gemma, Mistral, CodeLlama, Llama 2) são os mais lentos no Gigatoken, com speedups de 7-22× - ainda assim superiores aos concorrentes.

Cobertura

Suporta praticamente todos os tokenizadores BPE em uso: GPT-2, Llama 3/3.1/3.2/3.3/4, Qwen 2/2.5/3/3.5, DeepSeek V3/R1/V4, Phi-4, OLMo, Nemotron, GLM, Kimi K2, Gemma, ModernBERT, entre outros.

Limitações conhecidas

  • WordPiece ainda não é suportado.
  • SentencePiece (usado por modelos Google/BERT) tem otimização limitada.
  • File sinks ainda não implementados na API nativa.
  • Windows pouco testado (recomenda-se WSL).
  • A iteração Python usa ABI3, mais lento que APIs específicas por versão do CPython (experimentos indicam 2x de melhora futura).

Sobre o código

A maior parte foi escrita à mão sem IA. IA foi usada nas etapas finais para: API pública, ampliação de compatibilidade, portabilidade de estratégias SIMD entre arquiteturas, profiling final e refatoração. O projeto tem 625 stars e 32 forks no GitHub.