En esta página, se describen los conceptos clave, los beneficios y los pasos para ejecutar cargas de trabajo de inferencia de modelos de IA generativa en Google Kubernetes Engine (GKE) con las funciones 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 tus cargas de trabajo alojadas en contenedores, lo que la convierte en una opción atractiva para entregar tus modelos en desarrollo o producción. Con GKE, puedes usar las capacidades de Kubernetes para la orquestación, la escalabilidad y la alta disponibilidad para implementar y administrar de manera eficiente tus servicios de inferencia.
Reconociendo las demandas específicas de la inferencia de IA/AA, Google Cloud presentó las capacidades de IA generativa de GKE, un paquete de funciones diseñadas específicamente para mejorar y optimizar la entrega de inferencias en GKE. Para obtener más información sobre 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 de lenguaje extenso o un modelo 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 para manejar de manera eficiente cálculos complejos para el procesamiento por lotes o en tiempo real.
- Modelo: Es un modelo de IA generativa que aprendió 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 del dominio hasta redes neuronales masivas de varios miles de millones de parámetros que están optimizados para diversas tareas de lenguaje.
- Servidor de modelos: Es un servicio en contenedor 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 las unidades de procesamiento gráfico (GPU) de NVIDIA y las unidades de procesamiento tensorial (TPU) de Google, que se pueden conectar a nodos de GKE para acelerar los cálculos, en particular para las tareas de entrenamiento y de inferencia.
Beneficios de GKE para la inferencia
La entrega de inferencias en GKE ofrece varios beneficios:
- Relación precio-rendimiento eficiente: Obtén valor y velocidad para tus necesidades de entrega de inferencias. GKE te permite elegir entre una gama de aceleradores potentes (GPU y TPU), de modo que solo pagues por el rendimiento que necesitas.
- Implementación más rápida: Acelera tu tiempo de lanzamiento con las prácticas recomendadas, las calificaciones y las recomendaciones personalizadas que proporcionan las funciones de IA generativa de GKE.
- Rendimiento escalable: Escala el rendimiento con la supervisión precompilada mediante GKE Inference Gateway, Horizontal Pod Autoscaling (HPA) y 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 total: Aprovecha la portabilidad total con estándares abiertos. Google contribuye a las APIs clave de Kubernetes, incluidas Gateway y LeaderWorkerSet, y todas las APIs son portables con las distribuciones de Kubernetes.
- Compatibilidad con el ecosistema: Aprovecha el sólido ecosistema de GKE, que admite herramientas como Kueue para la administración y la creación de filas de recursos avanzadas, y Ray para el procesamiento distribuido, para facilitar la capacitación y la inferencia de modelos escalables y eficientes.
Cómo funciona la inferencia en GKE
En esta sección, se describen a grandes rasgos los pasos para usar GKE para la entrega de inferencias:
Contenedoriza tu modelo: Para implementar un modelo, debes contenerizar el servidor de modelos (como vLLM) y cargar las ponderaciones 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 contenedorizada se administra automáticamente en el manifiesto.
Crea un clúster de GKE: Crea un clúster de GKE para alojar tu implementación. Elige Autopilot para obtener una experiencia administrada o Standard 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.
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 tus contenedores en los nodos del clúster de GKE. Configura los nodos con tu servidor y modelo de modelos, incluidos los adaptadores de LoRA si es necesario.
Expón tu servicio de inferencia: Para que tu servicio de inferencia sea accesible, crea un servicio de Kubernetes que proporcione un extremo de red para tu implementación. Usa Inference Gateway para el balanceo de cargas y el enrutamiento inteligentes que se adaptan específicamente a las cargas de trabajo de inferencia de IA generativa.
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 las réplicas del modelo. El servidor de modelos procesa la solicitud, ejecuta el modelo y muestra la predicción.
Escala y supervisa tu implementación de inferencia: Escala la inferencia con HPA para ajustar automáticamente las réplicas en función de la CPU o la latencia. Usa el Inicio rápido de inferencia para obtener recomendaciones de escalamiento generadas automáticamente. Para hacer un seguimiento del rendimiento, usa Cloud Monitoring y Cloud Logging con la observabilidad precompilada, incluidos los 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 juntas o por separado para abordar desafíos clave en 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 la 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 adapte a tus necesidades. Puedes acceder a este servicio con la CLI de gcloud. Para obtener más información, consulta Ejecuta inferencias de prácticas recomendadas con las recetas de la Guía de inicio rápido de GKE Inference. |
|
Gateway de inferencia de GKE (versión preliminar) | Obtén enrutamiento basado en métricas, como el uso de la caché de KV, para mejorar la latencia. Para obtener más información, consulta Acerca de la puerta de enlace de inferencia de GKE. |
|
Planifica la inferencia
En esta sección, se abordan algunas de las consideraciones clave que debes tener en cuenta para tus cargas de trabajo de inferencia en GKE.
Rentabilidad
La publicación de modelos grandes de IA generativa puede ser costosa 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 y el nivel de cuantificación de tu modelo. 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 estas sugerencias y recomendaciones para maximizar la rentabilidad:
- Usa el Inicio rápido de inferencia para obtener los aceleradores recomendados según tus necesidades de rendimiento.
- Usa técnicas como la cuantización y el procesamiento por lotes de solicitudes para mejorar la eficiencia de la publicación. Para obtener más información, consulta Prácticas recomendadas para optimizar la inferencia de modelos de lenguaje grandes con GPUs.
Usa el ajuste de escala automático, que ajusta de forma dinámica los recursos según la demanda. Esto puede generar ahorros de costos, en especial para las cargas de trabajo fluctuantes. Para obtener más información, consulta las siguientes guías:
Rendimiento
Para optimizar el rendimiento de la inferencia en GKE, enfócate en las siguientes métricas de comparativas:
Indicadores de comparativas | Métrica (unidad) | Descripción |
---|---|---|
Latencia | Tiempo hasta el primer token (TTFT) (ms) | Es el tiempo que tarda en generarse 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) | Es el tiempo que tarda en generarse 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, la ITL mide el tiempo para generar cada token de salida individual. Luego, estas mediciones individuales se agregan para producir valores de media, mediana y percentiles, como el p90. | |
Latencia de la solicitud (ms) | Es el tiempo de extremo a extremo para completar una solicitud. | |
Capacidad de procesamiento | Solicitudes por segundo | Es la cantidad total de solicitudes que publicas por segundo. Ten en cuenta que esta métrica podría no ser una forma confiable de medir la capacidad de procesamiento de LLM, ya que puede variar mucho en función de las diferentes longitudes de contexto. |
Tokens de salida por segundo | Es una métrica común que se mide como total_output_tokens_generated_by_server / elapsed_time_in_seconds . |
|
Tokens de entrada por segundo | Se mide como total_input_tokens_generated_by_server / elapsed_time_in_seconds . |
|
Tokens por segundo | Se mide como total_tokens_generated_by_server / elapsed_time_in_seconds . Esta métrica cuenta los tokens de entrada y salida, lo que te permite comparar cargas de trabajo con tiempos de precarga altos en comparación con tiempos de decodificación altos. |
Para probar las comparativas de rendimiento de tus cargas de trabajo, sigue las instrucciones en AI-Hypercomputer/inference-benchmark.
Ten en cuenta estas 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 mejorar el rendimiento, usa técnicas de optimización del servidor de modelos, como el procesamiento por lotes y PagedAttention, que se encuentran en nuestra guía de prácticas recomendadas. Además, prioriza la administración eficiente de la memoria y el procesamiento de atención para obtener latencias entre tokens bajas y constantes.
- Usa métricas estandarizadas en todos 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 que elijas. GKE proporciona supervisió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.
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 suelen mostrar patrones de tráfico irregulares e impredecibles, 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 para capacidad garantizada, escalamiento rentable, programador dinámico de cargas de trabajo y VM Spot para la optimización de costos y el acceso a pedido para disponibilidad inmediata.
- Ajuste del tamaño de los recursos: por ejemplo, Google Cloud ofrece VMs A3 High más pequeñas con GPUs NVIDIA H100 (1g, 2g o 4g) para la escalabilidad rentable de la inferencia de IA generativa que admite VMs Spot.
- Clases de procesamiento para aceleradores: Puedes usar clases de procesamiento personalizadas para obtener un control más detallado, evitar el sobreaprovisionamiento y maximizar la disponibilidad de recursos con opciones de resguardo automático.
Actualizaciones de nodos
GKE automatiza gran parte del proceso de actualización, pero debes considerar las estrategias de actualización, en especial para la compatibilidad y las pruebas. Para las actualizaciones manuales, puedes elegir entre actualizaciones de aumento o azul-verde según la tolerancia de interrupción de tu carga de trabajo de inferencia. Las actualizaciones de aumento son rápidas, pero pueden afectar brevemente 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 TPU no admiten la migración en vivo, por lo que el mantenimiento requiere reiniciar los pods. Usa las notificaciones de GKE para prepararte ante interrupciones. Te recomendamos que uses presupuestos de interrupción de Pods (PDB) para garantizar que haya una cantidad mínima de Pods disponibles. Asegúrate de que tus Pods puedan controlar la rescisión de forma correcta. Los eventos de host único pueden interrumpir las porciones de TPU, por lo que debes planificar la redundancia. Para obtener más prácticas recomendadas, consulta Administra la interrupción de nodos de GKE para GPUs y TPUs.
Prueba ejemplos de inferencia
Encuentra ejemplos de implementación de GKE para modelos de IA generativa, aceleradores y servidores de modelos. Si estás empezando, te recomendamos que explores el instructivo Cómo entregar modelos abiertos de Gemma mediante GPUs en GKE con vLLM.
También puedes buscar un instructivo por palabra clave:
¿Qué sigue?
- Visita el portal de organización de IA/AA en GKE para explorar nuestras guías, instructivos y casos de uso oficiales para ejecutar cargas de trabajo de IA/AA en GKE.
- Para obtener más información sobre la optimización de la entrega de modelos, consulta Prácticas recomendadas para optimizar la inferencia de modelos de lenguaje grandes con GPUs. En él, se abordan las prácticas recomendadas para la entrega de LLM con GPUs en GKE, como la cuantización, el paralelismo de tensor y la administración de memoria.
- Explora ejemplos adicionales, prácticas recomendadas y herramientas en el repositorio de ai-on-gke de GitHub.