Fundamentos

Tokenization III: SentencePiece, byte-level e por que a contagem de tokens morde

Contagens de tokens são propriedade de um tokenizer específico, não do texto; a mesma frase em inglês e em português custa valores diferentes, e a USD 0,45 por milhão de tokens de input essa diferença vira fatura.

Atualizada em

01 · Conceito

Conceito

Você publica um assistente de suporte em dois idiomas. Mesmo produto, mesmo system prompt, mesmo modelo, tradução fiel. Um mês depois, o relatório financeiro mostra a implantação em português custando visivelmente mais por conversa que a em inglês. Ninguém escreveu código diferente. A diferença foi decidida anos antes, por qualquer que tenha sido o corpus sobre o qual os merges do tokenizer foram contados.

A pergunta quantos tokens tem este texto não tem resposta enquanto um tokenizer não for nomeado. Um token não é uma unidade linguística estável; é uma entrada no vocabulário fixo de um modelo, produzida sob uma política de normalização e uma lista ordenada de merges, como a lição 1.3 estabeleceu. Dois modelos podem exibir texto decodificado idêntico e ocupar números diferentes de posições para fazê-lo.

Trabalhe o exemplo de forma concreta, com o passo de medição explicitado, porque é o passo que as pessoas pulam. Pegue uma frase em inglês e sua tradução em português, passe as duas pelo tokenizer que acompanha o Qwen3.8-27B e registre as contagens. Suponha que sua medição devolva 18 tokens para o inglês e 26 para o português — um par de números ilustrativo, não um fato publicado, e exatamente o tipo de coisa que você precisa medir em vez de citar. A razão é de cerca de 1,44, ou seja, o texto em português consome quarenta e quatro por cento mais tokens de input cobrados e posições de contexto neste exemplo. Isso não prova exatamente quarenta e quatro por cento mais compute ou latência de prefill: esses valores dependem da arquitetura, do comprimento da sequência, do batching, dos kernels e do hardware, portanto meça o runtime em produção.

Agora converta posições em dinheiro. Em agosto de 2026, a Cloudflare Workers AI listava o Qwen3.8-27B a USD 0,45 por milhão de tokens de input e USD 3,20 por milhão de tokens de output. Um milhão de requisições a 18 tokens de input cada são 18 milhões de tokens:

18×0.45=8.10(USD, input, um milha˜o de requisic¸o˜es)18 \times 0.45 = 8.10 \quad \text{(USD, input, um milhão de requisições)} 26×0.45=11.70(USD, input, um milha˜o de requisic¸o˜es)26 \times 0.45 = 11.70 \quad \text{(USD, input, um milhão de requisições)}

Uma diferença de USD 3,60 por milhão de requisições. Por requisição é invisível, três décimos de milésimo de centavo, e é justamente por isso que nunca é pego numa revisão. Em volume, é um imposto estrutural cobrado de uma das suas duas populações de usuários, e cresce com cada system prompt, cada documento recuperado e cada turno de conversa que é reinjetado no contexto.

Aqui está o erro de caminho, e ele é quase universal. Alguém estima tokens como caracteres divididos por quatro, ou palavras divididas por 0,75. Essas razões foram calibradas em prosa inglesa e desabam em qualquer outro lugar. A flexão e os caracteres acentuados do português segmentam diferente. Chinês e japonês não têm espaços para ancorar os pedaços. Código-fonte, números longos, URLs, tabelas e emojis fragmentam de formas que nenhuma constante derivada de prosa antecipa. Pior, a regra falha de forma assimétrica, então subestima exatamente os idiomas que já pagam mais, o que transforma um erro de orçamento num problema de justiça. A correção não é uma constante melhor. É parar de estimar: o tokenizer está a poucas linhas de distância e devolve a verdade em milissegundos.

As famílias de tokenizer diferem em como chegam a essa verdade. Muitos pipelines primeiro dividem por espaço ou pontuação e só depois aprendem subpalavras dentro dos pedaços, o que embute silenciosamente suposições específicas de idioma no pré-processamento. O SentencePiece foi projetado para treinar direto de frases cruas, representando o espaço em branco como um símbolo explícito para que tokenization e detokenization formem um processo fechado e reversível. É um kit de ferramentas e não um algoritmo único, suportando merges no estilo BPE assim como o modelo Unigram, que parte de um vocabulário candidato, atribui probabilidades aos pedaços e poda iterativamente rumo a um vocabulário que dê alta verossimilhança ao corpus. O Unigram admite várias segmentações de uma string e pode amostrar entre elas, o que os merges ordenados do BPE não fazem.

Abordagens byte-level, que é a família à qual o Qwen3.8-27B pertence, resolvem a cobertura por baixo. O pré-tokenizador ByteLevel do Qwen fornece unidades derivadas de bytes para todo byte UTF-8 de texto Unicode válido após normalização NFC, então escritas nunca vistas não precisam de um símbolo desconhecido. Seu tokenizer público continua sendo uma interface de texto, não um decoder de binário arbitrário, e o modelo BPE publicado define byte fallback como falso. A eficiência não decorre disso: um fragmento familiar do inglês pode ser um token só enquanto um grafema incomum se expande em vários pedaços de byte, e essa assimetria é o mecanismo por trás da fatura acima.

