Descubra cómo Kubernetes agiliza las cargas de trabajo de IA/ML con una implementación de modelos escalable, un entrenamiento distribuido y una gestión eficiente de los recursos.
Kubernetes, a menudo abreviado como K8s, es un sistema de orquestación de contenedores de código abierto que automatiza el despliegue, escalado y gestión de aplicaciones en contenedores. despliegue, escalado y gestión de aplicaciones en contenedores. Diseñado originalmente por ingenieros de Google y en la actualidad por la Cloud Native Computing Foundation (CNCF), Kubernetes se ha en el estándar del sector para el funcionamiento de sistemas de software distribuidos y resistentes. En los campos de rápido avance de la Inteligencia Artificial (IA) y Aprendizaje Automático (Machine Learning, ML), sirve de capa de infraestructura fundamental, que permite a los equipos de ingeniería gestionar eficazmente el ciclo de vida completo de modelos complejos, desde el desarrollo experimental hasta la producción a gran escala. complejos, desde el desarrollo experimental hasta la producción a gran escala.
En esencia, Kubernetes gestiona un clúster de máquinas informáticas, conocidas como nodos, que ejecutan cargas de trabajo en contenedores. En se basa en gran medida en la contenedorización que empaqueta el código junto con sus dependencias para garantizar que las aplicaciones se ejecuten de forma coherente en diversos diversos entornos. Kubernetes introduce abstracciones como los "Pods", que son las unidades desplegables más pequeñas, y "Deployments", que mantienen el estado deseado de una aplicación. Al desacoplar el software del hardware subyacente, permite los ingenieros de visión por ordenador centrarse en el en el rendimiento del modelo y no en el mantenimiento del servidor, utilizando servicios gestionados como Amazon EKS o Google Kubernetes Engine (GKE).
Para Machine Learning Operations (MLOps), Kubernetes es indispensable porque resuelve el reto crítico de la escalabilidad. Las cargas de trabajo de IA modernas, en particular aprendizaje profundo, requieren importantes recursos informáticos. Kubernetes facilita la formación distribuida mediante la programación inteligente de tareas de formación en varios nodos equipados con unidades de procesamiento gráfico (GPU). Durante la fase de despliegue del modelo, K8s garantiza Durante la fase de despliegue del modelo, K8s garantiza una alta disponibilidad de las API de inferencia, aumentando o reduciendo automáticamente el número de pods en ejecución en función de las demandas de tráfico en tiempo real, lo que optimiza tanto el rendimiento como el coste. en tiempo real, lo que optimiza tanto el rendimiento como el coste.
Es útil entender en qué se diferencia Kubernetes de otras herramientas de infraestructura comunes:
El ecosistema de Kubernetes es muy amplio e incluye herramientas como Helm para la gestión de paquetes y Prometheus para supervisar el estado del clúster. Para flujos de trabajo de ML especializados como Kubeflow se ejecutan sobre Kubernetes para agilizar los procesos de extremo a extremo. De cara al futuro, la próxima PlataformaUltralytics está diseñada para simplificar aún más estos procesos, ofreciendo un entorno integral para la gestión de datos y la formación de modelos que abstracta las complejidades de la infraestructura subyacente.
Para desplegar un modelo en Kubernetes, primero necesita un script que realice la inferencia. Este fragmento de Python demuestra cargar un modelo YOLO11 , que luego podría ser envuelto en un contenedor Docker y programado por K8s.
from ultralytics import YOLO
# Load a pre-trained YOLO11 model
model = YOLO("yolo11n.pt")
# Run inference on an image source
# This script would typically run inside a Kubernetes Pod
results = model("https://ultralytics.com/images/bus.jpg")
# Print the detected class names
for result in results:
for cls_id in result.boxes.cls:
print(f"Detected: {result.names[int(cls_id)]}")