次の方法で共有


プロビジョニングされたスループットの 1 秒あたりのトークンの範囲は何を意味しますか?

この記事では、Databricks が Foundation Model API のプロビジョニング済みスループット ワークロードの 1 秒あたりのトークンを測定する方法と理由について説明します。

大規模言語モデル (LLM) のパフォーマンスは、多くの場合、1 秒あたりのトークン数で測定されます。 運用モデルサービス エンドポイントを構成する場合は、アプリケーションがエンドポイントに送信する要求の数を考慮することが重要です。 そうすることで、待機時間に影響を与えないようにエンドポイントをスケーリングするように構成する必要があるかどうかを理解するのに役立ちます。

プロビジョニングされたスループットでデプロイされたエンドポイントのスケールアウト範囲を構成する場合、Databricks では、トークンを使用してシステムに入る入力を簡単に推論できることがわかりました。

トークンとは

LLM は 、トークンと呼ばれるものに関してテキストの読み取りと生成を行います。 トークンには単語またはサブワードを使用できます。テキストをトークンに分割するための正確な規則は、モデルによって異なります。 たとえば、オンライン ツールを使用して、 Llama のトークナイザーが単語をトークンに変換する方法を確認できます。

次の図は、Llama トークナイザーがテキストを分割する方法の例を示しています。

Llama-tokenizer-example

1 秒あたりのトークン数で LLM のパフォーマンスを測定する理由

従来、サービス エンドポイントは、1 秒あたりの同時要求数 (RPS) に基づいて構成されます。 ただし、LLM 推論要求は、渡されるトークンの数と生成される数に基づいて異なる時間がかかります。これは、要求間で不均衡になる可能性があります。 そのため、エンドポイントに必要なスケールアウトの量を決定するには、要求の内容 (トークン) の観点からエンドポイントのスケールを測定する必要があります。

さまざまなユース ケースでは、入力トークンと出力トークンの比率が異なります。

  • さまざまな入力コンテキストの長さ: 一部の要求には少数の入力トークン (短い質問など) しか含まない場合もあれば、集計用の長いドキュメントなど、数百または数千のトークンが含まれる場合もあります。 この変動により、RPS のみに基づいてサービス エンドポイントを構成することは困難になります。これは、さまざまな要求のさまざまな処理要求を考慮しないためです。
  • ユース ケースに応じて出力の長さが異なる: LLM のユース ケースが異なると、出力トークンの長さが大幅に異なる可能性があります。 出力トークンの生成は LLM 推論の最も時間のかかる部分であるため、スループットに大きな影響を与える可能性があります。 たとえば、要約には短い、より短い応答が含まれますが、記事の作成や製品の説明などのテキスト生成では、はるかに長い回答が生成される可能性があります。

エンドポイントの 1 秒あたりのトークン範囲を選択するにはどうすればよいですか?

プロビジョニングされたスループット サービス エンドポイントは、エンドポイントに送信できる 1 秒あたりのトークンの範囲に関して構成されます。 エンドポイントはスケールアップおよびスケールダウンして、運用アプリケーションの負荷を処理します。 エンドポイントがスケーリングされる 1 秒あたりのトークンの範囲に基づいて、1 時間あたりに課金されます。

プロビジョニングされたスループット サービス エンドポイントの 1 秒あたりのトークン範囲を把握する最善の方法は、代表的なデータセットを使用してロード テストを実行することです。 「 独自の LLM エンドポイント ベンチマークを実施する」を参照してください。

考慮すべき重要な要素は 2 つあります。

  • Databricks が LLM の 1 秒あたりのトークン のパフォーマンスを測定する方法。
  • 自動スケールのしくみ。

Databricks が LLM の 1 秒あたりのトークンのパフォーマンスを測定する方法

Databricks は、取得拡張生成のユース ケースに共通する集計タスクを表すワークロードに対してエンドポイントをベンチマークします。 具体的には、ワークロードは次で構成されます。

  • 2048 入力トークン
  • 256 個の出力トークン

表示されるトークン範囲は、入力トークンと出力トークンのスループットを 組み合わせ 、既定ではスループットと待機時間のバランスを取るための最適化を行います。

Databricks ベンチマークでは、ユーザーは、要求ごとに 1 つのバッチ サイズで、1 秒あたりに多数のトークンを同時にエンドポイントに送信できます。 これにより、エンドポイントに同時にヒットする複数の要求がシミュレートされます。これは、実際に運用環境でエンドポイントを使用する方法をより正確に表します。

  • たとえば、プロビジョニングされたスループット サービス エンドポイントの設定レートが 2304 トークン/秒 (2048 + 256) の場合、2048 トークンの入力と 256 トークンの予想される出力を含む 1 つの要求の実行には約 1 秒かかると予想されます。
  • 同様に、レートが 5600 に設定されている場合、入力トークンと出力トークン数が上記の 1 つの要求で実行されるまでに約 0.5 秒かかることが予想されます。つまり、エンドポイントは約 1 秒で 2 つの同様の要求を処理できます。

