Scopri come Kubernetes semplifica i carichi di lavoro di IA/ML con l'implementazione scalabile dei modelli, l'addestramento distribuito e la gestione efficiente delle risorse.
Kubernetes, spesso abbreviato in K8s, è un sistema di orchestrazione di container open-source che automatizza la distribuzione, la scalabilità e la gestione di applicazioni containerizzate. distribuzione, la scalabilità e la gestione di applicazioni containerizzate. Originariamente progettato dagli ingegneri di Google e ora della Cloud Native Computing Foundation (CNCF), Kubernetes si è evoluto fino a diventare lo standard del settore è diventato lo standard del settore per la gestione di sistemi software distribuiti e resilienti. Nei campi in rapida evoluzione dell Intelligenza Artificiale (AI) e Machine Learning (ML), Kubernetes funge da livello di infrastruttura fondamentale dell'infrastruttura, consentendo ai team di ingegneri di gestire in modo efficiente l'intero ciclo di vita di modelli complessi, dallo sviluppo sperimentale alla produzione su larga scala. modelli complessi, dallo sviluppo sperimentale alla produzione su larga scala.
Nel suo nucleo, Kubernetes gestisce un cluster di macchine di calcolo, note come nodi, che eseguono carichi di lavoro containerizzati. Si basa Si basa fortemente sulla containerizzazione, unatecnologia che che impacchetta il codice insieme alle sue dipendenze, per garantire che le applicazioni vengano eseguite in modo coerente in ambienti diversi. ambienti diversi. Kubernetes introduce astrazioni come i "Pod", che sono le più piccole unità distribuibili, e "Deployments", che mantengono lo stato desiderato di un'applicazione. Disaccoppiando il software dall'hardware hardware sottostante, consente agli ingegneri di di computer vision di concentrarsi sulle prestazioni del modello prestazioni dei modelli piuttosto che sulla manutenzione dei server, utilizzando servizi gestiti come Amazon EKS o Google Kubernetes Engine (GKE).
Per Per le Machine Learning Operations (MLOps), Kubernetes è indispensabile perché risolve la sfida critica della scalabilità. I moderni carichi di lavoro AI, in particolare quelli di apprendimento profondo, richiedono notevoli risorse computazionali. risorse computazionali. Kubernetes facilita formazione distribuita, programmando in modo intelligente intelligentemente la programmazione dei lavori di formazione su più nodi dotati di unità di elaborazione grafica (GPU). Durante la fase di distribuzione del modello, K8s assicura alta disponibilità per le API di inferenza, scalando automaticamente il numero di pod in esecuzione in base alle richieste di traffico in tempo reale. in tempo reale, ottimizzando sia le prestazioni che i costi.
È utile capire come Kubernetes si differenzia da altri strumenti di infrastruttura comuni:
L'ecosistema Kubernetes è vasto e comprende strumenti come Helm per la gestione dei pacchetti e Prometheus per il monitoraggio della salute dei cluster. Prometheus per il monitoraggio della salute dei cluster. Per i flussi di lavoro ML specializzati, piattaforme come Kubeflow funzionano sopra Kubernetes per ottimizzare le pipeline end-to-end. Guardando al futuro, l'imminente Ultralytics Platform è progettata per semplificare ulteriormente questi processi. semplificare ulteriormente questi processi, offrendo un ambiente completo per la gestione dei dati e l'addestramento dei modelli che astrae dalle complessità dell'infrastruttura sottostante. che astrae dalle complessità dell'infrastruttura sottostante.
Per distribuire un modello su Kubernetes, è necessario uno script che esegua l'inferenza. Questo frammento Python dimostra il caricamento di un modello YOLO11 , che potrebbe poi essere inserito in un contenitore Docker e programmato da 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)]}")