Información acerca de la inferencia de modelos en GKE


En esta página, se describen los conceptos, los beneficios y los pasos clave para ejecutar cargas de trabajo de inferencia de modelos de IA generativa en Google Kubernetes Engine (GKE) mediante las capacidades de IA generativa de GKE.

La entrega de inferencias es fundamental para implementar tus modelos de IA generativa en aplicaciones del mundo real. GKE proporciona una plataforma sólida y escalable para administrar las cargas de trabajo en contenedores, lo que la convierte en una opción convincente para entregar tus modelos en desarrollo o producción. Con GKE, puedes usar las capacidades de Kubernetes para la organización, el escalamiento y la alta disponibilidad a fin de implementar y administrar de manera eficiente tus servicios de inferencia.

En el reconocimiento de las demandas específicas de la inferencia de IA/AA, Google Cloud presentó las funciones de IA generativa de GKE, un conjunto de funciones diseñadas específicamente para mejorar y optimizar la entrega de inferencias en GKE. Para obtener más información sobre las funciones específicas, consulta Funciones de IA generativa de GKE.

Terminología

En esta página, se usa la siguiente terminología relacionada con la inferencia en GKE:

  • Inferencia: Es el proceso de ejecutar un modelo de IA generativa, como un modelo grande de lenguaje o de difusión, dentro de un clúster de GKE para generar texto, incorporaciones y otros resultados a partir de datos de entrada. La inferencia de modelos en GKE aprovecha los aceleradores a fin de controlar de manera eficiente los cálculos complejos para el procesamiento en tiempo real o por lotes.
  • Modelo: Un modelo de IA generativa que aprendió patrones de los datos y se usa para inferencias. Los modelos varían en tamaño y arquitectura, desde modelos más pequeños específicos de dominios hasta enormes redes neuronales de parámetros de varios miles de millones que están optimizadas para diversas tareas de lenguaje.
  • Servidor de modelos: Es un servicio en contenedores responsable de recibir solicitudes de inferencia y mostrar predicciones. Este servicio puede ser una app de Python o una solución más sólida, como vLLM, JetStream, TensorFlow Serving o Triton Inference Server. El servidor de modelos controla la carga de modelos en la memoria y ejecuta cálculos en aceleradores para mostrar predicciones de manera eficiente.
  • Acelerador: hardware especializado, como unidades de procesamiento gráfico (GPU) de NVIDIA y unidades de procesamiento tensorial (TPU) de Google, que se puede conectar a los nodos de GKE para acelerar los procesamientos, en especial para las tareas de inferencia y entrenamiento.

Beneficios de GKE para la inferencia

La entrega de inferencias en GKE proporciona varios beneficios:

  • Relación precio-rendimiento eficiente: Obtén valor y velocidad para tus necesidades de entrega de inferencia. GKE te permite elegir entre una variedad de aceleradores potentes (GPU y TPU) para que solo pagues por el rendimiento que necesites.
  • Implementación más rápida: Acelera el tiempo de salida al mercado con las prácticas recomendadas, las calificaciones y las prácticas recomendadas personalizadas que proporcionan las funciones de IA generativa de GKE.
  • Rendimiento escalable: Escala horizontalmente el rendimiento con supervisión compilada previamente mediante la puerta de enlace de inferencia de GKE, el ajuste de escala automático horizontal de Pods (HPA) y las métricas personalizadas. Puedes ejecutar una variedad de modelos previamente entrenados o personalizados, desde 8,000 millones de parámetros hasta 671,000 millones de parámetros.
  • Portabilidad completa: Benefíciate de la portabilidad completa con estándares abiertos. Google contribuye a las APIs clave de Kubernetes, incluidas Gateway y LeaderWorkerSet, y todas las APIs son portátiles con distribuciones de Kubernetes.
  • Compatibilidad con el ecosistema: Se basa en el sólido ecosistema de GKE, que es compatible con herramientas como Kueue para la puesta en cola y la administración de recursos avanzadas, y Ray para la computación distribuida, lo que facilita el entrenamiento y la inferencia de modelos escalables y eficientes.

