marcelroed/gigatoken
Language model tokenization at GB/s
解决的问题
Gigatoken 旨在消除语言建模过程中准备大规模数据集时的文本分词瓶颈。对于处理 GB 或 TB 级文本时可能慢几个数量级的 HuggingFace tokenizers 和 tiktoken 等标准库,它提供了一个高性能的替代方案。
工作原理
Gigatoken 使用 Rust 编写,通过将标准的基于正则表达式的预分词替换为自定义的 SIMD 优化实现来实现其速度。它最大限度地减少了分支,减少了线程间的通信,并使用高度优化的缓存层级进行预分词映射,以避免常见单词的重复编码。它可以作为 HuggingFace 和 tiktoken 的兼容模式直接替换使用,或者通过其自身的原生 API 从文件中直接读取数据以获得最大性能。
适用对象
主要面向需要在各种 CPU 架构(x86 和 ARM)上对海量文本数据(例如 Common Crawl)进行分词的大规模语言模型训练研究人员和工程师。
亮点
- 极高的吞吐量:在多核 CPU 上能够达到高达 24 GB/s 的速度,声称比 HuggingFace 分词器快高达 1000 倍。
- 广泛的兼容性:支持包括 Llama 3、Qwen、DeepSeek 和 GPT-2 在内的广泛流行分词器。
- 灵活的 API:同时提供高速原生 API 和用于现有 HF 及 tiktoken 工作流的兼容封装。
- 硬件优化:针对现代 CPU 进行了优化,在 AVX512、AVX2 和 NEON 上使用了 SIMD 策略。
相关
- Dispatch
- 项目
- 项目
- Dispatch
- Dispatch