

 **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
<a name="ml-inference"></a>

**dica**  
 [Registre-se](https://events.eksworkshop.com/workshops/genai/) 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
<a name="_why_use_amazon_eks_for_inference"></a>

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
<a name="_glossary"></a>

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](https://docs.vllm.ai/en/latest/), [SGLang](https://github.com/sgl-project/sglang), [servidor de inferência Triton](https://github.com/triton-inference-server/server) e [TGI (Text Generation Inference)](https://github.com/huggingface/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
<a name="_how_inference_on_amazon_eks_works"></a>

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](ml-cluster-setup.md) 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
<a name="_inference_performance_metrics"></a>

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
<a name="_reducing_cold_start_time"></a>

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](https://github.com/run-ai/runai-model-streamer) 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
<a name="_what_youll_deploy"></a>

As instruções passo a passo [Carregar e servir modelo](ml-inference-load-serve-model.md) 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.

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

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

1.  **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](ml-cluster-setup.md) e trabalha com o Modo Automático do EKS e os caminhos autogerenciados do Karpenter.