Información sobre la inferencia de modelos de IA y aprendizaje automático en GKE

En esta página se describen los conceptos clave, las ventajas y los pasos para ejecutar cargas de trabajo de inferencia de modelos de IA o aprendizaje automático generativos en Google Kubernetes Engine (GKE) mediante las funciones de IA generativa de GKE.

El servicio de inferencia es fundamental para desplegar tus modelos de IA generativa en aplicaciones reales. GKE proporciona una plataforma robusta y escalable para gestionar tus cargas de trabajo en contenedores, lo que la convierte en una opción atractiva para servir tus modelos en desarrollo o producción. Con GKE, puedes usar las funciones de Kubernetes para la orquestación, el escalado y la alta disponibilidad con el fin de desplegar y gestionar tus servicios de inferencia de forma eficiente.

Para satisfacer las necesidades específicas de la inferencia de IA y aprendizaje automático, Google Cloud ha presentado las funciones de IA generativa de GKE, un conjunto de funciones diseñadas específicamente para mejorar y optimizar el servicio de inferencia en GKE. Para obtener más información sobre funciones específicas, consulta las funciones de IA generativa de GKE.

Empezar a usar la inferencia de modelos de IA y aprendizaje automático en GKE

Puedes empezar a explorar la inferencia de modelos de IA y aprendizaje automático en GKE en cuestión de minutos. Puedes usar el nivel gratuito de GKE, que te permite empezar a usar Kubernetes sin incurrir en costes de gestión de clústeres.

  1. Ve a la página de IA y aprendizaje automático de GKE en la Google Cloud consola.

  2. Sigue los pasos de Desplegar modelos para desplegar un modelo en contenedor y un servidor de modelos.
  3. Consulta Planificar la inferencia, donde encontrarás directrices y recursos para planificar y ejecutar tus cargas de trabajo de inferencia en GKE.

Terminología

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

  • Inferencia: proceso de ejecutar un modelo de IA generativa, como un modelo de lenguaje grande o un modelo de difusión, en un clúster de GKE para generar texto, inserciones u otros resultados a partir de datos de entrada. La inferencia de modelos en GKE aprovecha los aceleradores para gestionar de forma eficiente los cálculos complejos en el procesamiento en tiempo real o por lotes.
  • Modelo: modelo de IA generativa que ha aprendido patrones a partir de datos y se usa para la inferencia. Los modelos varían en tamaño y arquitectura, desde modelos más pequeños específicos de un dominio hasta redes neuronales masivas con miles de millones de parámetros optimizadas para diversas tareas de lenguaje.
  • Servidor de modelos: un servicio en contenedores responsable de recibir solicitudes de inferencia y devolver inferencias. Este servicio puede ser una aplicación Python o una solución más sólida, como vLLM, JetStream, TensorFlow Serving o Triton Inference Server. El servidor de modelos se encarga de cargar los modelos en la memoria y ejecuta los cálculos en aceleradores para devolver las inferencias de forma eficiente.
  • Acelerador: hardware especializado, como las unidades de procesamiento gráfico (GPUs) de NVIDIA y las unidades de procesamiento de tensores (TPUs) de Google, que se pueden conectar a los nodos de GKE para acelerar los cálculos, sobre todo en las tareas de entrenamiento e inferencia.

Ventajas de GKE para la inferencia

El servicio de inferencia en GKE ofrece varias ventajas:

  • Rentabilidad eficiente: consigue valor y velocidad para tus necesidades de servicio de inferencia. GKE te permite elegir entre una amplia gama de potentes aceleradores (GPUs y TPUs), por lo que solo pagas por el rendimiento que necesitas.
  • Despliegue más rápido: acelera el lanzamiento de tus productos con prácticas recomendadas, cualificaciones y prácticas recomendadas personalizadas que ofrecen las funciones de IA generativa de GKE.
  • Rendimiento escalable: aumenta el rendimiento con la monitorización precompilada mediante GKE Inference Gateway, autoescalado horizontal de pods (HPA) y métricas personalizadas. Puedes ejecutar una serie de modelos preentrenados o personalizados, desde 8000 millones de parámetros hasta 671.000 millones de parámetros.
  • Portabilidad total: disfruta de una portabilidad total con estándares abiertos. Google contribuye a las APIs clave de Kubernetes, como Gateway y LeaderWorkerSet, y todas las APIs se pueden usar con distribuciones de Kubernetes.
  • Compatibilidad con el ecosistema: aprovecha el sólido ecosistema de GKE, que admite herramientas como Kueue para la gestión y la cola de recursos avanzadas, y Ray para la computación distribuida, con el fin de facilitar el entrenamiento y la inferencia de modelos eficientes y escalables.