A normalização mexe nas contagens antes de qualquer uma dessas etapas. Strings Unicode canonicamente equivalentes podem diferir em code points, enquanto o normalizador NFC do Qwen colapsa as duas grafias de café examinadas na lição 1.1 antes do BPE. Passar tudo para minúsculas, aplicar normalização de compatibilidade, limpar espaços e tratar acentos — cada uma dessas operações funde distinções de que alguma tarefa em algum lugar precisa. Depois, os tokens especiais acrescentam uma camada inteiramente invisível na caixa de texto: marcadores de início e fim, separadores de papel, delimitadores de chamada de ferramenta e todo o andaime do chat template ocupam posições e são todos cobrados. Num modelo com modos de raciocínio e sem raciocínio, o próprio template difere entre eles, o que a lição 6.2 desenvolve.

Ao comparar tokenizers a sério, use corpora representativos por idioma e domínio e reporte distribuições em vez de uma anedota: comprimentos de sequência na mediana e na cauda, a proporção de fragmentos derivados de bytes e com que gravidade os termos importantes do seu domínio fragmentam. Verifique a decodificação contra o contrato de normalização declarado pelo tokenizer e se tokens especiais não podem ser forjados a partir de texto do usuário.

A conclusão é firme e um pouco desconfortável. Tokens são embalagem específica de cada modelo. SentencePiece, BPE, Unigram e tokenization byte-level são escolhas de engenharia que trocam tamanho de vocabulário por cobertura, comprimento de sequência e viés indutivo, e nenhuma delas entrega uma unidade natural neutra em relação ao idioma. As consequências recaem de forma desigual sobre usuários reais, e a única prática defensável é medir a requisição exata contra o tokenizer exato em produção e então precificá-la a uma tarifa que você consiga datar.

02 · Analogia

Analogia

Duas companhias aéreas embalam a mesma bagagem sob regras diferentes. Uma envolve cada peça de roupa antes de medir, outra trata o material de embalagem como conteúdo comum, uma terceira consegue triturar qualquer objeto até cubos padronizados para que nada seja recusado. O tamanho visível da mala não determina o número de volumes, e é volume que se cobra. Janelas de contexto e faturas são denominadas em volumes, e é por isso que a única resposta honesta para qual é o tamanho deste texto é outra pergunta: medido por quem?

03 · Explique de volta

Explique de volta

Explique por que não existe conversão universal de palavras para tokens, e mostre como uma diferença de contagem de tokens entre dois idiomas vira diferença de dinheiro.

Mínimo: 80 caracteres e 15 palavras. Seu texto fica somente neste navegador.

Aguardando sua explicação.

Comparar com uma resposta-modelo

Um token é uma entrada no vocabulário de um modelo específico, sob uma normalização e uma lista ordenada de merges, então o mesmo parágrafo ocupa números diferentes de posições em modelos diferentes. Os corpora diferem, então um idioma bem representado quando os merges foram aprendidos ganha pedaços compactos enquanto outro é montado a partir de mais fragmentos. Para transformar isso em dinheiro, meça os dois textos com o tokenizer exato que está em produção e multiplique pela tarifa publicada. Na Cloudflare Workers AI, o Qwen3.8-27B era cobrado a USD 0,45 por milhão de tokens de input e USD 3,20 por milhão de tokens de output em agosto de 2026, então uma diferença sistemática de 8 tokens por requisição ao longo de um milhão de requisições são 8 milhões de tokens de input a mais, o que dá USD 3,60. O número é pequeno por requisição e estrutural em volume, e recai sobre o idioma que o tokenizer representa de forma menos eficiente.

04 · Teste seu entendimento

Teste seu entendimento

01Um prompt em inglês mede 18 tokens e sua tradução em português mede 26. Ao longo de um milhão de requisições a USD 0,45 por milhão de tokens de input, qual é o custo extra de input da versão em português?
Resposta e explicação

USD 3,60 — A diferença é de 8 tokens por requisição, então um milhão de requisições acrescenta 8 milhões de tokens de input. Oito vezes 0,45 dá 3,60. A conta total de input em português seria de 26 milhões de tokens, ou USD 11,70, contra USD 8,10 do inglês.

02Qual é a única forma confiável de saber se um texto cabe na janela de contexto de um modelo?
Resposta e explicação

Rodar o tokenizer exato que está em produção sobre a requisição totalmente montada, incluindo chat template e tokens especiais — Regras de bolso são calibradas em prosa inglesa e falham em outros idiomas, em código, em números e em URLs. Os marcadores do template e os separadores de papel também ocupam posições que nunca aparecem na caixa de texto.

03A lição 1.3 mostrou que os merges do BPE são aprendidos de um corpus em ordem de frequência. Por que isso explica contagens de tokens desiguais entre idiomas?
Resposta e explicação

Pares frequentes no corpus de treino viraram pedaços únicos, então texto diferente daquele corpus é montado a partir de mais fragmentos — A ordem dos merges segue a frequência no corpus, então representação no corpus do tokenizer se converte diretamente em eficiência de compressão e, portanto, em comprimento de sequência e custo.

Conclua o teach-back e acerte o quiz para finalizar a aula.

◎ · Marcador de evidência

Fontes

  1. Taku Kudo e John Richardson (2018). SentencePiece: A simple and language independent subword tokenizer and detokenizer for Neural Text Processing.
  2. Cloudflare (2026). Qwen3.8-27B na Cloudflare Workers AI.
  3. Ashish Vaswani et al. (2017). Attention Is All You Need.
  4. Qwen Team (2026). Qwen3.8-27B Model Card.