GigaToken:一款开源的 LLM 专用超高速分词器(约 1000 倍速度提升)

开发与编程 Jul 23, 2026加入收藏

GigaToken:一款开源的 LLM 专用超高速分词器(约 1000 倍速度提升)
插图 : Momiji Shirogane

Marcel Roed 发布了 *GigaToken*,一种针对语言模型的分词器,据称在基准实现上实现了约三个数量级的提升。回顾其优化之处。

具体案例

您在预训练语言模型,或需要为微调编码数太字节的文本数据集。作为将原始文本转换为数字标识符的分词器——这一看不见的瓶颈——在参考实现中,其耗时可能与模型本身的前向传播相当,甚至在大规模语料库上更高。

GitHub 上由 Marcel Roed 发布的 GigaToken 声称在常用 BPE(字节对编码)分词器上实现了约 1000×的参考实现速度。这一数字值得重视:即使仅以一个数量级计算,也足以改变单台机器的极限。

底层原理:1000× 的秘密

BPE 分词器主要执行三个步骤:

  1. 预分词——粗粒度文本切分(如按空格、标点或 Unicode 类别划分)。
  2. 字节对合并——根据预学习词汇表,迭代应用合并规则(如 t + hth,再 th + ethe)。
  3. 编码——生成 ID 序列。

巨大的性能提升来自多个叠加的优化手段:

  • 合并算法:朴素实现(如纯 Python 的 Hugging Face tokenizers 或早期 tiktoken)会在每一步遍历规则列表。而经过优化的实现(如 Rust 版 tiktoken)则使用预计算的合并树和优先队列,仅处理活跃的字节对。GigaToken 进一步深化了这一逻辑。
  • 向量化:通过 SIMD 同时处理多个字节,用于预分词(边界检测、字符类别成员测试)。
  • 并行化:在所有核心上并行处理文本块,并妥善管理块间边界。
  • 缓存友好的结构:将词汇表以紧凑格式存储,使其能放入 L1/L2 缓存,避免朴素实现中占主导的缓存未命中开销。

为何这很重要

分词器并不“高大上”。它们在论文中默默无闻,大多数人理所当然地认为其运行成本为“免费”。但当涉及准备数万亿级别 token的训练语料库(如 Llama 3、DeepSeek V3 等)时,即使分词器仅提升 10×,也意味着节省数周的计算资源。

性能提升在以下场景中至关重要:

  • LLM 预训练(数据准备)。
  • 大规模 RAG 语料库摄取(数百万文档的索引分词)。
  • 低延迟流式 token 生成——快速分词器能降低聊天机器人客户端感知的延迟。
  • 资源受限环境——边缘推理、浏览器(通过 WebAssembly)、嵌入式设备。

使用注意事项

更快的分词器并不等于正确的分词器。在采用前需验证以下要点:

  • 与目标模型词汇表的字节级精确兼容性:ID 不同即为错误 token,会导致模型幻觉。需在大规模语料库上验证。
  • Unicode 处理:边界情况(字素簇、同形异义字、NFC/NFD 归一化)是一大雷区。
  • API 稳定性:实验性项目可能消失或突然改变接口。
  • 安全性:用系统语言编写的快速解析器必须经过审计(防范病态输入的溢出风险)。

我们的观察

LLM 开源生态正在成熟其“管道”层——在推理服务器(vLLM、TGI、llama.cpp)和训练框架(Megatron、DeepSpeed)之后,现在轮到数据处理组件被重写以提升性能。GigaToken 正是这一趋势的一部分,与 tiktoken-rsarrow-rs 以及 Python 版本向 Rust 或 C++ 的系统性重写并驾齐驱。

关键要点

  • GigaToken 声称 BPE 朴素实现提升约 1000×——即使仅一个数量级,也意义重大。
  • 典型优化:SIMD、并行化、缓存友好结构、优化的合并算法。
  • 在生产环境使用前,必须用目标模型的词汇表验证字节级精确性。
Resources

本文由人工智能撰写,并经人工编辑审核。

我们的编辑部
这篇文章对您有帮助吗?

21 人赞了这篇文章

K
Kaito KuroganeSenior Dev Writer
Senior polyvalent developer, backend Go + frontend TS, open source contributor.
分享:
LIVERadio Geek Kitsune
Tap to listen, the same sound for everyone
0··
// Schedule
// all stations
// share a track →
主题
浏览
信息