Cómo funciona la inferencia en GKE

En esta sección se describen, a grandes rasgos, los pasos para usar GKE en el servicio de inferencias:

  1. Conteneriza tu modelo: despliega un modelo contenerizando el servidor del modelo (como vLLM) y cargando los pesos del modelo desde Cloud Storage o un repositorio como Hugging Face. Cuando usas Inicio rápido de inferencia de GKE, la imagen en contenedor se gestiona 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 disfrutar de una experiencia gestionada o Standard para personalizarla. Configura el tamaño del clúster, los tipos de nodos y los aceleradores. Para obtener una configuración optimizada, consulta la guía de inicio rápido de la inferencia.

  3. Despliega tu modelo como un despliegue de Kubernetes: crea un despliegue de Kubernetes para gestionar tu servicio de inferencia. Un Deployment es un objeto de la API de Kubernetes que te permite ejecutar varias réplicas de pods distribuidas entre los nodos de un clúster. Especifica la imagen de Docker, las réplicas y los ajustes. Kubernetes extrae la imagen y ejecuta los contenedores en los nodos del clúster de GKE. Configura los pods con tu servidor y modelo, incluidos los adaptadores 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 punto de conexión de red a tu Deployment. Usa Inference Gateway para disfrutar de un balanceo de carga y un enrutamiento inteligentes diseñados específicamente para cargas de trabajo de inferencia de IA generativa. Usa Inference Gateway para disfrutar de un balanceo de carga inteligente adaptado a las cargas de trabajo de IA generativa o consulta la comparación de estrategias de balanceo de carga para elegir la opción que mejor se adapte a tus necesidades.

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

  6. Escala y monitoriza tu despliegue de inferencia: escala la inferencia con HPA para ajustar automáticamente las réplicas en función de la CPU o la latencia. Usa la guía de inicio rápido de inferencia para obtener recomendaciones de escalado generadas automáticamente. Para monitorizar el rendimiento, usa Cloud Monitoring y Cloud Logging con observabilidad precompilada, incluidos los paneles de control de servidores de modelos populares, como vLLM.

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

Funciones de IA generativa de GKE

Puedes usar estas funciones juntas o por separado para abordar los principales retos a la hora de servir modelos de IA generativa y mejorar la utilización de los recursos en tu entorno de GKE, sin coste adicional.

Nombre Descripción Ventajas
Guía de inicio rápido de inferencia de GKE

Analiza el rendimiento y la rentabilidad de tus cargas de trabajo de inferencia. Especifica las necesidades de tu empresa y recibe las prácticas recomendadas personalizadas para la combinación de aceleradores, configuraciones de escalado y almacenamiento, y servidores de modelos que mejor se adapte a tus necesidades. Puedes acceder a este servicio con la CLI de gcloud y la Google Cloud consola.

Para obtener más información, consulta Analizar el rendimiento y los costes de la inferencia de modelos con GKE Inference Quickstart.

  • Ahorra tiempo automatizando los pasos iniciales de elección y configuración de tu infraestructura.
  • Te permite mantener el control total sobre tu configuración de Kubernetes para seguir ajustándola.
GKE Inference Gateway (vista previa)

Obtén rutas basadas en métricas, como la utilización de la caché de clave-valor, para mejorar la latencia.

Para obtener más información, consulta Acerca de GKE Inference Gateway.

  • Comparte modelos ajustados que usen archivos LoRA con selección de endpoints basada en la afinidad para optimizar los costes.
  • Consigue una alta disponibilidad accediendo de forma dinámica a la capacidad de GPU y TPU en diferentes regiones.
  • Mejora la seguridad de tus modelos con las políticas del complemento Model Armor.
Aceleradores de carga de peso del modelo

Accede rápidamente a los datos de Cloud Storage con Cloud Storage FUSE y descargas paralelas y almacenamiento en caché.

