Hacker News 2天前 · 2026-07-23 08:56:04 · 0 阅读
GigaToken:语言模型分词速度提升约1000倍
Gigatoken
比 HuggingFace 的 tokenizers 快约1000倍,可直接替换使用。
以 GB/s 的速度为文本数据分词!
注意:HF tokenizers 和 tiktoken 本身已运行在 Rust 多线程环境下。
什么是 Gigatoken?
Gigatoken 是当前最快的语言模型分词工具。它支持广泛的 CPU 硬件,以及几乎所有常用的分词器。详细的吞吐量数据(涵盖不同分词器和 CPU)请参见性能测试部分。
安装
pip install gigatoken
使用方式
你可以使用 Gigatoken 自带的 API,也可以启用兼容模式,与 HuggingFace Tokenizers 或 Tiktoken 配合使用。
兼容模式(最简单)
import gigatoken as gt # 只需在现有 HuggingFace tokenizers 用法上做最小改动(兼容模式) hf_tokenizer = ... tokenizer = gt.Tokenizer(hf_tokenizer).as_hf() # tokenizer 可在与 hf_tokenizer 相同的上下文中使用 tokens = tokenizer.encode_batch(["This is a test string", "And here is another"]) # 或与 tiktoken 配合 tiktokenizer = ... tokenizer = gt.Tokenizer(tiktokenizer).as_tiktoken() # 现在如同现有的 tiktoken tokenizer 一样使用 tokens = tokenizer.encode_batch(["This is a test string", "And here is another"])
我们投入了大量精力确保此模式下输出与 HuggingFace Tokenizers 完全一致,但这会带来一定的性能损耗。即便如此,你依然能获得远超之前的性能,只是达不到 Gigatoken API 那 1000 倍的提升。
Gigatoken API(最快)
import gigatoken as gt
tokenizer = gt.Tokenizer("Qwen/Qwen3-8B") # 接受 HuggingFace 模型名
file_source = gt.TextFileSource(["owt_train.txt"], separator=b"<|endoftext|>")
tokens = tokenizer.encode_files(file_source)
使用 Gigatoken API 可以让 Rust 实现直接读取数据,尽可能跳过开销,同时实现最大并行度。注意,如果通过此 API 传递 Python 数据结构,仍会带来 Python 读取开销。
性能测试
在 owt_train.txt(11.9 GB)上的编码吞吐量 — AMD EPYC 9565 72 核处理器 × 2 插槽(共 144 核)
| 分词器 | gigatoken | HF tokenizers | tiktoken | vs HF | vs ti |
|---|
(表格数据未完整给出,请参考原项目文档。)
原始来源: Hacker News