huggingface-tokenizers

Fast tokenizers optimized for research and production. Rust-based implementation tokenizes 1GB in <20 seconds. Supports BPE, WordPiece, and Unigram algorithms. Train custom vocabularies, track alignments, handle padding/truncation. Integrates seamlessly with transformers. Use when you need high-perf

By orchestra-research · 769 installs

npx skills add orchestra-research/ai-research-skills --skill huggingface-tokenizers

Source repository · Upstream listing

HuggingFace Tokenizers Fast Tokenization for NLP Fast, production ready tokenizers with Rust performance and Python ease of use. When to use HuggingFace Tokenizers Use HuggingFace Tokenizers when: Need extremely fast tokenization (<20s per GB of text) Training custom tokenizers from scratch Want alignment tracking (token → original text position) Building production NLP pipelines Need to tokenize large corpora efficiently Performance : Speed : <20 seconds to tokenize 1GB on CPU Implementation : Rust core with Python/Node.js bindings Efficiency : 10 100× faster than pure Python implementations Use alternatives instead : SentencePiece : Language independent, used by T5/ALBERT tiktoken : OpenAI's BPE tokenizer for GPT models transformers AutoTokenizer : Loading pretrained only (uses this library internally) Quick start Installation Load pretrained tokenizer Train custom BPE tokenizer Training time : ~1 2 minutes for 100MB corpus, ~10 20 minutes for 1GB Batch encoding with padding Tokenization algorithms BPE (Byte Pair Encoding) How it works : 1. Start with character level vocabulary 2. Find most frequent character pair 3. Merge into new token, add to vocabulary 4. Repeat until vocabulary size reached Used by : GPT 2, GPT 3, RoBERTa, BART, DeBERTa Advantages : Handles OOV words well (breaks into subwords) Flexible vocabulary size Good for morphologically rich languages Trade offs : Tokenization depends on merge order May split common words unexpectedly WordPiece How it works : 1. Start with character vocabulary 2. Score merge pairs: frequency(pair) / (frequency(first) × frequency(second)) 3. Merge highest scoring pair 4. Repeat until vocabulary size reached Used by : BERT, DistilBERT, MobileBERT Advantages : Prioritizes meaningful merges (high score = semantically related) Used successfully in BERT (state of the art results) Trade offs : Unknown words become [UNK] if no subword match Saves vocabulary, not merge rules (larger files) Unigram How it works : 1. Start with large vocabulary (all substrings) 2. Compute loss for corpus with current vocabulary 3. Remove tokens with minimal impact on loss 4. Repeat until vocabulary size reached Used by : ALBERT, T5, mBART, XLNet (via SentencePiece) Advantages : Probabilistic (finds most likely tokenization) Works well for languages without word boundaries Handles diverse linguistic contexts Trade offs : Computationally expensive to train More hyperparameters to tune Tokenization pipeline Complete pipeline: Normalization → Pre tokenization → Model → Post processing Normalization Clean and standardize text: Common normalizers : NFD , NFC , NFKD , NFKC Unicode normalization forms Lowercase() Convert to lowercase StripAccents() Remove accents (é → e) Strip() Remove whitespace Replace(pattern, content) Regex replacement Pre tokenization Split text into word like units: Common pre tokenizers : Whitespace() Split on spaces, tabs, newlines ByteLevel() GPT 2 style byte level splitting Punctuation() Isolate punctuation Digits(individual digits=True) Split digits individually Metaspace() Replace spaces with ▁ (SentencePiece style) Post processing Add special tokens for model input: Common patterns : Alignment tracking Track token positions in original text: Use cases : Named entity recognition (map predictions back to text) Question answering (extract answer spans) Token classification (align labels to original positions) Integration with transformers Load with AutoTokenizer Convert custom tokenizer to transformers Common patterns Train from iterator (large datasets) Performance : Processes 1GB in ~10 20 minutes Enable truncation and padding Multi processing Speedup : 5 8× with 8 cores Performance benchmarks Training speed Corpus Size BPE (30k vocab) WordPiece (30k) Unigram (8k) 10 MB 15 sec 18 sec 25 sec 100 MB 1.5 min 2 min 4 min 1 GB 15 min 20 min 40 min Hardware : 16 core CPU, tested on English Wikipedia Tokenization speed Implementation 1 GB corpus Throughput Pure Python ~20 minutes ~50 MB/min HF Tokenizers ~15 seconds ~4 GB/min Speedup 80× 80× Test : English text, average sentence length 20 words Memory usage Task Memory Load tokenizer ~10 MB Train BPE (30k vocab) ~200 MB Encode 1M sentences ~500 MB Supported models Pre trained tokenizers available via from pretrained() : BERT family : bert base uncased , bert large cased distilbert base uncased roberta base , roberta large GPT family : gpt2 , gpt2 medium , gpt2 large distilgpt2 T5 family : t5 small , t5 base , t5 large google/flan t5 xxl Other : facebook/bart base , facebook/mbart large cc25 albert base v2 , albert xlarge v2 xlm roberta base , xlm roberta large Browse all: https://huggingface.co/models?library=tokenizers References [Training Guide](references/training.md) Train custom tokenizers, configure trainers, handle large datasets [Algorithms Deep Dive](references/algorithms.md) BPE, WordPiece, Unigram explained in detail [Pipeline Components](references/pipeline.md) Normalizers, pre tokenizers, post processors, decoders [Transformers Integration](references/integration.md) AutoTokenizer, PreTrainedTokenizerFast, special tokens Resources Docs : https://huggingface.co/docs/tokenizers GitHub : https://github.com/huggingface/tokenizers ⭐ 9,000+ Version : 0.20.0+ Course : https://huggingface.co/learn/nlp course/chapter6/1 Paper : BPE (Sennrich et al., 2016), WordPiece (Schuster & Nakajima, 2012)