次の方法で共有


トークンについて

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

テキストをトークンに変換する

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

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

I heard a dog bark loudly at a cat

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

  • I
  • heard
  • a
  • dog
  • bark
  • loudly
  • 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)
  • at (7)
  • a ("a" トークンには既に 3 の ID が割り当てられます)
  • 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 には、入力と出力用のトークンの最大数があります。 この制限は、多くの場合、入力トークンと出力トークンの両方を一緒にカバーする、結合された最大 コンテキスト ウィンドウ として表されます。 まとめると、モデルのトークン制限とトークン化方法によって、入力として提供できる、または出力として生成できるテキストの最大長が決まります。

たとえば、最大コンテキスト ウィンドウが 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 のクォータと制限」を参照してください。