Skip to main content
Tokenizador de Modelo Único

Tokenizador de Texto

Explore a codificação Byte-Pair Encoding (BPE), segmentação de tokens, proporção de caracteres por token e mapeamento de bytes brutos na OpenAI, Llama, Qwen e DeepSeek.

Try Sample:
Tokens 0
Characters 0
Words 0
Bytes (UTF-8) 0

Input Prompt

Token Segments

Token segments will appear here as you type…
Token ID Sequence
Numeric token IDs…
Developer Actions & Share
Detalhamento Matemático e Arquitetural

Tokenização de Texto e Codificação Byte Pair Encoding

Uma derivação algorítmica e de álgebra linear passo a passo de como os Modelos de Linguagem de Grande Escala transformam texto unicode em bruto em vetores discretos de tokens de subpalavras através de Byte Pair Encoding, fusões ordenadas por frequência e projeções de incorporação em alta dimensão.

Tabela de Referência Rápida de Tokenização e Vocabulário

Configuração Padrão do Transformador LLM
Vocabulário Base
256 Bytes
Fluxo Bruto UTF 8
Vocabulário cl100k
100,277
Modelos GPT 4 e GPT 3.5
Vocabulário o200k
200,019
Modelos GPT 4o e o1
Taxa de Compressão
~0.75 p/t
Prosa Natural
Regra de Fusão BPE
argmax(u,v)
Par Ordenado por Frequência
Vetor de Incorporação
d = 4096
Espaço Oculto Contínuo
01

De Caracteres Unicode para Byte Pair Encoding

Etapa 1: Segmentação de Subpalavras

Os transformadores não interpretam texto em sua forma bruta de caracteres. Em vez disso operam sobre matrizes numéricas discretas denominadas tokens. As primeiras abordagens baseadas em palavras completas falhavam devido a vocabulários gigantescos e termos desconhecidos fora do vocabulário, enquanto a tokenização estrita por caracteres individuais produzia sequências excessivamente longas que sobrecarregavam a atenção quadrática.

O Byte Pair Encoding a nível de bytes resolve este desafio iniciando a representação a partir dos 256 valores de bytes UTF 8 possíveis e fundindo iterativamente os pares de símbolos contíguos mais frequentes observados no corpus de treinamento.

O Algoritmo Guloso de Fusão BPE:
  1. Decompor cada cadeia de texto em uma sequência de bytes UTF 8 brutos.
  2. Contabilizar a coocorrência de todos os pares adjacentes no corpus.
  3. Fundir o par com maior frequência em um novo token unitário.
  4. Repetir o ciclo até atingir o limite estipulado de vocabulário V.
Mecânica de Fusão de Subpalavras Passo 1
Texto de Entrada: "tokenization"
Bytes UTF 8: [116, 111, 107, 101, 110, 105, 122, 97, 116, 105, 111, 110]
Fusão 1: ('t', 'o') → "to" (ID: 1542)
Fusão 2: ('k', 'e', 'n') → "ken" (ID: 8931)
Fusão 3: ("to", "ken") → "token" (ID: 11241)
Tokens Finais: ["token", "ization"]
2 tokens discretos gerados a partir de 12 bytes.
02

Métricas de Compressão e Equilíbrio de Vocabulário

Equação: r_comp = N_caracteres / N_tokens

A eficiência de um tokenizador é medida pela sua razão de compressão: quantos caracteres ou palavras de linguagem natural são contidos em média em cada token gerado.

Expandir o tamanho do vocabulário de 32,000 (Llama 1) para 100,277 (GPT 4 cl100k) e para 200,019 (GPT 4o o200k) gera reduções substanciais no comprimento total das sequências. Sequências menores reduzem as operações de autoatenção quadrática e aceleram o processamento geral.

Vantagens de Vocabulários Amplos:

Sequências mais curtas, menor uso de contexto, economia de custos de API e processamento muito mais eficiente em código fonte e idiomas sem caracteres latinos.

Desvantagens de Vocabulários Amplos:

Matrizes de incorporação maiores aumentam o consumo de memória de vídeo VRAM: Parâmetros = V vezes d_modelo na entrada e na cabeça softmax final.

Fórmula de Razão de Compressão Passo 2
r_comp = |S_texto| / |Tokens(S_texto)|
Quanto maior a razão, menor o número de tokens gerados por frase.
Prosa em Inglês (o200k): 4.4 caracteres por token
Código Python (o200k): 3.8 caracteres por token
Ganho de Eficiência Multilíngue: +30% frente ao cl100k
03

De Índices Discretos para Matrizes de Incorporação Ocultas

Projeção: E = W_embed[id] ∈ ℝd

