View a markdown version of this page

Cache KV e roteamento inteligente - SageMaker IA da Amazon

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Cache KV e roteamento inteligente

O Amazon SageMaker HyperPod Inference fornece armazenamento gerenciado em cache hierárquico de valores-chave (KV) e roteamento inteligente para otimizar o desempenho da inferência para cargas de trabalho de grandes modelos de linguagem (LLM). O cache KV salva vetores de valores-chave pré-computados após o processamento de tokens anteriores, eliminando recálculos redundantes. Por meio de uma arquitetura de cache de duas camadas, você pode configurar um cache L1 que usa memória da CPU para reutilização local de baixa latência e um cache L2 que aproveita o Redis ou o armazenamento hierárquico gerenciado para permitir o compartilhamento de cache escalável em nível de nó.

O roteamento inteligente analisa as solicitações recebidas e as direciona para a instância de inferência com maior probabilidade de ter pares de valores-chave relevantes em cache. O sistema examina a solicitação e a encaminha com base em uma das seguintes estratégias de roteamento:

  • prefixaware— Solicitações subsequentes com o mesmo prefixo de prompt são roteadas para a mesma instância.

  • kvaware— As solicitações recebidas são roteadas para a instância com a maior taxa de acerto de cache de KV.

  • session— As solicitações da mesma sessão de usuário são roteadas para a mesma instância.

  • roundrobin— Distribui as solicitações uniformemente sem considerar o estado do cache KV.

O roteamento inteligente funciona com todos os métodos de implantação do Amazon SageMaker HyperPod Inference, incluindo SageMaker JumpStart implantações da Amazon (console e kubectl), implantações de armazenamento local NVMe e implantações do Amazon S3, Amazon FSx ou Hugging Face Hub. Você pode ativar o armazenamento em cache e o roteamento, independentemente do método de implantação usado para servir seu modelo.

nota

Atualmente, o cache KV e o roteamento inteligente suportam apenas contêineres de inferência v. LLM-based

Configurar o cache KV e o roteamento inteligente

  1. Ative o cache KV configurando enableL1Cache e enableL2Cache para. true Em seguida, configure l2CacheSpec l2CacheBackend definindo como redis outieredstorage. Se você escolherredis, atualize l2CacheLocalUrl com a URL do cluster Redis.

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

    Se o cluster Redis não estiver na mesma Amazon VPC do HyperPod cluster, a criptografia dos dados em trânsito não é garantida.

    nota

    Você não precisa l2CacheLocalUrl se tieredstorage estiver selecionado.

  2. Ative o roteamento inteligente configurando como enabled true underintelligentRoutingSpec. Você pode especificar em routingStrategy qual estratégia de roteamento usar. Se nenhuma estratégia de roteamento for especificada, o padrão é. prefixaware

    intelligentRoutingSpec: enabled: true routingStrategy: <routing strategy to use>
  3. Ative as métricas do roteador e as métricas de cache definindo como enabled true abaixometrics. O port valor precisa ser igual ao containerPort valor abaixomodelInvocationPort.

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

KV-aware compatibilidade de roteamento

A matriz de compatibilidade e as restrições de versão nesta seção se aplicam somente à estratégia de kvaware roteamento. A kvaware estratégia direciona as solicitações recebidas para a instância de inferência com a maior taxa de acerto do cache de KV e atualmente suporta apenas LLM-based imagens v com a /completions API como endpoint de invocação.

nota

Se você usa kvaware roteamento, deve definir como invocationEndpoint /completions em seu manifesto de implantação. O /v1/chat/completions endpoint não é compatível com kvaware roteamento. Outras estratégias de roteamento (prefixaware,session,roundrobin) funcionam com qualquer endpoint de invocação.

Imagens suportadas:

Versão do operador de inferência Add-on Versão Amazon EKS Versão de imagem do LMCache Versão da imagem 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 postagem 2 v0.11.1
nota

Recomendamos usar a versão v3.1.3 ou superior do operador de inferência com as versões correspondentes do LMCache e do vLLM mostradas na matriz de suporte. As versões mais recentes do LMCache suportam paralelismo de tensores, melhor tratamento de falhas e registro de trabalhadores de cache, que fornecem maior robustez para o roteamento. KV-aware

Validando o roteamento com reconhecimento de cache KV

Depois de implantar um modelo com o KV-aware roteamento ativado, use as etapas a seguir para verificar se o roteamento está funcionando corretamente.

Verifique o registro do trabalhador

Verifique se os funcionários se registraram no roteador verificando os registros do roteador:

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

Um registro saudável mostra:

INFO: Worker registered: lmcacheengineconfig_<hash>

Verifique os acessos de cache nos registros do roteador

Verifique se o roteador está usando KV-aware roteamento para direcionar solicitações:

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

Quando o KV-aware roteamento está funcionando corretamente:

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

Quando o KV-aware roteamento não está funcionando (volta ao round-robin):

DEBUG: Matched instance url None

Verifique a inicialização do LMCache nos registros do trabalhador

Verifique se o LMCache foi inicializado com sucesso nos pods de trabalho:

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

Uma inicialização saudável mostra:

LMCache INFO: LMCacheManager initialized successfully

Se o LMCache falhar na inicialização, você verá:

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

Verifique com as métricas do Grafana

Com as métricas habilitadas (metrics.enabled: true), as seguintes métricas do /metrics endpoint do trabalhador vLLM confirmam os acessos ao cache. Essas métricas devem mostrar valores altos quando o KV-aware roteamento está funcionando corretamente:

Métrica Description
vllm:prefix_cache_hits_total / vllm:prefix_cache_queries_total Taxa de acerto do cache do prefixo da GPU (calculada como uma proporção)
lmcache:num_vllm_hit_tokens_total Número de tokens fornecidos pelo LMCache
lmcache:num_lookup_hits_total / lmcache:num_lookup_tokens_total Taxa de acerto de pesquisa do LMCache (calculada como uma proporção)
lmcache:request_cache_hit_rate Per-request taxa de acerto do cache (histograma)