Tokenizers
O crate tokenizers da Hugging Face em Rust - pipelines rápidos de BPE/WordPiece para pré-processamento de LLM e classificadores.
Busque em todas as páginas da documentação
O crate tokenizers da Hugging Face em Rust - pipelines rápidos de BPE/WordPiece para pré-processamento de LLM e classificadores.
use tokenizers::Tokenizer;
fn encode_line(tok: &Tokenizer, text: &str) -> tokenizers::Result<Vec<u32>> {
Ok(tok.encode(text, true)?.get_ids().to_vec())
}Quando usar isto:
use tokenizers::Tokenizer;
use tokenizers::PaddingParams;
use tokenizers::TruncationParams;
fn main() -> tokenizers::Result<()> {
let mut tok = Tokenizer::from_file("tokenizer.json")?;
tok.with_padding(Some(PaddingParams::default()));
tok.with_truncation(Some(TruncationParams::default()))?;
let batch = tok.encode_batch(
vec!["Rust ML é rápido", "Tokenizers importam"],
true,
)?;
for enc in &batch {
println!("len {} ids {:?}", enc.get_ids().len(), enc.get_ids());
}
Ok(())
}O que isto demonstra:
encode retorna Encoding com ids, tokens, máscara de atenção, offsets.max_length da configuração do modelo.[CLS], <s>, etc.) são inseridos quando add_special_tokens é true.| API | Propósito |
|---|---|
encode / encode_batch | Texto para IDs |
decode | IDs de volta para string |
with_truncation | Limitar o comprimento da sequência |
with_padding | Alinhamento em lote |
tokenizer.json errado para os pesos - gerações incorretas. Correção: baixe o tokenizer da revisão exata do modelo.tokenizer.model_max_length do HF.PaddingParams com pad_id do vocabulário.Arc<Tokenizer> carregado uma vez na inicialização.| Alternativa | Use Quando | Não Use Quando |
|---|---|---|
| tiktoken (bindings) | Modelos OpenAI | Modelos HF tokenizer.json |
| crate sentencepiece | Modelos SPM nativamente | Já padronizado em HF JSON |
| Tokenizers Python em sidecar | Hack rápido | Orçamento de latência de produção |
| Manual em nível de caractere | Alfabetos minúsculos | Modelos de vocabulário Transformer |
Do repositório de modelos Hugging Face - a mesma revisão dos arquivos de peso.
TruncationParams::max_length deve corresponder à configuração config.max_position_embeddings do modelo ou ao valor de treinamento.
Encoding::get_attention_mask() fornece flags 1/0 para posições preenchidas nas entradas do transformer.
Aplique strings de modelo no código do aplicativo antes de encode - os modelos são específicos da família do modelo.
O Tokenizer é barato para clonar; compartilhe imutavelmente entre manipuladores Axum com Arc.
A codificação em lote em Rust geralmente é 2-10x mais rápida em caminhos de serviço com uso intensivo de CPU - compare o tamanho do seu vocabulário.
Treine com a CLI tokenizers do HF, exporte JSON, carregue em Rust - o mesmo pipeline em ambos os lados.
get_offsets() mapeia tokens para intervalos de string de origem para atribuição na UI.
encode((text_a, text_b), true) para modelos de par de sentenças como NLI.
Versões da Stack: Esta página foi escrita para Rust 1.97.0 (edição 2024), Tokio 1.x, Axum 0.8, serde 1.0, sqlx 0.8, clap 4, e Polars 0.46+.
Revisado por Chris St. John·Última atualização: 16 de jul. de 2026