

 **Ayude a mejorar esta página** 

Para contribuir a esta guía del usuario, elija el enlace **Edit this page on GitHub** que se encuentra en el panel derecho de cada página.

# Ejecución de cargas de trabajo de inferencia de IA y ML en Amazon EKS
<a name="ml-inference"></a>

**sugerencia**  
 [Regístrese](https://events.eksworkshop.com/workshops/genai/) en los próximos talleres de IA/ML de Amazon EKS.

La inferencia es el proceso de ejecutar un modelo de IA entrenado para generar predicciones o resultados a partir de los datos de entrada. Esto incluye ofrecer modelos de lenguaje de gran tamaño (LLM) que producen texto o código, modelos de difusión que generan imágenes, modelos de voz para la síntesis y transcripción de la voz y modelos de video para su análisis o generación en tiempo real. Amazon EKS proporciona una solución portátil y escalable para implementar estas cargas de trabajo de inferencia con GPU de NVIDIA o aceleradores AWS Trainium, escalado dinámico e integración con el panorama más amplio de herramientas y servicios de AWS y Kubernetes.

## Por qué utilizar Amazon EKS para la inferencia
<a name="_why_use_amazon_eks_for_inference"></a>

Amazon EKS combina la orquestación de Kubernetes con la infraestructura de AWS para abordar los desafíos clave de ejecutar inferencias a escala:
+  **Escalado dinámico de la GPU:** Karpenter proporciona instancias de GPU del tamaño correcto según las solicitudes de recursos del pod, con escalado desde cero cuando está inactivo y adición de capacidad a medida que aumenta el tráfico. Esto evita el aprovisionamiento excesivo de costosos recursos de GPU.
+  **Inicios en frío rápidos:** la extracción paralela de SOCI (Seekable OCI) descarga y desempaqueta capas de imágenes de contenedores de gran tamaño al mismo tiempo, lo que reduce los tiempos de extracción de imágenes de minutos a segundos. En combinación con la transmisión de modelos desde Amazon S3 directamente a la memoria de la GPU, los pods pueden comenzar a funcionar en menos de dos minutos.
+  **Recuperación automática de fallos de la GPU:** el agente de supervisión de nodos de EKS detecta los fallos de hardware de la GPU y activa la sustitución automática de los nodos, lo que minimiza el tiempo de inactividad sin intervención manual.
+  **Optimización de costos:** las instancias de spot con opciones alternativas bajo demanda, la selección de instancias del tamaño correcto y el comportamiento de escalabilidad a cero reducen los costos de la GPU. La capacidad reservada (ODCR) proporciona ahorros adicionales para las cargas de trabajo estables.
+  **Estándares abiertos y portabilidad:** las cargas de trabajo de inferencia se ejecutan en las API estándar de Kubernetes (implementaciones, servicios, HPA) con servidores de modelos de código abierto como vLLM o SGLang, lo que proporciona portabilidad entre entornos.
+  **Supervisión integrada:** las métricas de Prometheus de vLLM o SGLang y el Exportador de DCGM NVIDIA proporcionan visibilidad de la latencia de las solicitudes, el rendimiento de los tokens, el uso de la GPU y el uso de la memoria a través de los paneles de Grafana.

## Glosario
<a name="_glossary"></a>

Los siguientes términos se utilizan en esta sección:
+  **Inferencia:** proceso de ejecutar un modelo entrenado para generar resultados (texto, incrustaciones, clasificaciones) a partir de los datos de entrada.
+  **Servidor del modelos:** servicio en contenedores que carga un modelo en la memoria, recibe solicitudes de inferencia y devuelve predicciones. Algunos ejemplos incluyen [vLLM](https://docs.vllm.ai/en/latest/), [SGLang](https://github.com/sgl-project/sglang), [Triton Inference Server](https://github.com/triton-inference-server/server) y [Text Generation Inference (TGI)](https://github.com/huggingface/text-generation-inference).
+  **Pesos de los modelos:** parámetros aprendidos de un modelo entrenado, almacenados como archivos (normalmente en formato SafeTensors o GGUF) que el servidor del modelo carga en la memoria de la GPU.
+  **Acelerador:** hardware especializado, como las GPU de NVIDIA o los chips de AWS Trainium o Inferentia, que aceleran las operaciones de matrices necesarias para la inferencia.
+  **Paralelismo de tensores:** divide un modelo en varias GPU del mismo nodo para ofrecer modelos que superen la memoria de una sola GPU.
+  **Caché KV:** búfer de memoria que almacena pares clave-valor previamente calculados durante la generación de texto, lo que evita la computación redundante para cada nuevo token.

## Cómo funciona la inferencia en Amazon EKS
<a name="_how_inference_on_amazon_eks_works"></a>

En un nivel superior, implementar una carga de trabajo de inferencia en Amazon EKS incluye los pasos siguientes:


| Paso | Descripción | 
| --- | --- | 
|  **Configuración del clúster**  | Cree un clúster de EKS con nodos, supervisión y almacenamiento habilitados para la GPU. Consulte [Configuración del clúster](ml-cluster-setup.md) en los documentos sobre IA y ML de EKS. | 
|  **Almacenamiento los pesos de los modelos**  | Descargue los pesos de los modelos de un registro de modelos (como Hugging Face) y almacénelos en Amazon S3 para cargar rápidamente los modelos durante los eventos de inicio en frío o escalado vertical. | 
|  **Implementación del servidor de modelos**  | Cree una implementación de Kubernetes que ejecute un servidor de modelos (como vLLM) en los nodos de la GPU. El servidor de modelos transmite los pesos del S3 a la memoria de la GPU y expone una API compatible con OpenAI. | 
|  **Exposición del punto de conexión de inferencia**  | Cree un servicio de Kubernetes para proporcionar un punto de conexión de red estable. Utilice el reenvío de puertos para las pruebas o un equilibrador de carga como equilibrador de carga de aplicación (ALB) de AWS para el tráfico de producción. | 
|  **Supervisión y escalado**  | Utilice las métricas de Prometheus (tasa de solicitudes, rendimiento de los tokens, latencia, uso de la caché KV) para supervisar el rendimiento y configurar el escalado automático. | 

## Métricas de rendimiento de inferencia
<a name="_inference_performance_metrics"></a>

Para comprender el rendimiento de inferencia, es necesario hacer un seguimiento de las métricas de latencia y rendimiento:

 **Métricas de latencia** 
+  **Tiempo transcurrido hasta el primer token (TTFT):** tiempo transcurrido desde la llegada de la solicitud hasta el primer token generado. Es fundamental para las aplicaciones interactivas.
+  **Tiempo por token de salida (TPOT):** promedio de tiempo para generar cada token subsiguiente después del primero.
+  **Latencia de solicitud integral:** tiempo total desde el envío de la solicitud hasta la finalización de la respuesta completa.

 **Métricas de rendimiento** 
+  **Solicitudes por segundo:** total de solicitudes de inferencia servidas por segundo en todas las réplicas.
+  **Tokens de salida por segundo:** tasa de generación de tokens, medida como el total de tokens de salida dividido por el tiempo transcurrido.
+  **Uso de la GPU:** porcentaje de ciclos de computación de la GPU que se utilizan activamente para inferencia.
+  **Uso de la caché KV:** porcentaje de memoria caché KV asignada que se utiliza, lo que indica lo cerca que está el servidor de su capacidad.

## Reducción del tiempo de inicio en frío
<a name="_reducing_cold_start_time"></a>

Los contenedores de inferencia grandes (de 8 a 15 GB) y los pesos de los modelos (de 10 a 100 GB o más) pueden provocar un inicio lento del pod. Las siguientes técnicas minimizan los retrasos de inicio en frío:
+  **Extracción en paralelo de SOCI:** descarga y desempaqueta las capas de imágenes del contenedor de forma simultánea en lugar de secuencial. Se habilita de forma predeterminada en el modo automático de EKS para instancias de GPU.
+  **Transmisión de modelos desde S3:** herramientas como [Run:ai Model Streamer](https://github.com/run-ai/runai-model-streamer) transmiten los pesos de los modelos directamente desde Amazon S3 a la memoria de la GPU, lo que omite el disco local y reduce el tiempo de carga de minutos a segundos.
+  **Almacenamiento de imágenes en Amazon ECR:** al extraer imágenes de un repositorio de ECR regional a través de un punto de conexión de VPC, se evita la latencia de Internet para imágenes de contenedores de gran tamaño.
+  **Almacenamiento de instancias en caché:** las instancias de la familia G con discos NVMe locales pueden almacenar en caché capas de contenedores y artefactos de modelos, lo que acelera las extracciones posteriores en el mismo nodo.

## Qué implementará
<a name="_what_youll_deploy"></a>

El tutorial del [modelo de carga y servicio](ml-inference-load-serve-model.md) lo guía a través de la implementación de una aplicación de inferencia integral:

1.  **Descarga de los pesos de los modelos:** un trabajo de Kubernetes descarga el modelo Ministral-3-8B-Instruct de Hugging Face y lo carga en el bucket de S3.

1.  **Implementación de vLLM:** una implementación ejecuta vLLM con Run:ai Model Streamer para transmitir los pesos desde S3 directamente a la memoria de la GPU, lo que sirve una API compatible con OpenAI.

1.  **Supervisión con Grafana:** un ServiceMonitor conecta las métricas de Prometheus de vLLM a la pila de supervisión para crear paneles en tiempo real.

1.  **Implementación de un frontend de chat:** Open WebUI proporciona una interfaz de chat basada en navegador conectada al punto de conexión de vLLM.

El tutorial utiliza la infraestructura de clústeres de la sección [Configuración del clúster de Amazon EKS para cargas de trabajo de IA y ML](ml-cluster-setup.md) y funciona tanto con la ruta del modo automático de EKS como con la de Karpenter autoadministrado.