Cómo funciona la inferencia en GKE

En esta sección, se describen, en un nivel alto, los pasos para usar GKE con el fin de entregar inferencias:

  1. Aloja tu modelo en contenedores: implementa un modelo a través de la creación de contenedores en el servidor del modelo (como vLLM) y la carga de los pesos del modelo desde Cloud Storage o un repositorio como Hugging Face. Cuando usas la Guía de inicio rápido de inferencia de GKE, la imagen alojada en contenedores se administra automáticamente en el manifiesto.

  2. Crea un clúster de GKE: crea un clúster de GKE para alojar tu implementación. Elige Autopilot para una experiencia administrada o Estándar para la personalización. Configura el tamaño del clúster, los tipos de nodos y los aceleradores. Para obtener una configuración optimizada, usa la Guía de inicio rápido de inferencia.

  3. Implementa tu modelo como una implementación de Kubernetes: crea una implementación de Kubernetes para administrar tu servicio de inferencia. Un Deployment es un objeto de la API de Kubernetes que te permite ejecutar varias réplicas de Pods que se distribuyen entre los nodos de un clúster. Especifica la imagen, las réplicas y la configuración de Docker. Kubernetes extrae la imagen y ejecuta los contenedores en los nodos del clúster de GKE. Configura los Pods con el servidor del modelo y el modelo, incluidos los adaptadores de LoRA si es necesario.

  4. Expón tu servicio de inferencia: Haz que tu servicio de inferencia sea accesible creando un servicio de Kubernetes para proporcionar un extremo de red para tu implementación. Usa Inference Gateway a fin de obtener un balanceo de cargas y un enrutamiento inteligentes diseñados específicamente para cargas de trabajo de inferencia de IA generativa.

  5. Controla las solicitudes de inferencia: envía datos desde los clientes de tu aplicación al extremo de tu servicio en el formato esperado (JSON, gRPC). Si usas un balanceador de cargas, este distribuye las solicitudes a réplicas de modelo. El servidor de modelos procesa la solicitud, ejecuta el modelo y muestra la predicción.

  6. Escala y supervisa tu implementación de inferencia: escala la inferencia con el HPA para ajustar automáticamente las réplicas según la CPU o la latencia. Usa la Guía de inicio rápido de inferencia para obtener recomendaciones de escalamiento generadas automáticamente. Para realizar un seguimiento del rendimiento, usa Cloud Monitoring y Cloud Logging con observabilidad compilada previamente, incluidos paneles para servidores de modelos populares, como vLLM.

Para ver ejemplos detallados que usan modelos, servidores de modelos y aceleradores específicos, consulta Ejemplos de inferencia.

Capacidades de IA generativa de GKE

Puedes usar estas funciones en conjunto o de forma individual para abordar desafíos clave de la entrega de modelos de IA generativa y mejorar el uso de recursos en tu entorno de GKE, sin costo adicional.

Nombre Descripción Beneficios
Guía de inicio rápido de inferencia de GKE (versión preliminar)

Especifica las necesidades de tu empresa y obtén prácticas recomendadas personalizadas para la combinación de aceleradores, configuraciones de escalamiento y servidores de modelos que mejor se adapten a tus necesidades. Puedes acceder a este servicio con la gcloud CLI.

Para obtener más información, consulta Ejecuta inferencias de prácticas recomendadas con recetas de inicio rápido de inferencia de GKE.

  • Te ahorra tiempo, ya que automatiza los pasos iniciales de elección y configuración de tu infraestructura.
  • Te permite mantener el control total de la configuración de Kubernetes para realizar ajustes adicionales.
Puerta de enlace de inferencia de GKE (vista previa)

Obtén el enrutamiento basado en métricas, como el uso de caché KV, para una mejor latencia.

Para obtener más información, consulta Acerca de la puerta de enlace de inferencia de GKE.

  • Comparte modelos ajustados que usen archivos LoRA, con selección de extremos basada en afinidad para la rentabilidad.
  • Obtén alta disponibilidad accediendo de forma dinámica a la capacidad de GPU y TPU en todas las regiones.
  • Mejora la seguridad de tus modelos con las políticas del complemento de Model Armor.

