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