View a markdown version of this page

Ejecución de cargas de trabajo de inferencia de IA y ML en Amazon EKS - Amazon EKS

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

sugerencia

Regístrese 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

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

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, SGLang, Triton Inference Server y Text Generation Inference (TGI).

  • 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

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

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

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 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á

El tutorial del modelo de carga y servicio 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.

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

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

  4. 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 y funciona tanto con la ruta del modo automático de EKS como con la de Karpenter autoadministrado.