Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Mise en cache KV et routage intelligent
Amazon SageMaker HyperPod Inference fournit une mise en cache des valeurs clés (KV) hiérarchisée gérée et un routage intelligent afin d'optimiser les performances d'inférence pour les charges de travail du modèle de langage (LLM) volumineux. La mise en cache KV enregistre les vecteurs clé-valeur précalculés après le traitement des jetons précédents, éliminant ainsi les recalculs redondants. Grâce à une architecture de mise en cache à deux niveaux, vous pouvez configurer un cache L1 qui utilise la mémoire du processeur pour une réutilisation locale à faible latence, et un cache L2 qui exploite Redis ou un stockage hiérarchisé géré pour permettre un partage de cache évolutif au niveau des nœuds.
Le routage intelligent analyse les demandes entrantes et les dirige vers l'instance d'inférence la plus susceptible de disposer de paires clé-valeur mises en cache pertinentes. Le système examine la demande et l'achemine selon l'une des stratégies de routage suivantes :
-
prefixaware— Les requêtes suivantes avec le même préfixe d'invite sont acheminées vers la même instance. -
kvaware— Les demandes entrantes sont acheminées vers l'instance dont le taux de réussite du cache KV est le plus élevé. -
session— Les demandes provenant d'une même session utilisateur sont acheminées vers la même instance. -
roundrobin— Répartit les demandes de manière uniforme sans tenir compte de l'état du cache KV.
Le routage intelligent fonctionne avec toutes les méthodes de déploiement Amazon SageMaker HyperPod Inference, y compris les SageMaker JumpStart déploiements Amazon (console et kubectl), les déploiements de stockage local NVMe et les déploiements depuis Amazon S3, Amazon FSx ou Hugging Face Hub. Vous pouvez activer la mise en cache et le routage quelle que soit la méthode de déploiement que vous utilisez pour servir votre modèle.
Note
La mise en cache KV et le routage intelligent ne prennent actuellement en charge que les conteneurs LLM-based d'inférence v.
Configuration de la mise en cache KV et du routage intelligent
-
Activez la mise en cache KV en réglant
enableL1CacheetenableL2Cachesur.trueEnsuite, configurezl2CacheSpecenl2CacheBackendréglant surredisoutieredstorage. Si vous le souhaitezredis, effectuez la mise à jourl2CacheLocalUrlavec l'URL du cluster Redis.kvCacheSpec: enableL1Cache: true enableL2Cache: true l2CacheSpec: l2CacheBackend: <redis | tieredstorage> l2CacheLocalUrl: <Redis cluster URL if l2CacheBackend is redis >Note
Si le cluster Redis ne se trouve pas dans le même Amazon VPC que le HyperPod cluster, le chiffrement des données en transit n'est pas garanti.
Note
Vous n'avez pas besoin
tieredstoragequ'l2CacheLocalUrlil soit sélectionné. -
Activez le routage intelligent en le
enabledréglant surtrueinférieurintelligentRoutingSpec. Vous pouvez spécifier la stratégie de routage à utiliserroutingStrategy. Si aucune stratégie de routage n'est spécifiée, sa valeur par défaut est.prefixawareintelligentRoutingSpec: enabled: true routingStrategy: <routing strategy to use> -
Activez les métriques du routeur et les métriques de mise en cache en réglant
enabledsurtrueUndermetrics. Laportvaleur doit être la même que lacontainerPortvaleur inférieuremodelInvocationPort.metrics: enabled: true modelMetrics: port: <port value> ... modelInvocationPort: containerPort: <port value>
KV-aware compatibilité du routage
La matrice de compatibilité et les contraintes de version de cette section s'appliquent uniquement à la stratégie de kvaware routage. La kvaware stratégie dirige les demandes entrantes vers l'instance d'inférence présentant le taux de réussite du cache KV le plus élevé et ne prend actuellement en charge que les LLM-based images v avec l'/completionsAPI comme point de terminaison d'invocation.
Note
Si vous utilisez le kvaware routage, vous devez invocationEndpoint définir cette valeur /completions dans votre manifeste de déploiement. Le /v1/chat/completions point de terminaison n'est pas pris en charge pour kvaware le routage. Les autres stratégies de routage (prefixaware,session,roundrobin) fonctionnent avec n'importe quel point de terminaison d'invocation.
Images prises en charge :
-
Image vLLM : hub.docker. com/r/vllm/vllm-ouvert
-
Image du cache LMCache : hub.docker. com/r/lmcache/vllm-ouvert
-
AWS Conteneur de Deep Learning : gallery.ecr. aws/deep-apprentissage- containers/vllm
| Version de l'opérateur d'inférence | Add-on Version d'Amazon EKS | Version de l'image LMCache | Version de l'image 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.9 post2 | v0.11.1 |
Note
Nous vous recommandons d'utiliser la version v3.1.3 ou supérieure de l'opérateur d'inférence avec les versions LMCache et vLLM correspondantes indiquées dans la matrice de support. Les nouvelles versions de LMCache prennent en charge le parallélisme des tenseurs, une meilleure gestion des défaillances et l'enregistrement des opérateurs de cache, ce qui améliore la robustesse du routage. KV-aware
Validation du routage prenant en compte le cache KV
Après avoir déployé un modèle avec le KV-aware routage activé, procédez comme suit pour vérifier que le routage fonctionne correctement.
Vérifiez l'enregistrement des travailleurs
Vérifiez que les employés se sont enregistrés auprès du routeur en consultant les journaux du routeur :
kubectl logs -n hyperpod-inference-system <router-pod> | grep -i "register"
Un enregistrement en bonne santé montre que :
INFO: Worker registered: lmcacheengineconfig_<hash>
Vérifiez les accès au cache dans les journaux du routeur
Vérifiez que le routeur utilise le KV-aware routage pour diriger les demandes :
kubectl logs -n hyperpod-inference-system <router-pod> | grep -i "kvaware\|Matched instance\|Lookup"
Lorsque KV-aware le routage fonctionne correctement :
INFO: Routing request to lmcacheengineconfig_<hash> found by kvaware router
Lorsque KV-aware le routage ne fonctionne pas (retour au round robin) :
DEBUG: Matched instance url None
Vérifiez l'initialisation de LMCache dans les journaux de travail
Vérifiez que LMCache s'est correctement initialisé sur les pods de travail :
kubectl logs -n <namespace> <worker-pod> | grep -i "LMCache"
Une initialisation saine indique :
LMCache INFO: LMCacheManager initialized successfully
Si LMCache n'a pas réussi à s'initialiser, vous verrez :
LMCache ERROR: Failed to initialize LMCacheManager components: . System will operate in degraded mode (recompute).
Vérifiez à l'aide des métriques Grafana
Lorsque les métriques sont activées (metrics.enabled: true), les mesures suivantes provenant du /metrics terminal de travail vLLM confirment les accès au cache. Ces métriques doivent afficher des valeurs élevées lorsque KV-aware le routage fonctionne correctement :
| Métrique | Description |
|---|---|
vllm:prefix_cache_hits_total / vllm:prefix_cache_queries_total |
Taux de réussite du cache du préfixe GPU (calculé sous forme de ratio) |
lmcache:num_vllm_hit_tokens_total |
Nombre de jetons servis depuis LMCache |
lmcache:num_lookup_hits_total / lmcache:num_lookup_tokens_total |
Taux de réussite de la recherche LMCache (calculé sous forme de ratio) |
lmcache:request_cache_hit_rate |
Per-request taux de réussite du cache (histogramme) |