Glosario

Kubernetes

Descubre cómo Kubernetes agiliza las cargas de trabajo de IA/ML con el despliegue escalable de modelos, la formación distribuida y la gestión eficiente de recursos.

Entrena los modelos YOLO simplemente
con Ultralytics HUB

Saber más

Kubernetes, a menudo abreviado como K8s, es una plataforma de código abierto diseñada para automatizar el despliegue, escalado y gestión de aplicaciones en contenedores. Desarrollada originalmente por Google y ahora mantenida por la Cloud Native Computing Foundation (CNCF), Kubernetes proporciona un marco sólido para ejecutar sistemas distribuidos de forma resistente. Para quienes trabajan en Inteligencia Artificial (IA) y Aprendizaje Automático (AM), Kubernetes ofrece potentes herramientas para gestionar el complejo ciclo de vida de los modelos, desde el entrenamiento hasta el despliegue y la inferencia. Ayuda a salvar la distancia entre el desarrollo de modelos de ML y su ejecución fiable en entornos de producción.

Conceptos básicos simplificados

Kubernetes orquesta contenedores, que son paquetes ligeros e independientes que contienen software y sus dependencias. Los conceptos clave son:

  • Pods: Las unidades desplegables más pequeñas de Kubernetes, que suelen contener uno o más contenedores que comparten recursos y red. Piensa en un Pod como una envoltura alrededor de tu aplicación ML o contenedor de servidor de inferencia.
  • Nodos: Máquinas de trabajo (virtuales o físicas) donde se ejecutan los Pods. Kubernetes gestiona la distribución de los Pods entre los Nodos disponibles.
  • Servicios: Una abstracción que define un conjunto lógico de Pods y una política para acceder a ellos, a menudo proporcionando una dirección IP estable o un nombre DNS para Pods dinámicos. Esencial para exponer puntos finales de inferencia ML.
  • Despliegues: Describe el estado deseado para tu aplicación, gestionando ReplicaSets (grupos de Pods idénticos) para garantizar la disponibilidad y gestionar las actualizaciones. Útil para desplegar nuevas versiones del modelo sin tiempo de inactividad.

Comprender estos componentes básicos ayuda a diseñar sistemas de ML escalables y resistentes.

Relevancia en IA y Aprendizaje Automático

Kubernetes se ha convertido en la piedra angular de las modernas Operaciones de Aprendizaje Automático (MLOps) debido a varias ventajas:

  • Escalabilidad: Las tareas de ML, como entrenar grandes modelos o atender peticiones de inferencia, suelen tener demandas fluctuantes de recursos. Kubernetes puede ampliar o reducir automáticamente el número de contenedores (Pods) en función de la carga, garantizando un uso eficiente de recursos como las GPU.
  • Gestión de recursos: Permite un control detallado de CPU y la memoria de los contenedores, evitando la contención de recursos y garantizando el rendimiento, algo especialmente importante cuando se gestionan recursos GPU caros en varios experimentos o servicios.
  • Portabilidad y coherencia: Kubernetes proporciona un entorno consistente en diferentes infraestructuras, ya sean servidores locales o diversas plataformas de computación en nube como Amazon EKS, Google GKE o Azure AKS. Esto simplifica el traslado de los flujos de trabajo de ML entre desarrollo, pruebas y producción. A menudo puedes empezar con una configuración Docker y ampliarla con Kubernetes.
  • Automatización y orquestación: Automatiza tareas complejas como el descubrimiento de servicios, el equilibrio de carga, la autorreparación (reiniciar contenedores averiados) y la gestión de la configuración, reduciendo la sobrecarga manual de los equipos de ML.

Aplicaciones AI/ML en el mundo real

  1. Entrenamiento distribuido de modelos: Entrenamiento de grandes modelos de aprendizaje profundo (DL), como los complejos Ultralytics YOLO para la detección de objetos, suele requerir una inmensa potencia computacional. Kubernetes puede gestionar un clúster de máquinas para el entrenamiento distribuido utilizando marcos como Kubeflow o integraciones nativas con PyTorch o TensorFlow. Se encarga de programar los trabajos de entrenamiento, gestionar el acceso a los datos y asignar las GPU de forma eficiente entre los nodos.
  2. Servicios de Inferencia Escalables: El despliegue de modelos ML como los de inferencia en tiempo real requiere alta disponibilidad y baja latencia. Kubernetes puede alojar servidores de inferencia (por ejemplo, utilizando el Servidor de InferenciaTriton NVIDIA , que se integra con los modelos de Ultralytics - consulta la guía deTriton ) detrás de un equilibrador de carga. Éste escala automáticamente el número de Pods del servidor de inferencia en función del tráfico entrante, garantizando la capacidad de respuesta incluso durante picos de carga para tareas como la clasificación de imágenes o el procesamiento del lenguaje natural (PLN).

Kubernetes frente a tecnologías relacionadas

  • Kubernetes vs. Docker: Docker es una herramienta para crear, enviar y ejecutar contenedores individuales(contenerización). Kubernetes es un orquestador de contenedores, que gestiona potencialmente miles de contenedores en muchas máquinas. Funcionan juntos: normalmente creas imágenes de contenedores con Docker y luego las despliegas y gestionas con Kubernetes. Consulta la guía de inicio rápido de Docker para conocer los fundamentos de los contenedores.
  • Kubernetes vs. Computación sin servidor: Las plataformas sin servidor (como AWS Lambda o Google Cloud Functions) prescinden por completo de la gestión del servidor, centrándose en funciones basadas en eventos. Kubernetes proporciona más control sobre la infraestructura subyacente y es más adecuado para aplicaciones de larga duración o servicios complejos con estado, aunque los marcos sin servidor pueden ejecutarse en Kubernetes (por ejemplo, Knative).

Herramientas y ecosistema

El ecosistema Kubernetes incluye muchas herramientas para simplificar la gestión:

  • Helm: Un gestor de paquetes para Kubernetes, que ayuda a definir, instalar y actualizar aplicaciones complejas.
  • Prometheus y Grafana: Herramientas populares de código abierto para supervisar clústeres y aplicaciones Kubernetes.
  • Integraciones con proveedores de la nube: Los servicios gestionados de Kubernetes (EKS, GKE, AKS) simplifican la configuración y el mantenimiento de los clústeres.
  • Plataformas ML: Herramientas como Kubeflow se basan en Kubernetes para proporcionar flujos de trabajo específicos de ML. Plataformas como Ultralytics HUB pretenden simplificar el proceso de despliegue, a veces abstrayendo las complejidades de Kubernetes para facilitar el despliegue de modelos.

Kubernetes proporciona una potente base para construir, desplegar y gestionar aplicaciones de IA/ML escalables y fiables en diversos entornos, lo que la convierte en una habilidad crucial en el panorama de los MLOps.

Leer todo