View a markdown version of this page

Executar workloads de inferência de IA/ML no Amazon EKS - Amazon EKS

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 para os próximos workshops do Amazon EKS AI/ML.

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:

  1. 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.

  2. 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.

  3. Monitore com o Grafana: um ServiceMonitor integra as métricas do vLLM Prometheus à pilha de monitoramento para fornecer painéis em tempo real.

  4. 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.