Para las cargas de trabajo de inferencia que requieren un rendimiento de escalado horizontal constante, Google Cloud Hyperdisk ML es un disco conectado a la red que se puede asociar a un máximo de 2500 pods.

  • Optimiza el tiempo de inicio de la inferencia minimizando la latencia del modelo de carga de peso en GKE.
  • En las implementaciones con escalado de nodos limitado, puedes usar Cloud Storage FUSE para montar los pesos del modelo.
  • Para escenarios a gran escala que exigen un acceso coherente y de baja latencia a grandes pesos de modelos, Hyperdisk ML de Google Cloud ofrece una solución de almacenamiento en bloques específica.

Planificación de la inferencia

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

Rentabilidad

El servicio de modelos de IA generativa grandes puede ser caro debido al uso de aceleradores, por lo que debes centrarte en utilizar los recursos de forma eficiente. Es fundamental seleccionar el tipo de máquina y el acelerador adecuados para que la memoria del acelerador coincida con el tamaño del modelo y el nivel de cuantización. Por ejemplo, las instancias G2 con GPUs NVIDIA L4 pueden ser rentables para modelos más pequeños, mientras que las instancias A3 son más adecuadas para modelos más grandes.

Sigue estos consejos y recomendaciones para maximizar la rentabilidad:

Rendimiento

Para optimizar el rendimiento de la inferencia en GKE, céntrate en las siguientes métricas de referencia:

Indicadores de referencia Métrica (unidad) Descripción
Latencia Tiempo hasta el primer token (TTFT) (ms) Tiempo que se tarda en generar el primer token de una solicitud.
Tiempo normalizado por token de salida (NTPOT) (ms) Latencia de la solicitud normalizada por el número de tokens de salida, medida como request_latency / total_output_tokens.
Tiempo por token de salida (TPOT) (ms) Tiempo que se tarda en 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 de toda la solicitud, ITL mide el tiempo que se tarda en generar cada token de salida. Estas mediciones individuales se agregan para obtener valores medios, medianas y percentiles, como el p90.
Latencia de solicitudes (ms) Tiempo total necesario para completar una solicitud.
Rendimiento Solicitudes por segundo Número total de solicitudes que sirves por segundo. Ten en cuenta que esta métrica puede no ser una forma fiable de medir el rendimiento de LLM, ya que puede variar mucho en función de la longitud del contexto.
Tokens de salida por segundo Métrica habitual que se mide como total_output_tokens_generated_by_server / elapsed_time_in_seconds.
Tokens de entrada por segundo Medida como total_input_tokens_generated_by_server / elapsed_time_in_seconds.
Tokens por segundo Medida 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 cargas de trabajo con tiempos de prellenado altos y tiempos de decodificación altos.

Ten en cuenta estos consejos y recomendaciones adicionales para mejorar el rendimiento:

  • Para obtener los aceleradores recomendados en función de tus necesidades de rendimiento, consulta la guía de inicio rápido de inferencia.
  • Para mejorar el rendimiento, utiliza técnicas de optimización de servidores de modelos, como la creación de lotes y PagedAttention, que se describen en nuestra guía de prácticas recomendadas. Además, prioriza la gestión eficiente de la memoria y el cálculo de la atención para conseguir latencias entre tokens constantemente bajas.
  • Usa métricas estandarizadas en los servidores de modelos (como Hugging Face TGI, vLLM o NVIDIA Triton) para mejorar el autoescalado y el balanceo de carga, lo que puede ayudarte a conseguir un mayor rendimiento con la latencia que elijas. GKE ofrece monitorización automática de aplicaciones para varios servidores de modelos.
  • Usa funciones de la infraestructura de red de GKE, como Inference Gateway, para minimizar la latencia.
  • Usa Cloud Storage FUSE con descargas paralelas y almacenamiento en caché, o Hyperdisk ML para acelerar la carga de los pesos del modelo desde el almacenamiento persistente.

  • Para el entrenamiento o la inferencia a gran escala, usa Pathways. Pathways simplifica los cálculos de aprendizaje automático a gran escala al permitir que un solo cliente JAX coordine las cargas de trabajo en varios sectores de TPU grandes. Para obtener más información, consulta Pathways.

Alcanzabilidad

