ゼロアロケーションのヘッダオンリーC++ Qwenトークナイザーを構築:OpenAIのTiktokenより約20倍高速

Reddit r/LocalLLaMA / 2026/4/4

💬 オピニオンDeveloper Stack & InfrastructureSignals & Early TrendsIdeas & Deep AnalysisTools & Practical Usage

要点

  • 開発者が「Frokenizer」を作成しました。これはQwenトークナイザーフォーマットに特化したヘッダオンリーのゼロアロケーションC++トークナイザーで、LLM開発者を対象としています。
  • 著者は、12スレッドのRyzen 5 3600で、1GBの英語コーパスのテストにおいて、スループットが約1009 MB/sに達する一方で、OpenAIのTiktokenは約50 MB/sだったと主張しています。
  • このプロジェクトは、生産用途としての必須要件というよりも、BPEトークナイゼーションと最適化手法を理解するための教育・HPC(高性能計算)向けのベンチマーク取り組みとして位置付けられています(トークナイゼーションは推論時間の多くで~2%未満であることが指摘されています)。
  • ベンチマークと実装の詳細は、投稿内でリンクされているGitHubリポジトリ経由で他の人がテスト・検証できるように提供されています。
割り当てゼロ、ヘッダーのみのC++ Qwenトークナイザを作った。OpenAI Tiktokenより約20倍高速

私はHPCや、C++の静的で、割り当てゼロ&依存ゼロのソフトウェアに興味があります。BPEトークナイザがどう動くのかを勉強していて、そのプロジェクトを作ることにしました。LLM開発者向けに、qwenトークナイザをハードコードしました。

LLM推論におけるトークナイズのフェーズは全体の時間の2%未満で、実際にはほぼ無視できることはよく分かっていますが、私はそういう種類のプログラミングが「本当に」好きなんです。学習と直感を作るための教育用プロジェクトです。

驚いたことに、複数の異なる最適化手法を組み合わせた後、ベンチマークでかなり高い数値が出ました。最初は偶然だと思っていろいろなテストを試しましたが、これまでのところ完全に期待に応えています。

12スレッドのRyzen 5 3600デスクトップCPUで、英語テキストコーパス1 GBの場合:
- Mine Frokenizer: 1009 MB/s
- OpenAI Tiktoken: 約 50 MB/s

コード、テスト、ベンチマークについて:
https://github.com/yassa9/frokenizer

投稿者 /u/yassa9
[リンク] [コメント]