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 funcionamiento de contenedores de aplicaciones. Diseñada originalmente por Google, Kubernetes es mantenida ahora por la Cloud Native Computing Foundation. En esencia, actúa como un orquestador para aplicaciones en contenedores, gestionándolas a través de un clúster de ordenadores para que se ejecuten de manera eficiente y fiable. Para los usuarios familiarizados con el aprendizaje automático, piensa en Kubernetes como el director de una orquesta, que se asegura de que todos los diferentes instrumentos (los componentes de tu aplicación de IA/ML) toquen juntos armoniosamente y a escala.

¿Qué es Kubernetes?

En esencia, Kubernetes es un sistema para gestionar aplicaciones en contenedores. Los contenedores empaquetan el código de software y sus dependencias para que las aplicaciones puedan ejecutarse de manera uniforme y coherente en diferentes entornos informáticos. Docker es una popular tecnología de contenedorización que se utiliza a menudo con Kubernetes. Kubernetes automatiza muchos de los procesos manuales implicados en el despliegue, gestión y escalado de estas aplicaciones en contenedores. Agrupa los contenedores que componen una aplicación en unidades lógicas para facilitar su gestión y descubrimiento. Estas unidades, llamadas pods, se despliegan en un clúster de máquinas. Kubernetes se encarga entonces de tareas como:

  • Descubrimiento de servicios y equilibrio de carga: Kubernetes puede exponer un contenedor utilizando el nombre DNS o utilizando su propia dirección IP. Si el tráfico hacia un contenedor es elevado, Kubernetes puede equilibrar la carga y distribuir el tráfico de red para que el despliegue sea estable.
  • Orquestación del almacenamiento: Kubernetes te permite montar automáticamente el sistema de almacenamiento que elijas, como almacenamiento local, proveedores de nubes públicas, etc.
  • Rollouts y rollbacks automatizados: Puedes describir el estado deseado para tus contenedores desplegados utilizando Kubernetes, y éste cambia el estado real al estado deseado a un ritmo controlado. Por ejemplo, Kubernetes puede automatizar la creación de nuevos contenedores para tu despliegue, eliminar los contenedores existentes y adoptar todos sus recursos al nuevo contenedor.
  • Empaquetamiento automático de contenedores: Kubernetes te permite especificar cuánta CPU y RAM (memoria) necesita cada contenedor. Kubernetes puede empaquetar contenedores en tus nodos para aprovechar al máximo tus recursos.
  • Autocuración: Kubernetes reinicia los contenedores que fallan, sustituye y reprograma los contenedores cuando mueren nodos, mata los contenedores que no responden a su comprobación de estado definida por el usuario, y no los anuncia a los clientes hasta que están listos para servir.
  • Gestión de secretos y configuración: Kubernetes te permite almacenar y gestionar información sensible, como contraseñas, tokens OAuth y claves SSH. Puedes desplegar y actualizar secretos y la configuración de la aplicación sin reconstruir tus imágenes de contenedor, y sin exponer secretos en la configuración de tu pila.

¿Por qué Kubernetes es relevante para la IA y el ML?

Kubernetes es especialmente relevante en el campo de la IA y el aprendizaje automático debido a la naturaleza intensiva en recursos y escalabilidad de las cargas de trabajo de ML. El entrenamiento de grandes modelos, especialmente los modelos Ultralytics YOLO para la detección de objetos, a menudo requiere computación distribuida a través de múltiples GPUs o TPUs. Kubernetes proporciona la infraestructura para gestionar eficientemente estos recursos distribuidos.

Además, el despliegue de modelos de IA/ML para la inferencia a escala requiere una infraestructura robusta y escalable. Kubernetes simplifica el despliegue de modelos permitiendo a los usuarios contenerizar sus modelos y servirlos a través de API escalables. Esto es crucial para las aplicaciones del mundo real que requieren baja latencia de inferencia y alto rendimiento.

Aplicaciones de Kubernetes en IA/ML

  1. Modelo escalable de servicio: Considera una aplicación de detección de objetos en tiempo real, como un sistema de gestión del tráfico de una ciudad inteligente que utilice Ultralytics YOLOv8. A medida que la ciudad crece, aumenta la demanda de procesamiento de señales de vídeo procedentes de más cámaras. Kubernetes te permite escalar la infraestructura de servicio de modelos de forma dinámica. Al desplegar tu modelo YOLOv8 como un servicio en contenedores en Kubernetes, puedes aumentar o disminuir fácilmente el número de instancias del modelo en función del tráfico entrante, garantizando un rendimiento constante incluso bajo una carga pesada. Esta escalabilidad es esencial para mantener una baja latencia y una alta disponibilidad en las aplicaciones de IA en tiempo real.

  2. Entrenamiento distribuido: El entrenamiento de los modelos de IA más avanzados suele requerir conjuntos de datos masivos y una potencia computacional significativa. El entrenamiento distribuido a través de un clúster de máquinas se hace necesario para reducir el tiempo de entrenamiento. Kubernetes puede orquestar los trabajos de entrenamiento distribuido gestionando la distribución de la carga de trabajo entre varios nodos, supervisando el progreso y gestionando los fallos. Por ejemplo, podrías utilizar Kubernetes para gestionar un trabajo de entrenamiento distribuido para un gran modelo de clasificación de imágenes utilizando un conjunto de datos como ImageNet. Kubernetes garantiza que cada nodo de entrenamiento esté correctamente configurado, que los datos se distribuyan de forma eficiente y que el proceso general de entrenamiento sea resistente a los fallos de los nodos.

En resumen, Kubernetes es una potente herramienta para gestionar las complejidades de las cargas de trabajo de IA y ML, proporcionando escalabilidad, resistencia y eficiencia tanto en la fase de formación como en la de despliegue. Su capacidad para orquestar aplicaciones en contenedores lo convierte en una plataforma ideal para construir y ejecutar sistemas de IA modernos y escalables.

Leer todo