Planificación para la inferencia

En esta sección, se tratan algunas de las consideraciones clave que debes tener en cuenta para las cargas de trabajo de inferencia en GKE.

Rentabilidad

La entrega de modelos grandes de IA generativa puede ser costoso debido al uso de aceleradores, por lo que debes enfocarte en el uso eficiente de los recursos. Seleccionar el tipo de máquina y el acelerador correctos es fundamental para garantizar que la memoria del acelerador coincida con el tamaño del modelo y el nivel de cuantización. Por ejemplo, las instancias G2 con GPU NVIDIA L4 pueden ser rentables para modelos más pequeños, mientras que las instancias A3 son más adecuadas para los más grandes.

Sigue estas sugerencias y recomendaciones para maximizar la rentabilidad:

Rendimiento

Para optimizar el rendimiento de la inferencia en GKE, enfócate en las siguientes métricas comparativas:

Indicadores comparativos Métrica (unidad) Descripción
Latencia Tiempo hasta el primer token (TTFT) (ms) Tiempo que lleva generar el primer token de una solicitud.
Tiempo normalizado por token de salida (NTPOT) (ms) Latencia de solicitud normalizada por la cantidad de tokens de salida, medida como request_latency / total_output_tokens.
Tiempo por token de salida (TPOT) (ms) Tiempo que lleva generar un token de salida, medido como (request_latency - time_to_first_token) / (total_output_tokens - 1).
Latencia entre tokens (ITL) (ms) Mide la latencia entre dos generaciones de tokens de salida. A diferencia de TPOT, que mide la latencia en toda la solicitud, ITL mide el tiempo para generar cada token de salida individual. Luego, estas mediciones individuales se agregan para producir valores medios, medios y percentiles, como p90.
Latencia de la solicitud (ms) Tiempo de extremo a extremo para completar una solicitud.
Capacidad de procesamiento Solicitudes por segundo La cantidad total de solicitudes que entregas por segundo. Ten en cuenta que esta métrica podría no ser una forma confiable de medir la capacidad de procesamiento del LLM, ya que puede variar ampliamente según las diferentes longitudes del contexto.
Tokens de salida por segundo Una métrica común que se mide como total_output_tokens_generated_by_server / elapsed_time_in_seconds.
Tokens de entrada por segundo Medido como total_input_tokens_generated_by_server / elapsed_time_in_seconds.
Tokens por segundo Medido como total_tokens_generated_by_server / elapsed_time_in_seconds. Esta métrica cuenta tanto los tokens de entrada como los de salida, lo que te ayuda a comparar las cargas de trabajo con tiempos de llenado previos y de decodificación altos.

Si deseas probar las comparativas de rendimiento de tus cargas de trabajo, sigue las instrucciones en AI-Hypercomputer/inference-benchmark.

Considera las siguientes sugerencias y recomendaciones adicionales para mejorar el rendimiento:

  • Para obtener los aceleradores recomendados según tus necesidades de rendimiento, usa la Guía de inicio rápido de inferencia.
  • Para aumentar el rendimiento, usa técnicas de optimización de servidores de modelos, como el procesamiento por lotes y PagedAttention, en nuestra guía de prácticas recomendadas. Además, prioriza la administración eficiente de la memoria y el procesamiento de la atención para tener latencias entre tokens siempre bajas.
  • Usa métricas estandarizadas en los servidores de modelos (como Hugging Face TGI, vLLM o NVIDIA Triton) para mejorar el ajuste de escala automático y el balanceo de cargas, lo que puede ayudarte a lograr una mayor capacidad de procesamiento con la latencia elegida. GKE proporciona supervisión automática de aplicaciones para varios servidores de modelos.
  • Usa las funciones de la infraestructura de red de GKE, como Puerta de enlace de inferencia para minimizar la latencia.

Capacidad de obtención

