Tokenization
A tokenização divide texto, imagens ou áudio em tokens que um modelo converte em embeddings. Aborda BPE e outros métodos de subword, recortes de imagem e custos de tokens.
A tokenização é a etapa que converte a entrada bruta em uma sequência de tokens, as unidades discretas que um modelo lê, e atribui a cada token um ID inteiro de um vocabulário fixo. Um tokenizador de texto transforma "O ônibus parou." em quatro IDs, e o modelo consulta um vetor de incorporação para cada token; assim, o tokenizador determina o que um grande modelo de linguagem (LLM) considera uma única unidade. Os tokens também servem como unidade de medida da janela de contexto de um modelo, da latência de inferência durante a geração de texto e dos preços da API. A mesma ideia vai além do texto: um Transformer de visão (ViT) tokeniza uma imagem em blocos, e modelos de fala tokenizam o áudio em quadros curtos.
Como funciona a tokenização de subpalavras#
As primeiras abordagens de processamento de linguagem natural (NLP) dividiam o texto em espaços e pontuação, deixando palavras raras e novas fora do vocabulário, enquanto a tokenização em nível de caracteres produz sequências muito longas. Os Transformers modernos usam tokenizadores de subpalavras que mantêm palavras frequentes inteiras e dividem as raras em partes reutilizáveis. A codificação por pares de bytes (BPE), adaptada para tradução automática por Sennrich et al. em 2015, aprende seu vocabulário a partir de um corpus de treinamento: começa com caracteres ou bytes individuais e mescla repetidamente o par adjacente mais frequente em um novo token, até o vocabulário atingir um tamanho-alvo. A codificação de texto novo repete, em ordem, as mesclagens aprendidas.
A BPE em nível de bytes, usada desde o GPT-2, começa com os 256 valores de bytes possíveis, permitindo codificar qualquer string, emoji ou arquivo de código sem um token desconhecido. Outros algoritmos escolhem suas unidades de outra forma. O WordPiece, usado pelo BERT, mescla o par que mais aumenta a probabilidade dos dados de treinamento, e o método Unigram da biblioteca SentencePiece do Google começa com um grande vocabulário candidato e o reduz, tratando o espaço como um símbolo comum para que um único tokenizador funcione com idiomas escritos sem espaços. Os vocabulários cresceram com o tempo: BERT usa 30.522 tokens, GPT-2 e GPT-3 usam 50.257, Llama 3 usa 128.256, e o o200k_base da OpenAI usa cerca de 200.000. A biblioteca tiktoken da OpenAI compara os vocabulários mais antigo e mais recente:
import tiktoken
# Byte-level BPE vocabularies from GPT-2 (2019) and GPT-4o (2024)
for name in ["gpt2", "o200k_base"]:
encoding = tiktoken.get_encoding(name)
print(f"{name}: {encoding.n_vocab:,} tokens in the vocabulary")
for text in ["Ultralytics YOLO26 detects buses.", "バスが止まった。"]:
ids = encoding.encode(text)
# Decode each ID on its own to see where the tokenizer split the text
pieces = [encoding.decode([i]) for i in ids]
print(f" {len(ids)} tokens: {pieces}")O vocabulário do GPT-2 usa 11 tokens na frase em inglês, dividindo "Ultralytics" em Ult, ral, y e tics, enquanto o o200k_base precisa de 9. Para a frase japonesa "the bus stopped", o GPT-2 precisa de 9 tokens e divide o caractere 止 em dois tokens em nível de bytes, cada um decodificado isoladamente como o caractere de substituição �, enquanto o o200k_base precisa de 7.
Tokenização e termos relacionados#
- Token: A unidade produzida pela tokenização, como uma palavra, subpalavra, byte, patch de imagem ou quadro de áudio.
- Embeddings: Os vetores aprendidos que um modelo consulta para cada ID de token, treinados junto com o restante da rede sobre um vocabulário definido previamente pelo tokenizador.
- Segmentação de palavras no NLP clássico: Bibliotecas como spaCy e NLTK dividem o texto em palavras e pontuação para análise sintática e rotulagem, muitas vezes seguida de stemming ou lematização para análise linguística.
- Tokenização em segurança de dados: Em pagamentos e proteção de dados, a tokenização substitui um valor sensível, como o número de um cartão, por um substituto aleatório armazenado em um cofre protegido.
Por que a contagem de tokens é importante#
Em textos em inglês, os tokenizadores da OpenAI têm uma média de cerca de quatro caracteres por token, mas outros idiomas e códigos podem exigir muito mais. Petrov et al. (2023) descobriram que o mesmo texto traduzido para idiomas diferentes pode variar até 15 vezes em comprimento após a tokenização, o que aumenta os custos da API e reduz o contexto utilizável nesses idiomas. Os limites entre tokens também determinam o que um modelo consegue ver. Um LLM que lê "strawberry" como alguns tokens com várias letras não tem uma visão direta das letras, e o o200k_base divide "3.14159" em 3, ., 141 e 59, o que dificulta a aritmética dígito a dígito. Projetos sem tokenizador, como o Byte Latent Transformer da Meta, evitam um vocabulário fixo agrupando bytes brutos em patches cujo tamanho depende da previsibilidade do próximo byte.
Tokenização de imagens, áudio e vídeo#
Um ViT divide uma imagem em patches de tamanho fixo; assim, com patches de 16×16 pixels, uma imagem de 224×224 se transforma em 196 tokens de patch, cada um achatado e projetado linearmente em um embedding antes da autoatenção. Os modelos de visão e linguagem (VLMs) enviam embeddings de patches a um LLM junto com tokens de texto, portanto, uma resolução de imagem maior significa mais tokens por solicitação. Os geradores de imagens costumam usar tokens visuais discretos: um codebook de quantização vetorial substitui cada patch pelo ID do vetor de código mais próximo, o que permite que os modelos autorregressivos visuais gerem imagens token por token, como texto, e a mesclagem de tokens reduz a contagem em sequências longas de imagens e vídeos ao combinar tokens semelhantes.
Os modelos de visão também tokenizam texto. Quando o YOLOE-26 recebe nomes de classes por meio de set_classes, a Ultralytics passa cada nome pelo tokenizador BPE em nível de byte do CLIP, preenchido ou truncado para 77 tokens, e o codificador de texto MobileCLIP2 da Apple transforma o resultado no embedding que a cabeça de detecção compara com as regiões da imagem. No reconhecimento de fala, o Whisper da OpenAI converte cada janela de áudio de 30 segundos em quadros de espectrograma log-Mel, que o codificador processa como uma sequência de 1.500 posições.










