GigaToken:语言模型分词速度提升约 1000 倍

GigaToken:语言模型分词速度提升约 1000 倍

Hacker News 摘要

原标题:GigaToken: ~1000x faster Language model tokenization

GigaToken 是一个专门为语言模型设计的高性能分词器,其核心目标是实现 GB/s 级别的分词速度。相较于 HuggingFace 的分词器,它的处理速度提升了约 1000 倍。虽然 HuggingFace 和 tiktoken 已经使用了多线程 Rust 实现,但 GigaToken 通过极致的底层优化进一步压榨了硬件性能。

该工具支持多种 CPU 硬件架构,并兼容目前绝大多数主流的分词算法。在高性能服务器 CPU(如 AMD EPYC 9565)上,它的分词吞吐量可达每秒 24GB 以上,这意味着仅需不到 6.5 小时即可完成对整个 Common Crawl 数据集(约 130 万亿 Token)的分词工作。

核心优势与技术特点:

1. 极致优化:

开发人员针对现代 x86 和 ARM 架构 CPU 进行了深度优化。其主要改进包括使用 SIMD 指令集重写了通常由正则表达式引擎处理的预分词步骤,显著减少了分支预测失败。此外,它还针对预分词映射建立了高效的缓存机制,能迅速处理高频出现的词汇。

2. 降低开销:

GigaToken 尽可能减少了与 Python 的交互,并避免了线程间的通信开销。通过其原生的 Rust 接口直接读取文件,可以实现性能最大化。

3. 安装与使用:

用户可以通过 pip install gigatoken 快速安装。为了方便现有项目迁移,它提供了兼容模式,仅需几行代码即可替换 HuggingFace 或 tiktoken 的分词器。虽然兼容模式为了确保输出结果与原版完全一致会牺牲一部分性能,但其速度依然远超原生工具。

4. 命令行工具:

项目提供了一个 bench 命令行工具。用户无需编写代码即可对比 GigaToken 与 HuggingFace 在特定模型和数据集下的性能表现。

目前已知的局限性与待办事项:

1. SentencePiece 优化程度较低:相比常用的 BPE 分词器,针对 SentencePiece(常用于谷歌模型或 BERT)的优化尚不完善。

2. 尚未支持 WordPiece 算法。

3. Python 迭代目前使用 ABI3 接口,未来计划针对特定 Python 版本进行专项优化,预计可再提升 2 倍速度。

4. 暂未实现文件输出流功能。

5. Windows 平台测试较少,目前建议在 WSL 环境下使用。

该项目采用 MIT 开源协议,主要代码由 Rust 和 Python 编写。如果你在研究中使用了该工具,作者建议引用其提供的关于 SIMD 和缓存层次结构优化字节对编码分词的论文。


原文:https://github.com/marcelroed/gigatoken/

评论:https://news.ycombinator.com/item?id=49010167

Report Page