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)
相似文章
quicktok: 一个更快的分词器(与tiktoken精确且字节一致)[P]
quicktok 是一个快速且精确的 BPE 分词器,用 C++ 编写,与 tiktoken 字节一致,比现有替代方案快 2–11 倍。支持 cl100k、o200k、GPT-OSS、Llama-3 和 Qwen2.5/3 编码器。
Gigatoken: 一个新的开源分词器,比Tiktoken快约100倍,比Huggingface快500-1000倍
Gigatoken 是一个开源分词器,通过SIMD和缓存优化,相对于HuggingFace分词器实现了高达1000倍的加速,相对于Tiktoken实现了100倍加速。它支持作为现有分词器API的直接替代。
Gigatoken (GitHub Repo)
Gigatoken 是一个即插即用的替代 tokenizer,声称相比 HuggingFace 的 tokenizer 速度提升高达 1000 倍,支持许多常见的 tokenizer 和 CPU。
ZipTok3D:使用紧凑标记前缀的高保真3D标记化
ZipTok3D是一种3D标记器,通过将几何形状组织成紧凑的全局标记前缀并使用迭代解码,从极短的标记序列中实现高保真重建,在标记长度显著减少的情况下优于基线方法。
GigaToken:语言模型分词速度提升约1000倍
GigaToken 是一个超快速的分词器库,声称比 HuggingFace 分词器快达 1000 倍,支持大多数常见的大语言模型分词器,并提供即插即用的兼容性。