quicktok: 一个更快的分词器(与tiktoken精确且字节一致)[P]
摘要
quicktok 是一个快速且精确的 BPE 分词器,用 C++ 编写,与 tiktoken 字节一致,比现有替代方案快 2–11 倍。支持 cl100k、o200k、GPT-OSS、Llama-3 和 Qwen2.5/3 编码器。
我已经研究这个有一段时间了!对于任何想要加速分词工作流程的人应该很有用。**quicktok** 是一个用 C++ 编写的快速/精确的 BPE 分词器。生成的 token ID 与 `tiktoken` 字节一致,编码速度比 `bpe-openai`(我所知道的最快的替代方案)快 **2–3.6 倍**,比 `tiktoken` 本身快 **4–11 倍**。它内置了 cl100k、o200k、GPT-OSS、Llama-3 和 Qwen2.5/3 编码器。**方法**。与 `bpe-openai` 相同的算法(精确回溯 BPE),但我应用了大量数据结构工程来减少内存访问:* 使用 2 字节字典树进行最长匹配遍历 * 使用密集的精确键缓存进行合并有效性检查 * 使用手工编译的预分词器替代通用正则表达式引擎 **基准测试**(Apple M1,单线程,MB/s,cl100k\_base,且每个输出在计时前都已逐 token 验证): |encoder|The Pile|Code|Common Crawl| |:-|:-|:-|:-| |**quicktok (native)**|**121.7**|**139.2**|**71.3**| |**quicktok (Python)**|**77.9**|**83.6**|**49.7**| |bpe-openai|36.6|38.7|28.9| |rs-bpe|30.9|34.7|23.5| |tiktoken-rs|15.4|13.8|13.3| |tiktoken (Python)|13.6|12.8|12.3| |TokenDagger|11.1|11.9|10.7| o200k\_base 的比例类似。每个编码器通过其自己的原始 API 调用,且基准测试可以通过仓库中的 `make bench-compare` 复现。 `pip install quicktok-v1` 仓库:[https://github.com/dmatth1/quicktok](https://github.com/dmatth1/quicktok)
相似文章
ztok —— 一个用 Zig 编写的高性能多线程分词器,支持加载 tiktoken / HF / SentencePiece,速度提升 2–5 倍
ztok 是一个用 Zig 编写的高性能多线程分词器库,支持多种格式(tiktoken、HF、SentencePiece 等),速度比现有方案快 2–5 倍,适用于 RAG 分块和数据集分词。
增量BPE分词
本文介绍了一种增量式字节对编码(BPE)分词算法,该算法处理每个字节的时间复杂度为 O(log^2 t),支持流式场景下的高效部分分词,并相比现有实现实现了加速。
@no_stp_on_snek: @antirez Turbo3 击败 fp8,在32K上下文下解码 tok/s 提升5%,还在调试中,但我一直在你的‘厨房’里折腾 TQ+
Turbo3 在32K上下文下,相比 fp8 解码速度提升了5%(每秒 tokens 数),这是量化或模型优化方面的性能改进。
在 12GB 显存下,使用 Qwen3.6 35B A3B 与 llama.cpp MTP 实现 80 tok/sec 的速度和 128K 上下文
一名用户分享了一份配置方案,该方案在使用 llama.cpp 和多令牌预测(MTP)的情况下,能在 12GB 显存的 GPU 上让 Qwen3.6 35B A3B 模型实现超过每秒 80 个令牌的生成速度。帖子中包含了基准测试结果以及用于优化性能的具体命令行参数。
Qwen3.6 27B Pure Quant: 16 GB 显存下 40 tok/s
使用纯 Q4_K_M 方法对 Qwen3.6 27B 进行量化的版本完全适配 16 GB 显存,在 MTP 下可实现高达 40 tok/s 的 token 生成速度,相比其他 GGUF 变体显著缩小模型体积。