tuetoken 把 LLM tokenizer 重做成 Rust 内核:7-40× 提速,丢进 vLLM 最多吃到 85% 吞吐

tokenization 是 LLM 栈里最无聊的部件——它每天被调用无数次,却一直躺在单线程、Python 包装的循环里没人优化。Vadim Borisov 团队的 tuetoken 把这件事重做了一遍:Rust 内核 + Python API,作为 `transformers.AutoTokenizer` 的 drop-in 替代,输出与参考实现 byte-identical,只是速度不同。 核心改造两条。**一是把经典 BPE 的 O(n²) merger 换成线性版本**——长 hash、base64、随机 ID、压缩代码会让 chunk 变长,二次代价爆表,这正是 tokenizer 偶尔一次跑几分钟的元凶;线性 merger 让这类对抗性输入稳定在毫秒级。**二是真的多线程**。Rust 内核释放 GIL,192 核机器上单文档长文本吞吐从 35 MB/s 拉到 110 MB/s;tiktoken 仍卡在 16 MB/s 串行,HuggingFace tokenizers 自动多核也才 18 MB/s。整套 benchmark:p50 编码 16×、解码 18×、大 batch 5×、短 chat 30×,综合 7-40× 提速。 vLLM 端收益更具体:长 prompt TTFT 显著下降(128 KB prompt 从几十毫秒压到个位数);高并发短请求吞吐最高 +85%;embedding 模型受益最明显(单前向,tokenization 在端到端占比反而最重)。覆盖 Llama / Qwen / Mistral / Mixtral / DeepSeek / Gemma / Phi / GPT-OSS / GLM / Kimi,也原生吃 OpenAI 的 tiktoken。`pip install tuetoken`,改一行 import 就够,MIT 开源,无法复现则拒载而非悄悄近似——这点对生产很关键。