Asegurarse de que se pueden obtener recursos (CPUs, GPUs y TPUs) es fundamental para mantener el rendimiento, la disponibilidad y la rentabilidad de tus cargas de trabajo de inferencia. Las cargas de trabajo de inferencia suelen mostrar patrones de tráfico impredecibles y con picos, lo que puede poner a prueba la capacidad del hardware. GKE aborda estos problemas con funciones como las siguientes:

  • Opciones de consumo de recursos: elige entre opciones como reservas para garantizar la capacidad, escalado rentable, Dynamic Workload Scheduler, y máquinas virtuales de acceso puntual para optimizar los costes y acceder bajo demanda para disfrutar de disponibilidad inmediata.
  • Ajuste del tamaño de los recursos: por ejemplo, Google Cloud ofrece máquinas virtuales A3 High más pequeñas con GPUs NVIDIA H100 (1g, 2g o 4g) para un escalado de inferencia de IA generativa rentable que admite máquinas virtuales Spot.
  • Clases de computación para aceleradores: puedes usar clases de computación personalizadas para tener un control más granular, evitar el aprovisionamiento excesivo y maximizar la disponibilidad de recursos con opciones de fallback automáticas.

Actualizaciones de nodo

GKE automatiza gran parte del proceso de actualización, pero debes tener en cuenta las estrategias de actualización, especialmente en lo que respecta a la compatibilidad y las pruebas. En el caso de las actualizaciones manuales, puedes elegir entre las actualizaciones de picos o las azules/verdes en función de la tolerancia a las interrupciones de tu carga de trabajo de inferencia. Las actualizaciones de Surge son rápidas, pero pueden afectar brevemente a los servicios. Las actualizaciones azul-verde ofrecen un tiempo de inactividad casi nulo, lo que es fundamental para la inferencia en tiempo real. Para obtener más información, consulta Estrategias de actualización de nodos.

Las GPUs y las TPUs no admiten la migración activa, por lo que el mantenimiento requiere reiniciar los pods. Usa las notificaciones de GKE para prepararte ante las interrupciones. Te recomendamos que uses presupuestos de interrupción de pods (PDBs) para asegurarte de que haya un número mínimo de pods disponibles. Asegúrate de que tus pods puedan gestionar la finalización correctamente. Los eventos de un solo host pueden interrumpir las porciones de TPU, por lo que debes planificar la redundancia. Para obtener más información sobre las prácticas recomendadas, consulta Gestionar las interrupciones de nodos de GKE para GPUs y TPUs.

Probar ejemplos de inferencia

Consulta ejemplos de despliegue de GKE para modelos de IA generativa, aceleradores y servidores de modelos. Si acabas de empezar, te recomendamos que consultes el tutorial Sirve modelos abiertos de Gemma con GPUs en GKE con vLLM.

También puedes buscar un tutorial por palabra clave:

Accelerator Servidor de modelos Tutorial
GPUs vLLM Servir LLMs como DeepSeek-R1 671B o Llama 3.1 405B en GKE
GPUs vLLM Servir modelos Llama con GPUs en GKE con vLLM
GPUs vLLM Sirve modelos abiertos de Gemma con GPUs en GKE con vLLM
GPUs vLLM Servir un LLM con GKE Inference Gateway
GPUs vLLM Servir LLMs abiertos en GKE con una arquitectura preconfigurada
GPUs NVIDIA Triton Servir un modelo con una sola GPU en GKE
GPUs Ray Serve Servir un LLM en GPUs L4 con Ray
GPUs TGI Servir un LLM con varias GPUs en GKE
GPUs NVIDIA Triton Sirve modelos abiertos de Gemma con GPUs en GKE con Triton y TensorRT-LLM
GPUs Hugging Face TGI Servir modelos abiertos de Gemma mediante GPUs en GKE con Hugging Face TGI
GPUs TensorFlow Serving Servir un modelo con una sola GPU en GKE
TPUs vLLM Servir un LLM mediante TPU Trillium en GKE con vLLM
TPUs vLLM Servir un LLM mediante TPUs en GKE con KubeRay
TPUs JetStream Servir un LLM mediante TPUs en GKE con JetStream y PyTorch
TPUs JetStream Sirve Gemma mediante TPUs en GKE con JetStream
TPUs MaxDiffusion Servir Stable Diffusion XL (SDXL) mediante TPUs en GKE con MaxDiffusion
TPUs TPU óptima Servir modelos de código abierto mediante TPUs en GKE con Optimum TPU

Siguientes pasos