W&B Inference は、サポートされるホスト済みモデルで接頭辞キャッシュを使用し、同じプロンプト接頭辞を持つリクエストの繰り返しを高速化します。
リクエストが、同じバックエンド上の以前のリクエストと同じプロンプト接頭辞を共有する場合、モデルは接頭辞全体を再計算せずに、以前に計算したキーバリュー (KV) キャッシュを再利用します。これにより、繰り返し使用するプロンプト、長いシステムプロンプト、共通の接頭辞が変わらないワークロードのレイテンシーが削減されます。
サポートされるモデルでは接頭辞キャッシュが自動的に行われるため、リクエストで有効にする必要はありません。このページでは、接頭辞キャッシュが最も効果的な場合と、cache_salt を使用してキャッシュの分離を制御する方法を説明します。
接頭辞キャッシュが効果を発揮する場面
接頭辞キャッシュは、長い共通の接頭辞を持つリクエストを繰り返し送信する場合に特に有効です。たとえば、次のようなケースが該当します。
- 大規模なシステムプロンプトを多数のリクエストで再利用する場合。
- 長い共有ドキュメントに続けて、さまざまなユーザーの質問を送信する場合。
- リクエストごとにわずかな変更しかない評価プロンプトを繰り返し送信する場合。
- 会話履歴の大部分が変わらないマルチターンのワークロード。
キャッシュの分離
環境によっては、異なるユーザーやアプリケーション間でキャッシュが再利用されないようにする必要があります。cache_salt パラメーターでこれを制御できます。
デフォルトでは、バックエンドが許可している場合、プロンプト接頭辞が同一のリクエストは、共有インフラストラクチャー上のキャッシュを再利用できます。
キャッシュの再利用を特定の信頼境界内に限定するには、リクエストパラメーター cache_salt を設定します。リクエストは、プロンプト接頭辞と cache_salt の両方が一致する場合にのみ、接頭辞キャッシュを再利用します。
単一のユーザー、テナント、セッション、またはアプリケーションの境界内ではキャッシュを再利用し、他の呼び出し元との間では再利用しないようにする場合は、cache_salt を使用してください。
仕組み
cache_salt の有無と値は、キャッシュの再利用に以下のように影響します:
- 同じプロンプト接頭辞、
cache_salt なし: 一致するリクエスト間でキャッシュが再利用される可能性があります。
- 同じプロンプト接頭辞、同じ
cache_salt: キャッシュを再利用できます。
- 同じプロンプト接頭辞、異なる
cache_salt: キャッシュは分離され、異なる cache_salt 間で再利用されません。
cache_salt を指定する場合は、空文字列でない string でなければなりません。
サンプル
次のサンプルは、cache_salt を指定してチャット補完リクエストを送信し、キャッシュの再利用を分離する方法を示しています。
応答の動作
接頭辞キャッシュがリクエストに対してアクティブであることを確認するには、応答の使用状況の詳細を確認します。一部のモデルでは、使用状況の詳細に、接頭辞キャッシュが再利用された場合に usage.prompt_tokens_details.cached_tokens のキャッシュされたトークン数が含まれることがあります。このフィールドの可用性は、モデルとバックエンドによって異なります。
関連ページ
以下のページでは、関連するトピックについて説明しています。