Gigatoken:Rust编写的BPE分词器,单机吞吐达24.53 GB/s
斯坦福博士生Marcel Rød开源Rust分词库Gigatoken,支持GPT-2、Llama、Qwen等23种主流模型分词器,在AMD EPYC双路服务器上实现24.53 GB/s文本编码速度,较HuggingFace tokenizers提速989倍。其性能突破源于手工实现的预分词状态机与预分词缓存优化,而非改进BPE合并逻辑。
性能突破:单机GB/s级分词吞吐
Gigatoken是由斯坦福大学博士生Marcel Rød开发并以MIT许可证开源的字节对编码(BPE)分词器,用Rust编写并提供Python绑定。在144核AMD EPYC 9565双路服务器上,使用11.9 GB的owt_train.txt语料测试GPT-2分词任务时,Gigatoken达到24.53 GB/s的编码吞吐量。作为对比,OpenAI的tiktoken为36.0 MB/s,HuggingFace tokenizers为24.8 MB/s——前者提速681倍,后者提速989倍。在Apple M4 Max(16核)上达8.79 GB/s(较HuggingFace提速1268倍),在消费级AMD Ryzen 7 9800X3D上达6.27 GB/s(提速106倍)。该加速效果不依赖特定CPU架构或词汇表,已在多种硬件平台复现。
支持广泛、接口灵活
Gigatoken已发布v0.9.0版本(2026年7月21日),可通过`pip install gigatoken`安装。代码库中Rust占比66.2%,Python占比33.3%。官方基准测试覆盖23种主流分词器家族,包括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与Mistral等。
它提供两种使用方式:兼容模式可封装现有HuggingFace或tiktoken分词器,保证输出完全一致,但因需承担Python层开销(如列表构建、字符串转字节),实测仅提速200–300倍;原生API则由Rust直接读取文件,所有公开性能数据均基于此路径获得。
核心优化:预分词与缓存机制
性能跃升并非来自BPE合并算法改进,而是聚焦于两个常被忽视的环节:
(1)手工预分词(Pretokenization):多数分词器依赖正则引擎,而Gigatoken采用手写状态机。在100 MB OpenWebText数据上的单线程GPT-2预分词测试显示:基础正则方案约47 MiB/s;手写状态机达380 MiB/s;引入NEON SIMD的winnow-combinator达462 MiB/s;改用SWAR(寄存器内SIMD)+256字节首字节查表后提升至830 MiB/s;最终通过双游标指令级并行(ILP)优化至1049 MiB/s——相较winnow+NEON基线提升2.27倍,相较正则方案提升22.3倍。
(2)预分词缓存(Pretoken Caching):对已见单词直接查表返回编码结果,避免重复计算。作者坦承该设计实践难度高——缓存易膨胀、预分词分布呈长尾特性,且需最小化Python交互与线程间耦合。优化日志如实记录失败尝试:如冷热分离标注导致性能回退至580 MiB/s;两阶段SWAR分类缓冲区虽算法正确,却因内存带宽开销压倒分支节省,仅达354 MiB/s;而基于性能剖析的优化(PGO)未见效,因其核心循环本就无分支。
开源与可验证性
项目提供交互式基准探索器,用户可切换CPU型号、追溯优化历史,或估算自身语料处理耗时。所有基准数据均源自仓库的benchmarks目录与pretokenizer优化日志,强调可复现与透明性。
> 编者观点:Gigatoken揭示了AI基础设施中“被遗忘的瓶颈”——分词虽小,却在大模型训练与推理的数据流水线中高频调用;中国企业若面向国产芯片或异构算力场景构建AI中间件,可借鉴其“绕过通用抽象、直击硬件特性”的工程哲学,在预处理层挖掘可观性能红利。
本文为企业智脑(优秘智能)编译整理自公开资讯,信息与观点以原文为准,仅供参考。阅读原文(MarkTechPost) →