Yolo Vision Shenzhen
Shenzhen
Únete ahora
Glosario

Kubernetes

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.

Conceptos básicos y arquitectura

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).

Kubernetes en la IA y el aprendizaje automático

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.

Aplicaciones en el mundo real

  1. Vigilancia inteligente del tráfico urbano: La administración de una ciudad despliega un Ultralytics YOLO11 para analizar el flujo de tráfico y detect congestiones en tiempo real. La aplicación está contenedorizada y orquestada en un clúster Kubernetes. Utilizando el Horizontal Pod Autoscaler, el sistema detecta picos en los datos de flujo de vídeo durante las horas punta y proporciona automáticamente inferencia adicionales. De este modo se garantizan servicios de detección de objetos sin aprovisionamiento manual de servidores.
  2. Búsqueda visual en comercio electrónico: Un minorista en línea implementa un sistema de recomendación que permite a los usuarios buscar productos utilizando imágenes. El proceso consiste en distintos microservicios para el preprocesamiento de imágenes, la extracción de características y la búsqueda en bases de datos vectoriales. extracción de características y búsqueda en bases de datos vectoriales. Kubernetes orquesta estos componentes, permitiendo al equipo de equipo de ingeniería de características independientemente del índice de búsqueda, lo que garantiza la agilidad y la estabilidad del sistema en su entorno de producción. en su entorno de producción.

Distinción de tecnologías afines

Es útil entender en qué se diferencia Kubernetes de otras herramientas de infraestructura comunes:

  • Kubernetes frente a Docker: Docker es una herramienta utilizada para crear y ejecutar contenedores individuales, mientras que Kubernetes es un orquestador que gestiona esos contenedores en una flota de máquinas. Normalmente, los desarrolladores utilizan Docker para crear sus imágenes de aplicaciones de redes neuronales y en Kubernetes para ejecutarlas a escala.
  • Kubernetes frente a Computación sin servidor: Las plataformas sin servidor como AWS Lambda abstraen toda la gestión de la infraestructura infraestructura, lo que las hace ideales para funciones basadas en eventos. Por el contrario, Kubernetes proporciona un control granular sobre la red, el almacenamiento y la asignación de recursos, lo que suele ser necesario para aplicaciones de larga ejecución y con estado o arquitecturas de servicio de modelos complejos.

Herramientas y ecosistema

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.

Ejemplo: Script de inferencia para la contenedorización

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)]}")

Únase a la comunidad Ultralytics

Únete al futuro de la IA. Conecta, colabora y crece con innovadores de todo el mundo

Únete ahora