Garantizar la disponibilidad de los recursos (CPU, GPU y TPU) es fundamental para mantener el rendimiento, la disponibilidad y la rentabilidad de tus cargas de trabajo de inferencia. Las cargas de trabajo de inferencia a menudo presentan patrones de tráfico impredecibles y poco estables, lo que puede desafiar la capacidad del hardware. GKE aborda estos desafíos con funciones como las siguientes:

  • Opciones de consumo de recursos: Elige entre opciones como reservas de capacidad garantizada, escalamiento rentable, Dynamic Workload Scheduler y VMs Spot para la optimización de costos y acceso a pedido para la disponibilidad inmediata.
  • Redimensionamiento de recursos: Por ejemplo, Google Cloud ofrece VMs A3 High más pequeñas con GPU NVIDIA H100 (1g, 2g o 4g) para un escalamiento rentable de inferencias de IA generativa que admiten VMs Spot.
  • Clases de procesamiento para aceleradores: Puedes usar clases de procesamiento personalizadas para tener un control más detallado, evitar el aprovisionamiento excesivo y maximizar la capacidad de obtención de recursos con opciones de resguardo automático.

Actualizaciones de nodos

GKE automatiza gran parte del proceso de actualización, pero debes considerar estrategias de actualización, en especial para la compatibilidad y las pruebas. En el caso de las actualizaciones manuales, puedes elegir entre actualizaciones de aumento o azul-verde según la tolerancia a interrupciones de tu carga de trabajo de inferencia. Las actualizaciones de aumento son rápidas, pero pueden afectar los servicios de forma breve. Las actualizaciones azul-verde ofrecen tiempo de inactividad casi nulo, lo que es esencial para la inferencia Para obtener más información, consulta Estrategias de actualización de nodos.

Las GPU y TPU no admiten la migración en vivo, por lo que el mantenimiento requiere reiniciar los Pods. Usa las notificaciones de GKE para prepararte para las interrupciones. Recomendamos usar Presupuestos de interrupción de Pods (PDB) para garantizar que una cantidad mínima de Pods permanezca disponible. Asegúrate de que tus Pods puedan manejar correctamente la finalización. Los fragmentos de TPU pueden interrumpirse a causa de eventos de host único, así que planifica con redundancia. Si deseas conocer más prácticas recomendadas, consulta Administra la interrupción de los nodos de GKE para GPU y TPU.

Prueba los ejemplos de inferencia

Encuentra ejemplos de implementación de GKE para modelos de IA generativa, aceleradores y servidores de modelos. Si recién comienzas, te recomendamos que explores el instructivo Entrega modelos abiertos de Gemma mediante GPU en GKE con vLLM.

O bien, busca un instructivo por palabra clave:

Accelerator Servidor de modelos Instructivo
GPU vLLM Entrega LLM como DeepSeek-R1 671B o Llama 3.1 405B en GKE
GPU vLLM Entrega modelos de Llama usando GPU en GKE con vLLM
GPU vLLM Entrega modelos abiertos de Gemma mediante GPU en GKE con vLLM
GPU vLLM Entrega un LLM con la puerta de enlace de inferencia de GKE
GPU NVIDIA Triton Entrega un modelo con una sola GPU en GKE
GPU Mantarraya Entrega un LLM en GPU L4 con Ray
GPU TGI Entrega un LLM con varias GPU en GKE
GPU NVIDIA Triton Entrega modelos abiertos de Gemma mediante GPU en GKE con Triton y TensorRT-LLM
GPU TGI de Hugging Face Entrega modelos abiertos de Gemma mediante GPU en GKE con TGI de Hugging Face
GPU TensorFlow Serving Entrega un modelo con una sola GPU en GKE
TPU vLLM Entrega un LLM mediante TPU Trillium en GKE con vLLM
TPU vLLM Entrega un LLM usando TPU en GKE con KubeRay
TPU JetStream Entrega un LLM usando TPU en GKE con JetStream y PyTorch
TPU JetStream Entrega Gemma mediante TPU en GKE con JetStream
TPU MaxDiffusion Entrega Stable Diffusion XL (SDXL) mediante TPU en GKE con MaxDiffusion
TPU TPU óptima Entrega modelos de código abierto mediante TPU en GKE con Optimum TPU

¿Qué sigue?