Este documento es la primera parte de una serie dirigida a ingenieros de aprendizaje automático (ML) que no tienen experiencia con Google Kubernetes Engine (GKE) y quieren empezar a ejecutar cargas de trabajo de inferencia en GKE lo antes posible.
En esta serie, no intentaremos enseñarte todas las opciones de GKE disponibles. En su lugar, te proporcionamos la información básica que necesitas 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 y aprendizaje automático (este documento)
- Información sobre la inferencia de modelos de IA y aprendizaje automático en GKE
- Conceptos de autoescalado simplificados para cargas de trabajo de IA y aprendizaje automático en GKE
Como ingeniero de plataformas de IA o aprendizaje automático, puedes usar GKE para gestionar tus despliegues de modelos. GKE es un servicio que te permite automatizar el despliegue, el escalado y la monitorización de tus cargas de trabajo de inferencia basadas en Kubernetes y la infraestructura informática en la que se ejecutan. En este documento se describen algunas de las principales ventajas de usar GKE para la inferencia de modelos, entre las que se incluyen las siguientes:
- Rendimiento constante de las aplicaciones
- Acceso optimizado a hardware de inferencia especializado
- Escalado automático de las cargas de trabajo de inferencia
- Monitorización y registro automatizados del rendimiento y el estado de las cargas de trabajo
- Portabilidad y flexibilidad de los estándares abiertos y las tecnologías de código abierto
Antes de empezar
Antes de leer este documento, debes familiarizarte con lo siguiente:
- Conceptos fundamentales de Kubernetes: descubre qué son los contenedores, los pods, los nodos y los clústeres, y cómo se relacionan entre sí.
- Modos de funcionamiento de GKE: consulta información sobre los clústeres Autopilot y Standard de GKE, sus usos y sus diferencias.
Empaquetar modelos para que tengan un rendimiento constante
La inferencia de modelos coherente y fiable es fundamental para tu aplicación de IA, y GKE puede reducir la complejidad operativa de gestionar la inferencia a gran escala. Al empaquetar 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 contenerización ayuda a reducir los errores causados por dependencias no coincidentes o entornos incoherentes. GKE despliega y gestiona automáticamente estos contenedores. Se encarga de tareas como reiniciar cargas de trabajo que fallan o volver a aprovisionar recursos para ayudar a estabilizar el rendimiento de tus cargas de trabajo de IA o aprendizaje automático.
Usar GPUs y TPUs para reducir la latencia de servicio
La latencia es un problema para las cargas de trabajo de inferencia y algunos modelos complejos dependen de aceleradores de hardware como las GPUs y las TPUs para acelerar el servicio de inferencia. GKE agiliza el proceso de uso de GPUs o TPUs para tus cargas de trabajo de inferencia sensibles a la latencia, ya que simplifica el aprovisionamiento y la gestión de hardware. Tú eliges las configuraciones de hardware específicas que mejor se adapten a tus requisitos de rendimiento y coste, y GKE aprovisiona automáticamente nodos con el hardware seleccionado para ejecutar tus cargas de trabajo. GKE también automatiza los pasos de configuración que suelen requerir una configuración manual en Kubernetes, como la instalación de controladores NVIDIA. Para tener un control más preciso sobre la configuración de los nodos, puedes usar ComputeClasses personalizados para crear perfiles de hardware específicos y reutilizables que GKE utilice al aprovisionar nodos.
GKE también ofrece funciones de gestión de recursos para que puedas usar los recursos de TPU y GPU de forma más eficiente para el servicio de inferencias. Por ejemplo, puedes mejorar la utilización de la GPU alojando varios modelos en un solo servidor de GPU mediante el uso compartido de la GPU o reducir los costes de los trabajos de inferencia tolerantes a fallos ejecutándolos en máquinas virtuales Spot con aceleradores. En el caso de las cargas de trabajo pequeñas o medianas con requisitos de demanda fluctuantes o de corta duración, puedes usar Flex-start, que proporciona una técnica flexible y rentable para consumir recursos informáticos especializados, como GPUs o TPUs. Estas funciones te ayudan a maximizar el uso de los recursos de acelerador y, al mismo tiempo, optimizar la latencia y los costes del servicio.
Gestionar automáticamente los patrones de tráfico fluctuantes
El tráfico y la carga de las cargas de trabajo de inferencia en tiempo real pueden ser impredecibles y dinámicos. Un pico de demanda puede provocar un aumento de la latencia y una reducción del rendimiento. GKE ofrece un enfoque de autoescalado de varias capas para que puedas añadir o quitar recursos automáticamente y satisfacer la demanda de inferencia variable. Por ejemplo, puedes usar el autoescalador de pods horizontal (HPA) para ajustar automáticamente el número de pods de una implementación o el autoescalador de clústeres para ajustar automáticamente el número de nodos de un grupo de nodos. Si usas las funciones de autoescalado de GKE, puedes adaptar de forma eficiente la cantidad de recursos que necesita tu carga de trabajo de inferencia a la demanda de la aplicación.
Monitorizar el estado y el rendimiento de la carga de trabajo de inferencia
GKE está integrado con la Google Cloud suite de observabilidad (Cloud Logging y Cloud Monitoring) y puedes usar las funciones de observabilidad integradas para monitorizar el estado y el rendimiento de tus cargas de trabajo de inferencia. Estas funciones de observabilidad te permiten conocer y ver cómo funciona tu carga de trabajo después de implementarla. Por ejemplo, puede que te preguntes si tu modelo funciona como esperabas o si tu carga de trabajo cumple los requisitos de latencia y precisión.
GKE genera informes automáticamente sobre métricas de infraestructura, como el uso de CPU, memoria y aceleradores. Para responder a preguntas sobre el rendimiento de un modelo específico, 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 monitorización automática de aplicaciones y monitorizar métricas de inferencia clave, como las solicitudes por segundo (RPS); monitorizar la deriva de conceptos analizando métricas específicas del modelo, como la distribución de datos de entrada, y depurar problemas realizando análisis de registros históricos.
Usar GKE para disfrutar de portabilidad y flexibilidad
Al usar estándares abiertos, como los contenedores, y tecnologías de código abierto, como Kubernetes, GKE te ofrece la libertad de mover tus cargas de trabajo de servicio de inferencia a diferentes ubicaciones y usar diferentes recursos y herramientas a medida que cambien tus requisitos. Por ejemplo, puedes desarrollar y probar tu aplicación de inferencia en GKE y, a continuación, desplegar esa misma aplicación en contenedores en tu entorno local para la producción.
En resumen, puedes usar GKE para optimizar la forma en que trasladas tus modelos de IA y aprendizaje automático del desarrollo a la producción. GKE gestiona muchas de las complejidades que implica la gestión de la infraestructura, lo que significa que puedes centrarte en ejecutar tus cargas de trabajo de inferencia en un entorno eficiente, escalable y observable. A lo largo de esta serie, aprenderás a usar GKE para transformar tus modelos de IA y aprendizaje automático en aplicaciones potentes y listas para producción.
Siguientes pasos
- Información sobre la inferencia de modelos de IA y aprendizaje automático en GKE (el siguiente documento de esta serie)
- Descubre las prácticas recomendadas para ejecutar cargas de trabajo de inferencia en GKE
- Aprende a servir un modelo con una sola GPU en GKE
- Aprende a servir LLMs abiertos en GKE con una arquitectura preconfigurada
- Aprende a servir LLMs abiertos en GKE mediante TPUs con una arquitectura preconfigurada