Este documento es la primera parte de una serie destinada a ingenieros de aprendizaje automático (AA) que no tienen experiencia en el uso de Google Kubernetes Engine (GKE) y desean comenzar a ejecutar cargas de trabajo de inferencia en GKE lo antes posible.
En esta serie, no intentaremos enseñarte todas las opciones disponibles de GKE. En cambio, te proporcionaremos la información básica que necesitas saber para que tus cargas de trabajo se ejecuten en GKE. Esta serie incluye los siguientes documentos:
- ¿Por qué usar GKE para la inferencia de IA/AA? (este documento)
- Acerca de la inferencia de modelos de IA/AA en GKE
- Conceptos simplificados de ajuste de escala automático para cargas de trabajo de IA/AA en GKE
Como ingeniero de plataformas de IA/AA, puedes usar GKE para administrar las implementaciones de tus modelos. GKE es un servicio que te permite automatizar la implementación, el ajuste de escala y la supervisión de tus cargas de trabajo de inferencia basadas en Kubernetes y la infraestructura de procesamiento en la que se ejecutan tus cargas de trabajo. En este documento, se abarcan algunos de los beneficios clave del uso de GKE para la inferencia de modelos, incluidos los siguientes:
- Rendimiento coherente de la aplicación
- Acceso optimizado a hardware de inferencia especializado
- Ajuste de escala automático de tus cargas de trabajo de inferencia
- Supervisión y registro automatizados del rendimiento y el estado de la carga de trabajo
- Portabilidad y flexibilidad del uso de estándares abiertos y tecnologías de código abierto
Antes de comenzar
Antes de leer este documento, debes estar familiarizado con lo siguiente:
- Conceptos fundamentales de Kubernetes: Obtén información sobre los contenedores, los Pods, los nodos y los clústeres, y cómo se relacionan entre sí.
- Modos de operación de GKE: Obtén información sobre los clústeres de GKE Autopilot y Standard sus usos y sus diferencias.
Empaqueta tus modelos para obtener un rendimiento coherente
La inferencia de modelos coherente y confiable es fundamental para tu aplicación de IA, y GKE puede reducir la complejidad operativa de la administración de la inferencia a gran escala. Cuando empaquetas tu modelo entrenado, el servidor de inferencia y todas las dependencias en un contenedor, creas un artefacto estandarizado y portátil que se ejecuta en GKE. La contenedorización ayuda a reducir los errores causados por dependencias no coincidentes o entornos incoherentes. GKE implementa y administra estos contenedores automáticamente. Se encarga de tareas como reiniciar las cargas de trabajo que fallan o volver a aprovisionar recursos para ayudar a estabilizar el rendimiento de tus cargas de trabajo de IA/AA.
Usa GPU y TPU para reducir la latencia de entrega
La latencia es un problema para las cargas de trabajo de inferencia, y algunos modelos complejos dependen de aceleradores de hardware, como GPU y TPU, para acelerar la entrega de inferencia. GKE optimiza el proceso de uso de GPU o TPU para tus cargas de trabajo de inferencia sensibles a la latencia, ya que simplifica el aprovisionamiento y la administración de hardware. Eliges las configuraciones de hardware específicas que mejor se adapten a tus requisitos de rendimiento y costo, y GKE aprovisiona automáticamente los nodos con el hardware seleccionado para ejecutar tus cargas de trabajo. GKE también automatiza los pasos de configuración que suelen requerir configuración manual en Kubernetes, como la instalación de controladores de NVIDIA. Para obtener un control más detallado sobre la configuración de los nodos, puedes usar ComputeClasses personalizadas para crear perfiles de hardware específicos y reutilizables que GKE usa cuando aprovisiona nodos.
GKE también ofrece capacidades de administración de recursos para que puedas usar de manera más eficiente los recursos de TPU y GPU para la entrega de inferencia. Por ejemplo, puedes mejorar el uso de la GPU alojando varios modelos en un solo servidor de GPU mediante el uso del uso compartido de GPU , o reducir los costos de los trabajos de inferencia tolerantes a errores ejecutándolos en con aceleradores. Para cargas de trabajo pequeñas o medianas con requisitos de demanda fluctuantes o duraciones cortas, puedes usar Flex-start, que proporciona una técnica flexible y rentable para consumir recursos de procesamiento especializados, como GPU o TPU. Estas capacidades te ayudan a maximizar el uso de los recursos del acelerador mientras optimizas la latencia y el costo de entrega.
Controla automáticamente los patrones de tráfico fluctuantes
El tráfico y la carga en las cargas de trabajo de inferencia en tiempo real pueden ser impredecibles y dinámicos. Un aumento repentino en la demanda puede generar un aumento de la latencia y una reducción del rendimiento. GKE ofrece un enfoque de ajuste de escala automático de varias capas para que puedas agregar o quitar recursos automáticamente para satisfacer la demanda de inferencia variable. Por ejemplo, puedes usar el Horizontal Pod Autoscaler (HPA) para ajustar automáticamente la cantidad de Pods en una Deployment o el escalador automático de clúster para ajustar automáticamente la cantidad de nodos en un grupo de nodos existente. Si usas las capacidades de ajuste de escala automático de GKE, puedes hacer coincidir de manera eficiente la cantidad de recursos que necesita tu carga de trabajo de inferencia con la cantidad de demanda de la aplicación.
Supervisa el estado y el rendimiento de tu carga de trabajo de inferencia
GKE se integra en la Cloud de Confiance by S3NS suite de observabilidad (Cloud Logging y Cloud Monitoring), y puedes usar funciones de observabilidad integradas para supervisar el estado y el rendimiento de tus cargas de trabajo de inferencia. Estas funciones de observabilidad te brindan información y visibilidad sobre el rendimiento de tu carga de trabajo después de implementarla. Por ejemplo, es posible que te preguntes si tu modelo funciona como se espera o si tu carga de trabajo cumple con tus requisitos de latencia y exactitud.
GKE informa automáticamente las métricas de infraestructura, como la CPU, la memoria y el uso del acelerador. Para responder preguntas sobre el rendimiento específico del modelo, puedes usar Google Cloud Managed Service para Prometheus o enviar métricas personalizadas desde tu aplicación de inferencia a Cloud Monitoring. Por ejemplo, puedes configurar la supervisión automática de aplicaciones y supervisar las métricas clave de inferencia, como las solicitudes por segundo (RPS); supervisar el desvío de conceptos mediante el análisis de métricas específicas del modelo, como la distribución de datos de entrada, y depurar problemas mediante el análisis histórico de registros.
Usa GKE para obtener portabilidad y flexibilidad
Si usas estándares abiertos, como contenedores, y tecnologías de código abierto, como Kubernetes, GKE te brinda la libertad de trasladar tus cargas de trabajo de entrega de inferencia a diferentes ubicaciones y usar diferentes recursos y herramientas a medida que cambian tus requisitos. Por ejemplo, puedes desarrollar y probar tu aplicación de inferencia en GKE y, luego, implementar esa misma aplicación en contenedores en tu entorno local para la producción.
En conclusión, puedes usar GKE para optimizar la forma en que trasladas tus modelos de IA/AA del desarrollo a la producción. GKE controla muchas complejidades relacionadas con la administración de la infraestructura, lo que significa que puedes enfocarte en ejecutar tus cargas de trabajo de inferencia en un entorno observable, escalable y de alto rendimiento. A medida que avances en esta serie, aprenderás a usar GKE para transformar tus modelos de IA/AA en aplicaciones potentes y listas para la producción.
¿Qué sigue?
- Acerca de la inferencia de modelos de IA/AA en GKE (el siguiente documento de esta serie)
- Obtén información sobre las prácticas recomendadas para ejecutar cargas de trabajo de inferencia en GKE.
- Obtén información para entregar un modelo con una sola GPU en GKE.
- Obtén información para entregar LLMs abiertos en GKE con una arquitectura preconfigurada.
- Obtén información para entregar LLMs abiertos en GKE con TPU con una arquitectura preconfigurada.