View a markdown version of this page

KV キャッシュとインテリジェントルーティング - Amazon SageMaker AI

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

KV キャッシュとインテリジェントルーティング

Amazon SageMaker HyperPod Inference は、マネージド階層型キーバリュー (KV) キャッシュとインテリジェントルーティングを提供し、大規模言語モデル (LLM) ワークロードの推論パフォーマンスを最適化します。KV キャッシュは、以前のトークンを処理した後に事前計算されたキーと値のベクトルを保存し、冗長な再計算を排除します。2 層キャッシュアーキテクチャを使用すると、低レイテンシーのローカル再利用に CPU メモリを使用する L1 キャッシュと、Redis またはマネージド階層型ストレージを活用してスケーラブルなノードレベルのキャッシュ共有を可能にする L2 キャッシュを設定できます。

インテリジェントルーティングは、受信リクエストを分析し、関連するキャッシュされたキーと値のペアを持つ可能性が最も高い推論インスタンスに転送します。システムはリクエストを調べ、次のいずれかのルーティング戦略に基づいてルーティングします。

  • prefixaware — 同じプロンプトプレフィックスを持つ後続のリクエストは、同じインスタンスにルーティングされます。

  • kvaware — 受信リクエストは、KV キャッシュヒット率が最も高いインスタンスにルーティングされます。

  • session — 同じユーザーセッションからのリクエストは、同じインスタンスにルーティングされます。

  • roundrobin — KV キャッシュの状態を考慮せずに、リクエストを均等に分散します。

インテリジェントルーティングは、Amazon SageMaker JumpStart デプロイ (コンソールと kubectl の両方)、NVMe ローカルストレージデプロイ、Amazon S3、Amazon FSx、Hugging Face Hub からのデプロイなど、すべての Amazon SageMaker HyperPod Inference デプロイ方法で機能します。 Amazon S3 FSx モデルの配信に使用するデプロイ方法に関係なく、キャッシュとルーティングを有効にできます。

注記

KV キャッシュとインテリジェントルーティングは現在、vLLM ベースの推論コンテナのみをサポートしています。

KV キャッシュとインテリジェントルーティングを設定する

  1. enableL1Cache と enableL2Cacheを に設定して KV キャッシュを有効にしますtrue。次に、 l2CacheBackend を redisまたは に設定l2CacheSpecして を設定しますtieredstorage。を選択した場合はredis、Redis クラスター URL l2CacheLocalUrlで を更新します。

    kvCacheSpec: enableL1Cache: true enableL2Cache: true l2CacheSpec: l2CacheBackend: <redis | tieredstorage> l2CacheLocalUrl: <Redis cluster URL if l2CacheBackend is redis >
    注記

    Redis クラスターが HyperPod クラスターと同じ Amazon VPC 内にない場合、転送中のデータの暗号化は保証されません。

    注記

    l2CacheLocalUrl tieredstorage を選択した場合、 は必要ありません。

  2. true で enabled を に設定して、インテリジェントルーティングを有効にしますintelligentRoutingSpec。で使用するルーティング戦略を で指定できますroutingStrategy。ルーティング戦略が指定されていない場合、デフォルトで になりますprefixaware。

    intelligentRoutingSpec: enabled: true routingStrategy: <routing strategy to use>
  3. true で enabledを に設定して、ルーターメトリクスとキャッシュメトリクスを有効にしますmetrics。port 値は、 containerPortの値と同じである必要がありますmodelInvocationPort。

    metrics: enabled: true modelMetrics: port: <port value> ... modelInvocationPort: containerPort: <port value>

KV 対応ルーティングの互換性

このセクションの互換性マトリックスとバージョンの制約は、kvawareルーティング戦略にのみ適用されます。このkvaware戦略は、KV キャッシュヒット率が最も高い推論インスタンスに受信リクエストを送信し、現在、呼び出しエンドポイントとして /completions API を使用する vLLM ベースのイメージのみをサポートしています。

注記

kvaware ルーティングを使用する場合は、デプロイマニフェスト/completionsで invocationEndpointを に設定する必要があります。/v1/chat/completions エンドポイントはkvawareルーティングではサポートされていません。他のルーティング戦略 (prefixaware、session、roundrobin) は、任意の呼び出しエンドポイントで機能します。

サポートされているイメージ:

推論演算子のバージョン Amazon EKS アドオンバージョン LMCache イメージバージョン vLLM イメージバージョン
>= v3.1.3 >= v1.2.1-eksbuild.1 >= v0.4.3 >= v0.19.1
< v3.1.3 < v1.2.1-eksbuild.1 v0.3.9post2 v0.11.1
注記

サポートマトリックスに示されている対応する LMCache および vLLM バージョンでは、推論演算子バージョン v3.1.3 以降を使用することをお勧めします。新しい LMCache バージョンでは、テンソル並列処理、障害処理の改善、キャッシュワーカー登録がサポートされるため、KV 対応ルーティングの堅牢性が向上します。

KV キャッシュ対応ルーティングの検証

KV 対応ルーティングを有効にしてモデルをデプロイしたら、次の手順を使用してルーティングが正しく動作していることを確認します。

ワーカー登録を確認する

ルーターログを確認して、ワーカーがルーターに登録されていることを確認します。

kubectl logs -n hyperpod-inference-system <router-pod> | grep -i "register"

正常な登録は以下を示します。

INFO: Worker registered: lmcacheengineconfig_<hash>

ルーターログのキャッシュヒットを確認する

ルーターが KV 対応ルーティングを使用してリクエストを送信していることを確認します。

kubectl logs -n hyperpod-inference-system <router-pod> | grep -i "kvaware\|Matched instance\|Lookup"

KV 対応ルーティングが正しく動作している場合:

INFO: Routing request to lmcacheengineconfig_<hash> found by kvaware router

KV 対応ルーティングが機能しない場合 (ラウンドロビンに戻る):

DEBUG: Matched instance url None

ワーカーログの LMCache 初期化を確認する

LMCache がワーカーポッドで正常に初期化されたことを確認します。

kubectl logs -n <namespace> <worker-pod> | grep -i "LMCache"

正常な初期化は以下を示します。

LMCache INFO: LMCacheManager initialized successfully

LMCache の初期化に失敗すると、以下が表示されます。

LMCache ERROR: Failed to initialize LMCacheManager components: . System will operate in degraded mode (recompute).

Grafana メトリクスで検証する

メトリクス (metrics.enabled: true) を有効にすると、vLLM ワーカー/metricsエンドポイントの次のメトリクスがキャッシュヒットを確認します。KV 対応ルーティングが正しく動作している場合、これらのメトリクスには高い値が表示されます。

メトリクス 説明
vllm:prefix_cache_hits_total / vllm:prefix_cache_queries_total GPU プレフィックスキャッシュヒット率 (比率として計算)
lmcache:num_vllm_hit_tokens_total LMCache から提供されるトークンの数
lmcache:num_lookup_hits_total / lmcache:num_lookup_tokens_total LMCache ルックアップヒット率 (比率として計算)
lmcache:request_cache_hit_rate リクエストごとのキャッシュヒット率 (ヒストグラム)