ztok —— 一个用 Zig 编写的高性能多线程分词器,支持加载 tiktoken / HF / SentencePiece,速度提升 2–5 倍

Reddit r/LocalLLaMA 工具

摘要

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)
查看原文

相似文章

Zig 构建速度正在提升

Mitchell Hashimoto

Zig 0.15 相比 0.14 在编译时性能有显著提升,构建脚本编译时间从约 7 秒降至约 1.7 秒,完整构建时间从 41 秒降至 32 秒,且仍使用 LLVM。本文重点介绍了自托管后端和增量编译方面的进展。