概要
TokenDagger は、OpenAIの TikToken と互換性を持つ高速トークナイザー。 C++17 で実装され、Pythonバインディングを提供。 正規表現エンジン最適化 により大幅な性能向上を実現。 コードサンプルでは 4倍高速化、大規模テキスト処理で 2-3倍スループット向上。 BPE や特殊トークンルールも完全サポート。
TokenDagger: OpenAI TikTokenの高速互換実装
- TokenDagger は、OpenAIの TikToken に完全互換のトークナイザー
- 大規模テキスト処理 やLLM用途に最適化
- C++17 で実装、Pythonからも利用可能なバインディング提供
- PCRE2 (Perl Compatible Regular Expressions 2)を利用した 高速正規表現パーシング
- BPE(Byte Pair Encoding) や特殊トークンルールもTikTokenと同一仕様
- 大規模特殊トークン語彙 にも対応した簡略化アルゴリズム
- ベンチマーク 環境:AMD EPYC 4584PX(16コア/32スレッド、4.2GHz)
主な特徴
- 正規表現処理高速化 :JITコンパイル対応PCRE2エンジンでトークンパターンマッチングを最適化
- 完全なドロップイン互換性 :OpenAI TikTokenの既存コードをそのまま置き換え可能
- BPEアルゴリズム簡素化 :特殊トークンの正規表現照合をスキップし、パフォーマンスを最大化
- コードサンプルのトークナイズで4倍の高速化
- 1GBの自然言語テキストで2-3倍のスループット向上
テスト実行方法
- クリーンビルド&テスト
make clean && makepip3 install tiktokenpython3 tests/test_tokendagger_vs_tiktoken.py --tokenizer llamapython3 tests/test_tokendagger_vs_tiktoken.py --tokenizer mistralpython3 tests/performance_benchmark.py --tokenizer llamapython3 tests/performance_benchmark.py --tokenizer mistralpython3 tests/code_performance_benchmark.py --tokenizer llama
- ベンチマーク結果 :コードトークナイズで 4.02倍高速化 を記録
インストール手順
- PyPIからの推奨インストール
pip install tokendagger
- 開発用インストール
git clone git@github.com:M4THYOU/TokenDagger.gitsudo apt install libpcre2-devgit submodule update --init --recursivesudo apt update && sudo apt install -y python3-dev- (テスト実行には)
pip3 install tiktoken
依存ライブラリ
- PCRE2 :Perl Compatible Regular Expressions 2
- Python3-dev :Python開発用ヘッダ
- tiktoken :互換性テスト用
TokenDagger開発背景と技術的ポイント
- TikToken (Llama 3、Mistral、GPT-3.*等で使用)の高速互換実装
- C++17 でゼロから実装し、Pythonバインディングで呼び出し
- BPE語彙・特殊トークンルール もTikTokenと完全互換
- LLM内部構造の学習 を目的に再実装
- TikToken のPython/Rust実装のプロファイリング結果から、正規表現処理がボトルネックであることを発見
- パフォーマンス向上の主因 :
- a) JITコンパイル正規表現エンジン の利用による高速化
- b) 特殊トークンの正規表現照合省略 によるアルゴリズム簡素化
- ベンチマークコード も同梱、再現性確保
- 主な成果 :
- コードサンプルのトークナイズで 4倍高速化 (シングルスレッド)
- 1GB自然言語テキストで 2-3倍スループット向上
利用シーン・推奨ユーザー
- 大規模言語モデル入力前処理 の高速化
- コードや自然言語の大規模バッチトークナイズ 用途
- OpenAI TikToken を既存で利用している開発者・研究者
- LLM内部実装の学習・検証 を行いたい技術者
まとめ
- TokenDagger は、 TikToken の完全互換かつ大幅な高速化を実現
- 大規模テキスト処理やLLM前処理 でのパフォーマンス改善に最適
- インストールや導入も容易、既存コードの置き換えもシンプル
- ベンチマーク・テストコード も充実、性能検証も容易