marcelroed/gigatoken

Language model tokenization at GB/s

解決する課題

Gigatokenは、言語モデリングのための大規模データセット準備時におけるテキストトークナイゼーションのボトルネックを解消するために設計されています。HuggingFaceのtokenizersやtiktokenのような標準ライブラリは、ギガバイトまたはテラバイト単位のテキストを処理する際に数桁遅くなることがありますが、Gigatokenはこれらに代わる高性能な選択肢を提供します。

仕組み

Rustで書かれたGigatokenは、標準的な正規表現ベースのプリトークナイゼーションを、カスタムの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ワークフロー用の互換ラッパーの両方を提供します。
  • ハードウェア最適化: AVX512、AVX2、NEONにわたるSIMD戦略を使用して、最新のCPU向けに最適化されています。

関連

  • Dispatch
  • プロジェクト
  • プロジェクト
  • Dispatch
  • Dispatch