AI・機械学習
上級

tiktoken(ティックトークン)

tiktokenとは、OpenAIが開発したBPE(Byte Pair Encoding)トークナイザの高速実装ライブラリである。Rustコアエンジン+Pythonバインディングの構成で、GPT-4/GPT-4o/o3等のOpenAIモデルで使用されるトークナイザを公開実装として提供する。

0 回閲覧
0 いいね

tiktokenは2022年12月にOpenAIがオープンソースとして公開したBPEトークナイザライブラリである。GPT-3.5/GPT-4/GPT-4o/o3シリーズで使用されるトークナイザのエンコード・デコード機能を提供し、API利用前のトークン数見積もりやプロンプト長管理に広く活用されている。

概要

tiktokenの最大の特徴は「高速性」と「正確性」である。Rustで実装されたコアエンジンがPythonバインディングを通じて利用可能で、HuggingFace tokenizersと比較して2-5倍、Python実装のSentencePieceと比較して10-50倍高速なエンコードを実現する。

2026年現在のtiktokenエンコーディング:

エンコーディングモデル語彙サイズ
cl100k_baseGPT-4, GPT-3.5-turbo100,277
o200k_baseGPT-4o, o3, o3-mini200,019

o200k_baseはcl100k_baseの後継で、語彙サイズを2倍に拡張。非英語テキストの圧縮率が大幅に改善されている。

tiktokenの内部アーキテクチャ

tiktokenの処理フローは以下の3段階である:

1. 正規表現プレトークン化

入力テキストを正規表現パターンで初期チャンクに分割する。cl100k_baseのパターン:

(?i:'s|'t|'re|'ve|'m|'ll|'d)
|[^\r\n\p{L}\p{N}]?\p{L}+
|\p{N}{1,3}
| ?[^\s\p{L}\p{N}]+[\r\n]*
|\s*[\r\n]
|\s+(?!\S)
|\s+

この正規表現により、英語の短縮形('t, 're等)、単語、数字(3桁以内)、句読点、空白がチャンクとして分離される。

2. バイトレベルBPEエンコード

各チャンクに対してBPEマージルールを適用。Rustの最適化されたデータ構造(HashMap + 優先度キュー)で高速にマージを実行。

3. 特殊トークン処理

<|im_start|>, <|im_end|>, <|endoftext|> 等の特殊トークンをBPEの前に検出し、専用IDに変換。

tiktokenの性能ベンチマーク

ライブラリエンコード速度メモリ使用量言語
tiktoken2.5M tokens/s40MBRust+Python
HF tokenizers1.0M tokens/s60MBRust+Python
SentencePiece0.5M tokens/s80MBC++
transformers (slow)50K tokens/s120MBPython

tiktoken は特にバッチエンコード(大量テキストの一括処理)で性能が際立つ。Rustのマルチスレッド処理により、CPUコア数に比例してスループットがスケールする。

主な用途

API トークン数見積もり

OpenAI APIの料金はトークン数ベースで課金されるため、リクエスト前にtiktokenでトークン数を計算してコストを見積もる。

プロンプト長管理

コンテキストウィンドウ(GPT-4o: 128Kトークン)内にプロンプトが収まるかを事前に確認。長すぎる場合はトランケーションやRAGチャンキングの基準に使用。

RAGチャンキング

ドキュメントをRAG(検索拡張生成)用にチャンク分割する際、トークン数ベースでチャンクサイズを制御。

トークン最適化

プロンプトのトークン効率を分析し、同じ意味をより少ないトークンで表現する最適化に利用。

cl100k_base vs o200k_base

項目cl100k_baseo200k_base
語彙サイズ100,277200,019
英語圧縮率基準+5-10%改善
日本語圧縮率基準+30-40%改善
コード圧縮率基準+15-20%改善
対応モデルGPT-4, GPT-3.5GPT-4o, o3

o200k_baseの語彙拡張により、日本語テキストでのトークン効率が大幅に改善。GPT-4oのAPI料金が実質的にGPT-4より低い理由の1つである。

よくある質問(FAQ)

Q1: tiktokenはOpenAI以外のモデルで使えますか? A: はい、Qwen3シリーズがtiktoken互換のBPEトークナイザを採用しています。また、カスタムBPE語彙を構築してtiktokenで利用することも技術的に可能です。ただし、tiktokenのエンコーディング定義はOpenAIモデルに最適化されているため、他モデルのトークナイザとしてそのまま使うことは推奨されません。

Q2: tiktokenとHuggingFace tokenizersの使い分けは? A: OpenAI APIのトークン数計算にはtiktoken一択です。HuggingFace tokenizersはLlama、Gemma、Mistral等のHuggingFaceモデルのトークナイザとして最適化されています。両者はRust実装で高速ですが、対応するモデルエコシステムが異なります。

Q3: tiktokenはオフラインで使えますか? A: デフォルトではエンコーディングファイルをネットワーク経由でダウンロードしますが、事前にファイルをローカルにキャッシュすればオフライン利用可能です。環境変数 TIKTOKEN_CACHE_DIR でキャッシュディレクトリを指定できます。エアギャップ環境やCI/CDパイプラインでは事前キャッシュが推奨されます。

まとめ

  • tiktokenはOpenAI公式の高速BPEトークナイザ(Rust実装)
  • GPT-4/GPT-4o/o3のトークナイザを公開実装として提供
  • エンコード速度2.5M tokens/s、HF tokenizersの2.5倍
  • o200k_base(200K語彙)で日本語圧縮率が30-40%改善
  • API料金見積もり・プロンプト長管理・RAGチャンキングの必須ツール