Gigatoken发布 超高速Rust BPE分词器实现24.53 GB/s吞吐量,性能提升千倍
•0 阅读•3分钟•开源
HuggingFaceRustGigatokentiktokenBPE
•0 阅读•3分钟•开源
背景与意义
分词是大模型训练与推理链路中唯一少被系统化 profiling 的环节。Marcel Rød 在 GitHub 上发布的 Gigatoken 用 Rust 重写了 BPE 分词流程,并提供 Python 绑定,旨在突破传统库在 CPU 上的吞吐瓶颈,为大规模语料预处理提供更高效的底层支撑。
性能基准
- 硬件配置:144 核 AMD EPYC 9565 双路服务器(Linux)
- 测试任务:GPT‑2 词表的全文件编码,使用 11.9 GB owt_train.txt
- Gigatoken:24.53 GB/s(约 989× HuggingFace Tokenizers,681× tiktoken)
- tiktoken:36.0 MB/s
- HuggingFace Tokenizers:24.8 MB/s
在 Apple M4 Max(16 核)上同样实现 8.79 GB/s,分别比 HuggingFace 快 1,268×、比 tiktoken 快 140×。在消费级 AMD Ryzen 7 9800X3D 上达 6.27 GB/s,仍保持 106× 与 68× 的优势。
核心技术创新
-
手写 SWAR 预分词器
- 传统实现依赖正则引擎,吞吐约 47 MiB/s。
- Gigatoken 采用基于 SIMD‑Within‑A‑Register 的状态机,单线程最高 1,049 MiB/s。
- 双游标 ILP(指令级并行)将两条独立的字符流交叉执行,突破约 25‑27 周期的串行依赖。
-
预分词缓存机制
- 对已出现的词汇直接查表复用,显著降低重复计算成本。
- 缓存设计兼顾内存占用与并发安全,避免了多数实现中缓存导致的长尾分布问题。
兼容性与生态
- 兼容模式:可包装 HuggingFace 或 tiktoken 的 tokenizer,保持输出完全一致,牺牲约 200‑300 倍的加速。
- 原生模式:直接在 Rust 层读取文件并并行化,提供本文所报告的最高吞吐。
- 支持的词表:覆盖 23 种主流 tokenizer 家族,包括 GPT‑2、Llama 3‑4、Qwen 2‑3.6、DeepSeek V3、GLM 4‑5、Kimi K2、Mistral、Gemma 等。
市场影响与前景
Gigatoken 的出现为大模型训练前置数据处理提供了新的性能基准。随着数据规模持续增长,传统 Python‑centric 分词库已难以满足数百 GB 甚至 TB 级别的吞吐需求。Gigatoken 的开源许可证和易用的 Python 接口降低了项目集成门槛,预计将在开源社区和企业内部数据管道中快速获得采用。未来若结合分布式文件系统或 GPU‑offload,将有望进一步压缩预处理时延,为端到端 LLM 工作流的成本优化贡献更大空间。
“分词不应成为模型训练的瓶颈,Gigatoken 正在用系统级优化重新定义这一环节。” — Marcel Rød 在 Hacker News 的回应
本文是对第三方新闻源的主观解读。消息可能出现过时、不准确、歧义或错误的地方,仅供参考使用。点击此处查看消息源。