Gigatoken: BPE-Tokenizer in Rust codiert Text mit 24,53 GB/s, bis zu 989x schneller als HuggingFace Tokenizers
OpenAI
Hugging Face
Google/DeepMind
Meta
Alibaba/Qwen
DeepSeek
Moonshot AI
NVIDIA
Microsoft
Allen Institute for AI
Answer.AI
Mistral
Der Stanford-Doktorand Marcel Roed hat Gigatoken veröffentlicht, einen BPE-Tokenizer in Rust mit Python-Bindungen, der Geschwindigkeiten von bis zu 24,53 GB/s auf einem 144-Kern-AMD-EPYC erreicht – 989x schneller als HuggingFace Tokenizers und 681x schneller als tiktoken. Der Geschwindigkeitszuwachs resultiert aus einem handgeschriebenen SWAR-Pre-Tokenizer und Pre-Token-Caching.
Gigatoken ist eine Bibliothek zur Tokenisierung mittels BPE (Byte-Pair-Encoding), geschrieben in Rust mit Python-Bindungen. Sie wurde unter der MIT-Lizenz von Marcel Rød, einem Doktoranden der Stanford University, veröffentlicht. Version 0.9.0 ist auf PyPI verfügbar (pip install gigatoken). In Benchmarks auf GPT-2 auf einem System mit zwei 144‑Kern‑AMD EPYC 9565 verarbeitet Gigatoken Daten mit einer Geschwindigkeit von 24,53 GB/s. Zum Vergleich: OpenAI tiktoken erreicht 36,0 MB/s, HuggingFace tokenizers 24,8 MB/s – Gigatoken ist also 681‑ bzw. 989‑mal schneller. Auf einem Apple M4 Max (16 Kerne) beträgt die Geschwindigkeit 8,79 GB/s (1268‑mal schneller als HuggingFace, 140‑mal schneller als tiktoken), auf einem AMD Ryzen 7 9800X3D 6,27 GB/s (106‑ bzw. 68‑mal schneller). Die Beschleunigung wird nicht durch einen schnelleren BPE-Merge-Zyklus erreicht, sondern durch einen handgeschriebenen Pretokenizer unter Verwendung der SWAR-Technik (SIMD Within A Register) und Caching von Pretokens. Der ursprüngliche, auf regulären Ausdrücken basierende Pretokenizer arbeitete mit etwa ~47 MB/s; nach Optimierungen (manueller endlicher Automat, SWAR, doppelter Cursor mit ILP) stieg die Geschwindigkeit auf 1049 MB/s – eine 22,3‑fache Beschleunigung. Unterstützt werden 23 Tokenizer-Familien: GPT-2, GPT-OSS, Llama 3/4, Qwen 2-3.6, DeepSeek V3/R1/V4, GLM 4/5, Kimi K2, Nemotron 3, Phi-4, OLMo 2/3, ModernBERT, Gemma und Mistral. Es gibt zwei Modi: Kompatibilitätsmodus (behält die exakte Ausgabeäquivalenz von HuggingFace/tiktoken bei, bietet jedoch nur eine 200‑ bis 300‑fache Beschleunigung) und nativen Modus (maximale Geschwindigkeit). SentencePiece-Tokenizer werden um das 7‑ bis 22‑fache beschleunigt, WordPiece wird nicht unterstützt. Eine unabhängige Reproduktion auf KrabArena (4 vCPU Intel Xeon) zeigte eine 26,2‑fache Beschleunigung gegenüber tiktoken und eine 83,4‑fache gegenüber tokenizers.
Quelle: MarkTechPost —
Original