ワークロードが上記と異なる場合は、一覧表示されているプロビジョニング済みスループットレートに関して待機時間が異なる可能性があります。 前述のように、より多くの出力トークンを生成する方が、より多くの入力トークンを含めるよりも時間がかかります。 バッチ推論を実行していて、完了までにかかる時間を見積もりたい場合は、入力トークンと出力トークンの平均数を計算し、上記の Databricks ベンチマーク ワークロードと比較できます。

  • たとえば、1000 行があり、平均入力トークン数が 3000 で、平均出力トークン数が 500 で、プロビジョニングされたスループットが 1 秒あたり 3500 トークンである場合、平均トークン数が Databricks ベンチマークよりもきいため、合計 1,000 秒 (1 行あたり 1 秒) より長い時間がかかる場合があります。
  • 同様に、1000 行、平均入力 1500 トークン、平均出力 100 トークン、プロビジョニングスループットが 1 秒あたり 1600 トークンの場合、平均トークン数が Databricks ベンチマークよりもないため、合計 1,000 秒 (1 行あたり 1 秒) 未満になる可能性があります。

バッチ推論ワークロードを完了するために必要な理想的なプロビジョニング済みスループットを見積もるために、ai_queryを使用したバッチ LLM 推論の実行でノートブックを使用できます。

自動スケーリングのしくみ

Model Serving は、アプリケーションの 1 秒あたりのトークンの需要を満たすように基になるコンピューティングをスケーリングする迅速な自動スケール システムを備えています。 Databricks は、プロビジョニング済みスループットを 1 秒あたりにトークンのチャンク単位でスケールアップするため、プロビジョニング済みスループットの追加ユニットに対して課金されるのは、それらを使用している場合のみです。

次のスループット待機時間グラフは、テスト済みのプロビジョニング済みスループット エンドポイントを示しています。並列要求の数が増えています。 最初のポイントは、1 つの要求、2 番目の要求、2 つの並列要求、3 つ目の要求、4 つの並列要求などを表します。 要求の数が増え、さらに 1 秒あたりの要求あたりのトークン数が増えると、プロビジョニングされたスループットも増加することがわかります。 この増加は、自動スケールによって使用可能なコンピューティングが増加することを示します。 ただし、並列要求が増えると、スループットが徐々に安定し始め、1秒あたり約8,000トークンの限界に達することがあります。 割り当てられたコンピューティングが同時に使用されるため、処理される前にキューで待機する必要がある要求が増えると、合計待機時間が増加します。

スケール・トゥ・ゼロを無効にし、サービングエンドポイントで最小スループットを設定することで、スループットを一貫して保つことができます。 そうすることで、エンドポイントのスケールアップを待つ必要がなくなります。

Throughput-Latency グラフ

また、需要に応じてリソースがどのようにスピンアップまたはスピンダウンされるかを、モデル サービス エンドポイントから確認することもできます。

プロビジョニングされたコンカレンシーの図

モデル提供 GPU 使用図

トラブルシューティング

プロビジョニング済みのスループット サービス エンドポイントが、指定されたよりも 1 秒あたりのトークン数が少ない割合で実行される場合は、次を確認して、エンドポイントが実際にスケーリングされた量を確認します。

  • プロビジョニングされたコンカレンシーは、エンドポイント メトリックにプロットされます。
  • プロビジョニングされたスループット エンドポイントの最小バンド サイズ。
    • エンドポイントの Served エンティティの詳細 に移動し、[ 最大 ] ドロップダウンで 1 秒あたりの最小トークン数を確認します。

その後、次の式を使用して、エンドポイントが実際にスケーリングされた量を計算できます。

  • プロビジョニングされたコンカレンシー * 最小バンドサイズ / 4

たとえば、上記の Llama 3.1 405B モデルのプロビジョニングされたコンカレンシー プロットでは、プロビジョニングされた最大コンカレンシーは 8 です。 エンドポイントを設定する場合、最小バンド サイズは 1 秒あたり 850 トークンでした。 この例では、エンドポイントは最大で次の値にスケーリングされます。

  • 8 (プロビジョニングされたコンカレンシー) * 850 (最小バンド サイズ) / 4 = 1700 トークン/秒