トークンについて

トークンは、大規模言語モデル (LLM) でテキストを分解するために使用される単語、文字セット、または単語と句読点の組み合わせです。 トークン化は、トレーニングの最初のステップです。 LLM では、トークンが一緒に使用される頻度や、同様の文脈で使用されるかどうかなど、トークン間の意味関係を分析します。 トレーニング後、LLM では、それらのパターンや関係を使用して、入力シーケンスに基づいた出力トークンのシーケンスを生成します。

テキストからトークンへの変換

LLM のトレーニングに使用される一意のトークンのセットは "語彙" と呼ばれます。

たとえば、次の文について考えてみましょう。

I heard a dog bark loudly at a cat (私は、犬が猫に向かって大きく吠えるのを聞いた)

このテキストは、次のようにトークン化されます。

  • I
  • 聞いた
  • a
  • 吠える
  • 大声で
  • at
  • a
  • cat

十分な大きさのトレーニング テキストのセットがあれば、トークン化により、何千ものトークンの語彙をコンパイルできます。

一般的なトークン化方法

特定のトークン化方法は、LLM によって異なります。 一般的なトークン化方法としては、次のものがあります。

  • 単語トークン化 (区切り記号に基づいてテキストを個々の単語に分割します)
  • 文字トークン化 (テキストを個々の文字に分割します)
  • サブワード トークン化 (テキストを部分的な単語または文字セットに分割します)

たとえば、OpenAI によって開発された GPT モデルでは、Byte-Pair Encoding (BPE) と呼ばれるサブワード トークン化を使用します。 OpenAI は、テキストのトークン化方法を視覚化するツールを提供しています。

各トークン化方法には利点と欠点があります。

トークンのサイズ 長所 短所
小さいトークン (文字またはサブワード トークン化) - モデルは、不明な単語、入力ミス、複雑な構文など、幅広い範囲の入力を処理できます。
- 語彙サイズを縮小して、必要なメモリ リソースを削減できる場合があります。
- 指定されたテキストを分割するトークン数が多いため、処理中に必要な計算リソースが多くなります
- 一定のトークン制限があるため、モデルの入力および出力の最大サイズが小さくなります
大きいトークン (単語トークン化) - 指定されたテキストを分割するトークン数が少ないため、処理中に必要な計算リソースが少なくなります。
- 同じトークン制限であれば、モデルの入力および出力の最大サイズが大きくなります。
- 語彙サイズが大きくなり、必要なメモリ リソースが増える可能性があります。
- 不明な単語、入力ミス、または複雑な構文を処理するモデルの能力が制限される可能性があります。

LLM でのトークンの使用方法

LLM はトークン化を完了すると、各一意のトークンに ID を割り当てます。

次の文の例について考えてみましょう。

I heard a dog bark loudly at a cat (私は、犬が猫に向かって大きく吠えるのを聞いた)

モデルは単語トークン化方法を使用した後、トークン ID を次のように割り当てることができます。

  • I (1)
  • heard (2)
  • a (3)
  • dog (4)
  • bark (5)
  • loudly (6)
  • 向かって (7)
  • a ("a" トークンには、既に ID 3 が割り当てられています)
  • cat (8)

ID を割り当てると、テキストをトークン ID のシーケンスとして表すことができます。 この文の例は、[1, 2, 3, 4, 5, 6, 7, 3, 8] として表されます。 "I heard a cat" という文は、[1, 2, 3, 8] として表されます。

トレーニングを続けると、モデルはトレーニング テキスト内の新しいトークンを語彙に追加し、それに ID を割り当てます。 次に例を示します。

  • meow (9)
  • run (10)

トークン間の意味関係は、これらのトークン ID のシーケンスを使用して分析できます。 これらの関係を表すために、複数の値の数値ベクトル ("埋め込み" と呼ばれます) が使用されます。 埋め込みは、トークンが他のトークンと一緒に、または他のトークンと同様の文脈で使用される頻度に基づいて、各トークンに割り当てられます。

トレーニング後、モデルは、複数のトークンを含むテキストの埋め込みを計算できます。 モデルはテキストをトークン化し、学習した個々のトークンの埋め込みに基づいて全体の埋め込み値を計算します。 この手法は、セマンティック ドキュメント検索や AI へのベクトル ストアの追加に使用できます。

出力の生成中、モデルは、シーケンス内の次のトークンのベクトル値を予測します。 その後、モデルは、このベクトル値に基づいて、語彙から次のトークンを選択します。 実際には、モデルは、前のトークンの埋め込みのさまざまな要素を使用して複数のベクトルを計算します。 その後、これらのベクトルから得られたすべての潜在的なトークンを評価し、最も可能性の高いトークンを選択して、シーケンスを続行します。

出力の生成は反復操作です。 モデルは、それまでに予測されたトークンをシーケンスに追加し、それを次の反復の入力として使用し、一度に 1 つずつトークンの最終出力を構築します。

トークン制限

LLM には、入力として使用できる、または出力として生成できるトークンの最大数に関する制限があります。 この制限により、多くの場合、入力トークンと出力トークンが合計されて最大コンテキスト ウィンドウになります。

たとえば、GPT-4 では、最大 8,192 トークンのコンテキストがサポートされています。 入力トークンと出力トークンの合計サイズは、8.192 を超えることはできません。

まとめると、モデルのトークン制限とトークン化方法によって、入力として提供できる、または出力として生成できるテキストの最大長が決まります。

たとえば、最大コンテキスト ウィンドウが 100 トークンのモデルについて考えてみましょう。 モデルは、次の文の例を入力テキストとして処理します。

I heard a dog bark loudly at a cat (私は、犬が猫に向かって大きく吠えるのを聞いた)

単語ベースのトークン化方法を使用すると、入力は 9 トークンになります。 これにより、出力に使用できる残りの単語トークン数は 91 個になります。

文字ベースのトークン方法を使用すると、入力は 34 トークンになります (スペースを含みます)。 これにより、出力に使用できる残りの文字トークン数は 66 個のみになります。

トークンベースの価格とレート制限

生成 AI サービスでは、多くの場合、トークンベースの価格が使用されます。 各要求のコストは、入力と出力のトークン数によって異なります。 入力と出力で価格が異なる場合があります。 たとえば、「Azure OpenAI Service の価格」を参照してください。

生成 AI サービスは、1 分あたりのトークン数 (TPM) の最大値に関しても制限される場合があります。 これらのレート制限は、サービス リージョンと LLM によって異なる場合があります。 特定のリージョンの詳細については、「Azure OpenAI Service のクォータと制限」を参照してください。