Capítulo 02 · Tokenização · 8 min

Do texto aos tokens

Como o texto se torna números. BPE, subpalavras, e por que os LLMs têm dificuldade em contar letras.

Por que tokens?

Um modelo de linguagem nao consegue manipular texto diretamente. Ele manipula numeros. O primeiro passo, sempre que voce fala com um LLM, e transformar o texto em uma sequencia de inteiros: os token IDs.

A tokenizacao e o corte que torna essa conversao possivel.

Por que nao um token por palavra?

A primeira vista, poderiamos imaginar: uma palavra = um token. Simples.

Mas nao funciona:

  • A lingua contem milhoes de palavras possiveis (flexoes, neologismos, nomes proprios, erros de digitacao...). Ter um token por palavra exigiria um vocabulario gigantesco.
  • O modelo nao consegue fazer nada com uma palavra que nunca viu.
  • Algumas linguas (chines, japones) nem sequer usam espacos entre palavras.

A solucao adotada por quase todos os LLM modernos: as subpalavras.

Tokenizacao por subpalavras

Com um tokenizer de subpalavras:

  • Palavras frequentes viram um unico token (the, e, sao)
  • Palavras raras sao quebradas em partes menores (tokenizacaotoken + izacao)
  • Caracteres desconhecidos continuam decomponiveis ate a letra

O resultado: um vocabulario de tamanho razoavel (geralmente entre 30.000 e 200.000 tokens) que consegue representar qualquer texto.

O algoritmo mais usado se chama BPE (Byte Pair Encoding). Ele comeca com caracteres individuais e funde iterativamente os pares mais frequentes no corpus de treinamento.

BPE em trinta segundos

Imagine um mini-corpus de tres palavras: low, lower, lowest. Comecamos tokenizando no nivel do caractere:

l o w
l o w e r
l o w e s t

A cada iteracao, procuramos o par de tokens adjacentes mais frequente. Aqui, l o aparece tres vezes — fundimos em lo:

lo w
lo w e r
lo w e s t

Agora lo w e o par mais frequente. Fundimos:

low
low e r
low e s t

Continuamos ate atingir o tamanho de vocabulario desejado. Os pedacos que aparecem com frequencia (low) viram um unico token. Os raros (est) ficam decompostos. E exatamente isso que o BPE faz — sobre bilhoes de palavras em vez de tres, e sobre bytes em vez de caracteres nos modelos modernos (byte-level BPE), o que garante que nada fique "fora do vocabulario".

Alguns parentes que vale conhecer: WordPiece (BERT), SentencePiece (T5, Llama), Unigram LM (mT5). Todos compartilham a mesma ideia — um vocabulario de subpalavras — com heuristicas de fusao diferentes.

Tokens especiais

Alem das subpalavras do texto, o tokenizer reserva alguns tokens especiais que nunca aparecem naturalmente:

  • <|im_start|>, <|im_end|> (OpenAI), [INST]…[/INST] (Llama), <|user|> / <|assistant|> — delimitam os turnos de uma conversa.
  • <|endoftext|> — fim de documento.
  • <|fim_prefix|>, <|fim_middle|> — para fill-in-the-middle, usado em completacao de codigo.

E o que permite transformar um dialogo "Usuario disse X, Assistente respondeu Y" em uma sequencia linear de tokens que o modelo consegue processar. Quando voce manda uma mensagem para o ChatGPT, esses marcadores sao adicionados automaticamente antes da tokenizacao.

Teste

À direita aparecem as sub-palavras: cada token é um fragmento reutilizável, não necessariamente uma palavra inteira. As palavras frequentes cabem em um único token; as raras se decompõem em vários pedaços.

Algumas coisas para observar:

  • Palavras curtas e frequentes raramente sao cortadas.
  • Palavras longas ou raras muitas vezes acabam em varias partes.
  • O espaco antes de uma palavra faz parte do token (por isso · hello e hello sao tokens diferentes).
  • Em portugues, a relacao token/palavra costuma ser um pouco maior que em ingles (cerca de 1.3-1.7 contra 1.2-1.4), tambem porque os modelos viram mais ingles durante o treinamento.

Consequencias praticas

Essa historia de tokens tem muitas implicacoes inesperadas:

  • LLMs contam mal letras. "Quantos R existem em strawberry?" — frequentemente respondem 2 em vez de 3, porque a palavra chega em poucos tokens, nao como letras separadas.
  • Os precos de API sao calculados em tokens, nao em palavras. O portugues pode custar um pouco mais para processar do que o ingles.
  • As janelas de contexto (128k tokens, 200k tokens...) tambem sao medidas em tokens. Um livro de 100.000 palavras em portugues pode representar cerca de 140.000 tokens.

Para o modelo, "tokenizacao" e "tok·en·iza·cao" sao a mesma coisa. Ele so ve pedacos.

O proximo passo

Agora que seu texto virou uma sequencia de inteiros, esses inteiros entram no modelo. Primeiro passo la dentro: eles sao transformados em vetores, em um espaco de centenas de dimensoes onde o significado vira uma posicao geometrica.

Esse e o tema do proximo capitulo.

Atualizado em

Do texto aos tokens: a tokenization de LLMs · Step by Token