テクニカルガイド
トークン化とバイトペアエンコーディング
トークン化は、言語モデルが実際に読み取る小さな単位にテキストを分割し、その語彙を構築するための一般的な方法はバイト ペア エンコーディング (BPE) です。
このガイドを聴くAIによるナレーション · ~2 min
概要
It balances having a manageable vocabulary against handling any word the model might encounter.
ディープダイブ
言語モデルでは、生の文字や単語全体は認識されません。トークン、つまりテキストの一部にマッピングされた整数 ID が認識されます。これらの部分を選択することはトレードオフです。単語レベルの語彙は膨大で、目に見えない単語やスペルミスのある単語で窒息してしまいますが、文字レベルの語彙はシーケンスを非常に長くします。バイト ペア エンコーディングは中間点に当たります。 1990 年代のデータ圧縮アルゴリズムを借用した BPE は、個々の文字 (または生のバイト) から開始し、最も頻繁に出現する隣接するペアを新しいトークンに繰り返しマージし、一般的なサブワードに向けて語彙を増やします。頻繁に使用される単語は単一のトークンになりますが、まれな単語は再利用可能なフラグメントに分割されます。 GPT モデルで使用されるバイトレベルの BPE は生のバイトで動作するため、語彙不足のエラーを発生させることなく、絵文字や言語を含むあらゆる Unicode テキストを表現できます。
現実世界の実装
GPT および Llama モデルは、BPE スタイルのトークナイザーを使用して、プロンプトをネットワークが処理するトークン ID に変換します。
API の価格とコンテキスト ウィンドウの制限はトークンで測定されるため、トークン化はコストと適合するテキストの量に直接影響します。
絵文字、コード、珍しい単語を、再利用可能なサブワードまたはバイト フラグメントに分割することで適切に処理します。
バイトレベルのエンコードにより、言語ごとに個別の辞書を必要とせずに、1 つのモデルで多くの言語をサポートします。
トークン化とバイトペアエンコーディングの未来
トークン化は積極的に再検討されています。 ByT5 のようなバイトレベルおよび文字レベルのモデル、および新たなトークンフリーまたは「バイト潜在」アーキテクチャは、モデルがあらゆる入力とあらゆる言語を均一に処理できるように、固定語彙を完全に削除することを目的としています。研究者らは、トークン化の公平性にも取り組んでいます。現在、多くの非英語言語や低リソース言語では、文あたりのトークンのコストがはるかに高く、価格が上昇し、有効なコンテキストが縮小しています。コード、数学、多言語のバランスに合わせて調整されたトークナイザーに加えて、境界を生のバイトに戻すための継続的な実験が期待されます。
実践する
なぜそれが重要なのか
- 費用と予算. アーキテクチャの決定により、パフォーマンスと運用コストが何年にもわたって推進されます。
- より明確な判決. 技術教育は、チームが最新のスタックだけでなく、適切なスタックを選択するのに役立ちます。
- 品質管理. より良いエンジニアリングの選択により、本番環境での信頼性に関するインシデントが減少します。
気をつけてください
- 1 つのベンチマークを最適化すると、より広範なシステムの弱点が隠れる可能性があります。
- インフラストラクチャとメンテナンスのコストは過小評価されがちです。
- システムが複雑になるにつれて、セキュリティと可観測性のギャップが拡大する可能性があります。
次のステップ
- 実装前にレイテンシ、品質、コストの目標を定義します。
- 現実的な負荷とデータ条件でのベンチマーク。
- エラー、ドリフト、ユーザーへの影響を計測器で監視します。
- スケーリングの前に、ロールバックとインシデント対応のパスを準備します。
探検を続けましょう
よくある質問
What is Tokenization and Byte Pair Encoding?
トークン化は、言語モデルが実際に読み取る小さな単位にテキストを分割し、その語彙を構築するための一般的な方法はバイト ペア エンコーディング (BPE) です。これにより、管理しやすい語彙を持つことと、モデルが遭遇する可能性のあるあらゆる単語の処理とのバランスがとれます。
トークン化は言語モデルを読み取るために何を生成しますか?
モデルは、生のテキスト文字列ではなく、トークン (文字、サブワード、または単語を表す整数 ID) を操作します。
バイト ペア エンコーディングはどのように語彙を構築するのでしょうか?
BPE は文字またはバイトから開始し、最も頻度の高い隣接するペアを貪欲にマージし、徐々に共通のサブワード トークンを形成します。
BPE のようなサブワード手法は、単語レベルのトークン化と比較してどのような問題を解決しますか?
単語レベルの語彙は、目に見えない単語では機能しません。サブワードのトークン化は、まれな単語を既知の部分に分割し、語彙を管理しやすくしながら語彙不足の問題を回避します。
GPT モデルで使用されるバイトレベル BPE の利点は何ですか?
生のバイトを操作するということは、考えられるすべての入力をエンコードできることを意味するため、言語や記号に関係なく、真に未知の文字は存在しません。
モデルのトークン数が文内の単語数と異なることが多いのはなぜですか?
サブワードのトークン化は 1 つの単語を複数のフラグメントに分割することがあり、スペースと大文字小文字の影響を受けやすいため、トークン数が単語数と等しくなることはほとんどありません。