Ajudar a melhorar esta página
Para contribuir com este guia de usuário, escolha o link Editar esta página no GitHub, disponível no painel direito de cada página.
Executar workloads de inferência de IA/ML no Amazon EKS
dica
Registre-se
Inferência é o processo de executar um modelo de IA treinado para gerar previsões ou saídas a partir de dados de entrada. Isso inclui servir grandes modelos de linguagem (LLMs) que produzem texto ou código, modelos de difusão que geram imagens, modelos de fala para síntese e transcrição de voz, e modelos de vídeo para análise ou geração em tempo real. O Amazon EKS fornece uma solução escalável e portátil para a implantação dessas workloads de inferência com GPUs NVIDIA ou aceleradores AWS Trainium, escalação dinâmica e integração com o cenário mais amplo de ferramentas e serviços do Kubernetes e da AWS.
Por que usar o Amazon EKS para inferência
O Amazon EKS combina a orquestração do Kubernetes com a infraestrutura da AWS para enfrentar os principais desafios da execução de inferência em larga escala:
-
Escalação dinâmica de GPU: o Karpenter provisiona instâncias de GPU do tamanho certo sob demanda com base nas solicitações de recursos do Pod, escalando a partir de zero em períodos de ociosidade e adicionando capacidade à medida que o tráfego aumenta. Isso evita o provisionamento excessivo de recursos dispendiosos de GPU.
-
Inícios rápidos a frio: o SOCI (Seekable OCI) baixa e a descompacta em paralelo grandes camadas de imagens de contêiner, reduzindo o tempo de extração de minutos para segundos. Combinado com o streaming de modelos do Amazon S3 diretamente para a memória da GPU, os pods podem começar a servir em menos de dois minutos.
-
Recuperação automática de falha de GPU: o agente de monitoramento de nós do EKS detecta falhas no hardware da GPU e aciona a substituição automática dos nós, minimizando o tempo de inatividade sem intervenção manual.
-
Otimização de custos: instâncias spot com fallback de sob demanda, seleção de instâncias do tamanho certo e comportamento de escalação até zero reduzem os custos de GPU. A capacidade reservada (ODCRs) proporciona economia adicional para workloads de estado fixo.
-
Padrões abertos e portabilidade: as workloads de inferência são executadas nas APIs padrão do Kubernetes (implantações, serviços, HPAs) com servidores de modelo de código aberto, como vLLM ou SGlang, fornecendo portabilidade entre ambientes.
-
Monitoramento integrado: as métricas do Prometheus extraídas de vLLM ou SGlang e o exportador DCGM NVIDIA fornecem visibilidade da latência de solicitações, throughput de tokens, utilização de GPU e uso de memória nos painéis do Grafana.
Glossário
Os seguintes termos são usados nesta seção:
-
Inferência: o processo de executar um modelo treinado para gerar saídas (texto, incorporações, classificações) a partir de dados de entrada.
-
Servidor de modelo: um serviço conteinerizado que carrega um modelo na memória, recebe solicitações de inferência e retorna previsões. Os exemplos incluem vLLM
, SGLang , servidor de inferência Triton e TGI (Text Generation Inference) . -
Pesos do modelo: os parâmetros aprendidos de um modelo treinado, armazenados como arquivos (normalmente no formato SafeTensors ou GGUF) que o servidor do modelo carrega na memória da GPU.
-
Acelerador: hardware especializado, como GPUs NVIDIA ou chips AWS Trainium/Inferentia, que aceleram as operações matriciais necessárias para inferência.
-
Paralelismo de tensores: divisão de um modelo entre várias GPUs no mesmo nó para comportar modelos que excedem a memória de uma única GPU.
-
Cache de KV: um buffer de memória que armazena os pares de valor-chave calculados anteriormente durante a geração do texto, evitando computação redundante para cada novo token.
Como a inferência no Amazon EKS funciona
Em um alto nível, a implantação de uma workload de inferência no Amazon EKS envolve as seguintes etapas:
| Etapa | Descrição |
|---|---|
|
Configurar o cluster |
Crie um cluster do EKS com nós, monitoramento e armazenamento habilitados para GPU. Consulte Configuração do cluster na documentação de AI/ML do EKS. |
|
Armazenar os pesos do modelo |
Baixe os pesos do modelo de um catálogo de modelos (como o Hugging Face) e armazene-os no Amazon S3 para carregar rapidamente o modelo durante eventos de inicialização a frio ou aumento de escala vertical. |
|
Implantar o servidor de modelo |
Crie uma implantação do Kubernetes que execute um servidor de modelo (como o vLLM) nos nós de GPU. O servidor de modelo transmite os pesos do S3 para a memória da GPU e expõe uma API compatível com OpenAI. |
|
Expor o endpoint de inferência |
Crie um serviço do Kubernetes para fornecer um endpoint de rede estável. Use port-forward para testes ou um balanceador de carga, como o AWS Application Load Balancer (ALB), para tráfego de produção. |
|
Monitorar e escalar |
Use as métricas do Prometheus (taxa de solicitações, throughput de tokens, latência, utilização do cache de KV) para monitorar a performance e configurar a escalação automática. |
Métricas de performance da inferência
Compreender a performance da inferência requer o rastreamento das métricas de latência e throughput:
Métricas de latência
-
Tempo até o primeiro token (TTFT): tempo desde a chegada da solicitação até o primeiro token ser gerado. Essencial para aplicações interativas.
-
Tempo por token de saída (TPOT): tempo médio para gerar cada token subsequente ao primeiro.
-
Latência de solicitação de ponta a ponta: tempo total do envio da solicitação até a conclusão da resposta completa.
Métricas de throughput
-
Solicitações por segundo: total de solicitações de inferência atendidas por segundo em todas as réplicas.
-
Tokens de saída por segundo: taxa de geração de tokens, medida como o total de tokens de saída dividido pelo tempo transcorrido.
-
Utilização da GPU: porcentagem dos ciclos de computação da GPU usados ativamente para inferência.
-
Utilização do cache de KV: porcentagem da memória do cache de KV alocada em uso, indicando o quanto o servidor está próximo da capacidade.
Reduzir o tempo de inicialização a frio
Grandes contêineres de inferência (8 a 15 GB) e pesos de modelo (de 10 a mais de 100 GB) podem causar lentidão na inicialização do pod. As técnicas a seguir minimizam a demora nas inicializações a frio:
-
Extração paralela do SOCI: baixa e descompacta as camadas de imagens de contêiner simultaneamente, em vez de sequencialmente. Habilitado por padrão no Modo Automático do EKS para instâncias da GPU.
-
Streaming de modelo do S3: ferramentas como o streamer de modelo Run:ai
transmitem os pesos do modelo diretamente do Amazon S3 para a memória da GPU, contornando o disco local e reduzindo o tempo de carregamento de minutos para segundos. -
Armazene imagens no Amazon ECR: a extração das imagens de um repositório regional do ECR por um endpoint da VPC evita a latência da Internet para imagens de contêineres grandes.
-
Cache do armazenamento de instância: as instâncias da família G com discos NVMe locais podem armazenar camadas de contêineres e artefatos de modelo, acelerando extrações subsequentes no mesmo nó.
O que será implantado
As instruções passo a passo Carregar e servir modelo orientam na implantação de uma aplicação de inferência do início ao fim:
-
Baixe os pesos do modelo: um Job do Kubernetes baixa o modelo Ministral-3-8B-Instruct do Hugging Face e carrega-o no bucket do S3.
-
Implante o vLLM: uma implantação executa o vLLM com o streamer de modelo do Run:ai para transmitir pesos do S3 diretamente para a memória da GPU, servindo uma API compatível com OpenAI.
-
Monitore com o Grafana: um ServiceMonitor integra as métricas do vLLM Prometheus à pilha de monitoramento para fornecer painéis em tempo real.
-
Implante um frontend de chat: o Open WebUI fornece uma interface de chat baseada em navegador conectada ao endpoint do vLLM.
As instruções passo a passo usam a infraestrutura de cluster da seção Configurar cluster do Amazon EKS para workloads de IA/ML e trabalha com o Modo Automático do EKS e os caminhos autogerenciados do Karpenter.