Kubernetes
Esplora come Kubernetes automatizza il deployment e lo scaling dei modelli IA. Impara a orchestrare Ultralytics YOLO26 su K8s per una visione artificiale ad alte prestazioni.
Kubernetes, spesso indicato come K8s, è una piattaforma open-source progettata per automatizzare il deployment, il ridimensionamento e la gestione di applicazioni containerizzate. Sviluppato originariamente da Google e ora mantenuto dalla Cloud Native Computing Foundation (CNCF), Kubernetes è diventato lo standard per l'orchestrazione del software nel cloud. Nel contesto dell'Intelligenza Artificiale (AI) e del Machine Learning (ML), funge da livello infrastrutturale critico che consente ai team di ingegneri di gestire flussi di lavoro complessi, dall'addestramento distribuito all'inferenza in produzione ad alta disponibilità. Astrando l'hardware sottostante, Kubernetes garantisce che le applicazioni vengano eseguite in modo affidabile ed efficiente, indipendentemente dal fatto che siano ospitate on-premise o tramite provider di public cloud.
Link to this sectionArchitettura e concetti fondamentali#
Nel suo cuore, Kubernetes opera su un'architettura a cluster, che consiste in un insieme di macchine worker chiamate nodi. Questi nodi eseguono carichi di lavoro di containerizzazione, mentre un control plane gestisce lo stato complessivo del cluster. La più piccola unità distribuibile in Kubernetes è un "Pod", che incapsula uno o più container che condividono risorse di storage e di rete. Questa astrazione è vitale per le applicazioni di computer vision, in quanto consente agli sviluppatori di impacchettare le dipendenze, come librerie CUDA specifiche per le Graphics Processing Units (GPUs), in un ambiente coerente. I principali servizi cloud come Amazon Elastic Kubernetes Service (EKS), Azure Kubernetes Service (AKS) e Google Kubernetes Engine (GKE) forniscono versioni gestite di questa architettura, semplificando l'onere di manutenzione per i team di data science.
Link to this sectionPerché Kubernetes è importante per l'AI#
Il valore principale di Kubernetes nelle Machine Learning Operations (MLOps) risiede nella sua capacità di gestire carichi di lavoro dinamici. I modelli AI richiedono spesso un'enorme potenza computazionale durante l'addestramento e una bassa latenza di inferenza durante il deployment.
- Scalabilità: Kubernetes impiega l'autoscaling per regolare automaticamente le risorse. Se si verifica un improvviso picco di traffico, l'Horizontal Pod Autoscaler può aumentare il numero di pod di inferenza per mantenere la scalabilità senza intervento manuale.
- Ottimizzazione delle risorse: L'allocazione efficiente dell'hardware costoso è fondamentale. Kubernetes abilita la condivisione frazionaria delle GPU e l'affinità ai nodi, assicurando che i modelli di deep learning consumino risorse solo quando i lavori attivi le richiedono.
- Deployment resiliente: Garantire l'alta disponibilità durante il deployment del modello è essenziale. Se un nodo fallisce, Kubernetes riavvia automaticamente i pod interessati su nodi integri, prevenendo tempi di inattività per i servizi API critici.
Link to this sectionApplicazioni nel mondo reale#
Kubernetes è la spina dorsale per molte implementazioni AI su larga scala in vari settori:
-
Gestione del traffico nelle Smart City: Una municipalità potrebbe distribuire modelli Ultralytics YOLO26 per analizzare i feed video provenienti da migliaia di incroci. Usando Kubernetes, il sistema può aumentare dinamicamente le risorse durante l'ora di punta per gestire il maggiore carico di rilevamento oggetti e ridurle di notte per risparmiare sui costi. Questo approccio è fondamentale per i moderni sistemi di gestione del traffico.
-
Personalizzazione nell'E-commerce: I rivenditori online utilizzano complessi sistemi di raccomandazione basati su microservizi. Un servizio potrebbe gestire la generazione di candidati mentre un altro gestisce il riordinamento. Kubernetes orchestra questi servizi distinti, permettendo ai team di aggiornare la rete neurale di classificazione in modo indipendente senza interrompere l'intera esperienza di acquisto, facilitando l'integrazione continua.
Link to this sectionDifferenziare Kubernetes e Docker#
Un punto comune di confusione è la relazione tra Kubernetes e Docker. Non sono concorrenti, ma tecnologie complementari. Docker è uno strumento per creare ed eseguire singoli container (impacchettare l'applicazione), mentre Kubernetes è uno strumento per gestire una flotta di quei container su più macchine. Usi Docker per costruire i tuoi pesi del modello e il codice in un'immagine, e poi usi Kubernetes per determinare dove, quando e quante copie di quell'immagine eseguire in produzione.
Link to this sectionEsempio: Script di inferenza per la containerizzazione#
Per distribuire un modello su Kubernetes, gli sviluppatori iniziano solitamente con uno script Python che funge da punto di ingresso per il container. Il codice seguente dimostra un semplice compito di inferenza utilizzando il modello Ultralytics YOLO26. Questo script verrebbe eseguito all'interno di un pod, elaborando le richieste in arrivo.
from ultralytics import YOLO
# Load the lightweight YOLO26 model
model = YOLO("yolo26n.pt")
# Perform inference on an image source
# In a K8s pod, this would likely process API payloads
results = model("https://ultralytics.com/images/bus.jpg")
# Output the detection count for logging
print(f"Detected {len(results[0].boxes)} objects in the frame.")Link to this sectionStrumenti ed ecosistema#
L'ecosistema Kubernetes include una vasta gamma di strumenti su misura per la data science. Kubeflow è un toolkit popolare dedicato a rendere i deployment dei flussi di lavoro ML su Kubernetes semplici, portabili e scalabili. Per monitorare la salute del cluster e le metriche delle applicazioni, gli ingegneri si affidano spesso a Prometheus. Per semplificare ulteriormente la complessità dell'addestramento e della distribuzione di modelli in questi ambienti, la Piattaforma Ultralytics offre un'interfaccia unificata che automatizza la gestione dei dataset e l'addestramento dei modelli, consentendo agli utenti di esportare modelli pronti per i cluster di cloud computing. Inoltre, package manager come Helm aiutano a gestire complesse applicazioni Kubernetes attraverso grafici riutilizzabili.






