ztok —— 一个用 Zig 编写的高性能多线程分词器,支持加载 tiktoken / HF / SentencePiece,速度提升 2–5 倍
摘要
ztok 是一个用 Zig 编写的高性能多线程分词器库,支持多种格式(tiktoken、HF、SentencePiece 等),速度比现有方案快 2–5 倍,适用于 RAG 分块和数据集分词。
我构建了 ztok,一个专注于高速和格式无关的本地管道的分词器库。
- 加载你已有的格式——.tiktoken、HF tokenizer.json、SentencePiece .model、TokenMonster、Mistral Tekken。自动检测。
- 在等价性检验上与 tiktoken / HF / SentencePiece 完全一致,因此可以作为即插即用的替代。
- 在相同词表和字节数下更快(cl100k 对比 tiktoken,EPYC 24c/48t):单线程约 2 倍,批量处理 3.8–5.5 倍(约 291–425 MB/s 对比约 78 MB/s)。在各自的词表上也比 HF tokenizers 和 SentencePiece 更快。
- 通过一个 C ABI 提供 8 种语言绑定——Python、Node、Ruby、Go、Rust、.NET、Java、Swift。
- 为枯燥但有价值的任务而构建:基于 token 上限窗口 + 字节精确偏移的 RAG 分块,以及直接将数据集分词为 .bin/.npy 用于训练。
- 使用 Zig 0.16,AGPL-3.0 许可,约 1100 个测试。欢迎反馈,尤其是关于我遗漏的词表格式。
[https://github.com/sirus20x6/ztok](https://github.com/sirus20x6/ztok)
相似文章
@linexjlin: K2.6 花了 12 个小时, 在 Mac 上用 zig 语言 从 0 写了一个 LLM 推理引擎并,并将 qwen 3.5 0.8B 推理速度由 15 tok/s 优化到了 193.1 tok/s
Developer built a Zig-based LLM inference engine from scratch on Mac in 12h, boosting Qwen 3.5 0.8B speed from 15 to 193 tok/s.
@no_stp_on_snek: @antirez Turbo3 击败 fp8,在32K上下文下解码 tok/s 提升5%,还在调试中,但我一直在你的‘厨房’里折腾 TQ+
Turbo3 在32K上下文下,相比 fp8 解码速度提升了5%(每秒 tokens 数),这是量化或模型优化方面的性能改进。
@nicekate8888: 最近二十天我都在折腾一件事——怎么让 Qwen3.6-27B 在我的 Mac 上跑得又快又好。 一开始我用 Unsloth Q5,18 tok/s,风扇呼啦呼啦响。 后来换成 MLX 6bit + DFlash,提到 22 tok/s,还…
用户分享在Mac上通过不同量化方法(Unsloth Q5、MLX 6bit + DFlash、MTPLX 4bit)优化Qwen3.6-27B推理速度的经验,最终达到43 tok/s。
Zig 构建速度正在提升
Zig 0.15 相比 0.14 在编译时性能有显著提升,构建脚本编译时间从约 7 秒降至约 1.7 秒,完整构建时间从 41 秒降至 32 秒,且仍使用 LLVM。本文重点介绍了自托管后端和增量编译方面的进展。
@sanbuphy: K2.6 成功在 Mac 本地下载并部署了 Qwen3.5-0.8B 模型,通过使用小众 Zig 语言实现并优化模型推理,证明了新模型的泛化能力。经过 4,000 多次工具调用,超过 12 小时的不间断运行,K2.6 模型共迭代了 14 …
K2.6在Mac本地成功部署Qwen3.5-0.8B模型,使用Zig语言实现推理优化,经过14轮迭代将吞吐量从约15 tokens/s提升至约193 tokens/s,比LM Studio快20%。