𝘁𝗼𝗸𝗲𝗻𝗶𝘇𝗮𝘁𝗶𝗼𝗻 𝘂𝗻𝗱𝗲𝗿 𝘁𝗵𝗲 𝗵𝗼𝗼𝗱
チャットボットをデプロイしたとしましょう。英語のクエリは42トークン。スペイン語のユーザーが1つのクエリを送信すると103トークン。突然、APIコストが40%跳ね上がります。
これは、トークナイゼーションを「目に見えない配管」のように、意識せずに扱ってしまうことで起こります。すべての大型言語モデル(LLM)は、4つのサブワード・アルゴリズムのいずれかを使用しています。その選択によって、語彙数、言語効率、そして月々の請求額が決まります。
トークナイゼーションは、以下の3つの重要な要素を制御します。
- 推論コスト。LLMのAPIはトークン単位で課金されます。語彙が少ないと、1つの単語が8つのトークンに分割されるかもしれません。語彙が多いと、それを3つのトークンで処理できます。大規模な運用では、この差が実際のコストに直結します。
- 語彙のカバー範囲。語彙が不十分だと、シーケンスが長くなります。これは生成速度の低下とコストの増大を招きます。
- モデルの挙動。トークナイザーが "cowboy" を
["cow", "boy"]と分割する場合と、["c", "owb", "oy"]と分割する場合では、モデルの学習の仕方が異なります。
4つの主要なタイプの仕組みは以下の通りです。
BPE (Byte Pair Encoding)
- 仕組み: 文字から開始します。頻出する隣接ペアをカウントし、それらを新しいトークンとして結合します。これを目標のサイズに達するまで繰り返します。
- メリット: 高速で決定的(deterministic)。
- 使用例: GPT-4o, Llama 3, Mistral.
WordPiece
- 仕組み: BPEに似ていますが、単純な頻度ではなく尤度(likelihood)を使用します。学習データの確率を最大化するような結合を選択します。
- メリット: 言語学的に意味のあるトークンを生成しやすい。
- 使用例: BERT, Googleモデル.
SentencePiece
- 仕組み: 入力を生のUnicodeバイトとして扱います。スペースでの分割のような、事前のトークナイゼーション(pre-tokenization)ステップを必要としません。
- メリット: 言語に依存しない(language-agnostic)ため、多言語サポートに最適です。
- 使用例: Llama 2, Llama 3, Gemma.
Unigram
- 仕組み: 巨大な語彙から開始し、確率モデルを使用して削ぎ落としていきます。最適なセグメンテーション・パスを選択します。
- メリット: トークンと意味の対応関係がより一貫している。
- 使用例: T5, XLNet.
開発者への重要なポイント:
- 言語の構成に注意する。スペースに依存するBPEモデルは、日本語やヒンディー語のような言語では苦戦します。グローバルな製品にはSentencePieceを使用しましょう。
- バージョンを固定する。
cl100k_baseからo200k_baseへ移行すると、トークン数が変わります。評価時には常にどのエンコーディングを使用しているかを追跡してください。 - 正しくベンチマークを行う。異なるモデルファミリー間でトークン数を比較してはいけません。正確性を保つため、常に文字数またはバイト数を使用してベンチマークを行ってください。
これらのツールを理解しておくことで、財務チームを驚かせるような事態を避け、コスト効率の高い製品をリリースできるようになります。
学習コミュニティ(任意参加): https://t.me/GyaanSetuAi