Depois que o algoritmo BPE transforma o texto em uma sequência unidimensional de números inteiros, cada identificador precisa ser convertido em um vetor denso contínuo que alimente a primeira camada de autoatenção:

1. Tabela de Busca de Incorporação:

Uma matriz de pesos treinável W_embed de dimensões V por d_modelo onde cada linha armazena a representação semântica contínua de um token.

2. Codificação Posicional:

Como os transformadores não possuem recorrência natural, somam-se incorporações posicionais sinusoidais ou esquemas rotacionais RoPE para que o modelo distinga a ordem das palavras.

3. Vetor de Entrada da Camada 0:

O tensor resultante x_0 = W_embed[token_id] + pos_emb entra diretamente na primeira camada de projeção Query, Key e Value.

Matriz de Incorporação de Entrada Passo 3
X_in = EmbeddingLookup(Tokens, W_embed) + P
Tamanho do Vocabulário V: 200,019 tokens
Dimensão Oculta d: 4,096 escalares por vetor
Parâmetros de Incorporação: ~819 Milhões de Parâmetros
04

Matriz Comparativa de Tokenizadores da Indústria

Referência Técnica
Família do Modelo Nome do Tokenizador Tamanho do Vocabulário Algoritmo Base Eficiência em Código Eficiência Multilíngue
GPT 4o e o1 o200k_base 200,019 BPE a Nível de Bytes Excelente Excelente (+30%)
GPT 4 e GPT 3.5 cl100k_base 100,277 BPE a Nível de Bytes Muito Boa Padrão
Llama 3 e Llama 3.1 tiktoken-llama 128,256 Tiktoken BPE Excelente Muito Alta
Gemma 2 e Gemma SentencePiece 256,000 Unigram / BPE Muito Boa Excelente
GPT 2 r50k 50,257 BPE Original Fraca Limitada
05

Código de Implementação em Produção: Execução com Tiktoken

Ambiente: Python 3.10+
bpe_tokenizer.py tiktoken fast bpe
import tiktoken

def inspect_token_boundaries(prompt: str, encoding_name: str = "o200k_base"):
    enc = tiktoken.get_encoding(encoding_name)
    token_ids = enc.encode(prompt)
    
    print(f"Texto de Entrada: {prompt}")
    print(f"Total de Tokens: {len(token_ids)}")
    print(f"Razão de Compressão: {len(prompt) / len(token_ids):.2f} caracteres/token\n")
    
    print("Fronteiras Individuais dos Tokens:")
    for i, token_id in enumerate(token_ids):
        raw_bytes = enc.decode_single_token_bytes(token_id)
        print(f"  Token [{i:02d}] ID: {token_id:<6} -> {raw_bytes}")

sample_text = "LLM Matrix Lab: análise avançada de Byte-Pair Encoding."
inspect_token_boundaries(sample_text)
06

Perguntas Frequentes de Engenharia de Tokenização

Perguntas Frequentes

Por que caracteres especiais e emojis ocupam múltiplos tokens?

Emojis e símbolos raros são codificados com três a quatro bytes em UTF 8. Se um determinado emoji não tiver sido incorporado como uma fusão de alta frequência durante o treinamento do vocabulário, ele será decomposto em bytes constituintes isolados gerando até quatro tokens distintos.

O que significa o token especial <|endoftext|>?

É um delimitador especial de controle adicionado ao vocabulário para sinalizar o término de um documento ou a transição entre turnos de diálogo. Esse identificador não é gerado por fusões normais de bytes, mas injetado diretamente nas matrizes de inferência.

Por que os espaços no início das palavras são incorporados aos tokens?

Os tokenizadores modernos de subpalavras associam os espaços precedentes diretamente à raiz léxica da palavra subsequente (por exemplo " mundo"). Esse padrão elimina a necessidade de emitir tokens separados dedicados exclusivamente a espaços simples entre termos.

Como a tokenização interfere na precisão aritmética dos modelos?

Se números grandes forem divididos de forma inconsistente em blocos aleatórios de dígitos (por exemplo "123" e "4567"), o mecanismo de atenção precisará reconstruir o valor posicional de cada dígito antes de calcular operações matemáticas elementares, aumentando a probabilidade de alucinações aritméticas.

Conclusão Arquitetural Chave

O Byte Pair Encoding a nível de bytes estabelece a ponte essencial entre sequências textuais contínuas e o domínio matemático discreto dos transformadores modernos. Ao balancear de modo ideal a extensão do vocabulário e o comprimento das sequências, os tokenizadores contemporâneos garantem imunidade a falhas fora do vocabulário e oferecem elevada eficiência em múltiplos idiomas e códigos de programação.

matrix