Kubernetes
Scopri come Kubernetes automatizza il deployment e lo scaling dei modelli di AI. Impara a orchestrare Ultralytics YOLO26 su K8s per una computer vision ad alte prestazioni.
Kubernetes, spesso indicato come K8s, è una piattaforma open source progettata per automatizzare il deployment, la scalabilità e la gestione delle applicazioni containerizzate. Sviluppato originariamente da Google e ora gestito dalla Fondazione Cloud Native Computing (CNCF), Kubernetes è diventato lo standard per l'orchestrazione del software nel cloud. Nel contesto dell'intelligenza artificiale (AI) e dell'apprendimento automatico (ML), funge da livello di infrastruttura fondamentale che consente ai team di ingegneria di gestire workflow complessi, dal training distribuito all'inferenza in produzione ad alta disponibilità. Astraendo l'hardware sottostante, Kubernetes garantisce che le applicazioni funzionino in modo affidabile ed efficiente, indipendentemente dal fatto che siano ospitate on-premise o tramite provider di cloud pubblico.
Architettura e concetti fondamentali#
Kubernetes si basa su un'architettura a cluster, costituita da un insieme di macchine worker chiamate nodi. Questi nodi eseguono workload 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 è fondamentale per le applicazioni di computer vision, perché consente agli sviluppatori di pacchettizzare le dipendenze, come librerie CUDA specifiche per le unità di elaborazione grafica (GPU), in un ambiente coerente. I principali servizi cloud, come Servizio Kubernetes elastico di Amazon (EKS), Servizio Kubernetes di Azure (AKS) e Motore Kubernetes di Google (GKE), forniscono versioni gestite di questa architettura, semplificando l'onere della manutenzione per i team di data science.
Perché Kubernetes è importante per l'AI#
Il valore principale di Kubernetes nelle operazioni di machine learning (MLOps) risiede nella sua capacità di gestire workload dinamici. I modelli di AI spesso richiedono un'enorme potenza di calcolo durante il training e una bassa latenza di inferenza durante il deployment.
- Scalabilità: Kubernetes utilizza 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 interventi manuali.
- Ottimizzazione delle risorse: allocare in modo efficiente hardware costoso è fondamentale. Kubernetes abilita la condivisione frazionata delle GPU e l'affinità dei nodi, garantendo che i modelli di deep learning consumino risorse solo quando i job attivi ne hanno bisogno.
- Deployment resiliente: garantire l'alta disponibilità durante il deployment del modello è essenziale. Se un nodo si guasta, Kubernetes riavvia automaticamente i pod interessati su nodi integri, evitando l'interruzione dei servizi API critici.
Applicazioni nel mondo reale#
Kubernetes è la spina dorsale di molte implementazioni di AI su larga scala in diversi settori:
-
Gestione del traffico nelle smart city: un ente locale potrebbe implementare modelli Ultralytics YOLO26 per analizzare i flussi video provenienti da migliaia di incroci. Utilizzando Kubernetes, il sistema può aumentare dinamicamente le risorse durante le ore di punta per gestire il maggiore carico di rilevamento degli oggetti e ridurle di notte per contenere i 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 occuparsi della generazione dei candidati, mentre un altro gestisce il reranking. Kubernetes orchestra questi servizi distinti, consentendo ai team di aggiornare indipendentemente la rete neurale di ranking senza interrompere l'intera esperienza di acquisto, facilitando l'integrazione continua.
Differenze tra Kubernetes e Docker#
Un punto di confusione comune riguarda il rapporto tra Kubernetes e Docker. Non sono concorrenti, ma tecnologie complementari. Docker è uno strumento per creare ed eseguire singoli container, ovvero per pacchettizzare l'applicazione, mentre Kubernetes è uno strumento per gestire un insieme di questi container su più macchine. Usi Docker per creare un'immagine contenente i pesi del modello e il codice, quindi usi Kubernetes per determinare dove, quando e quante copie di quell'immagine devono essere eseguite in produzione.
Esempio: script di inferenza per la containerizzazione#
Per implementare un modello su Kubernetes, gli sviluppatori iniziano generalmente con uno script Python che funge da punto di ingresso del container. Il codice seguente mostra una semplice attività 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.")Strumenti ed ecosistema#
L'ecosistema Kubernetes include un'ampia gamma di strumenti pensati per la data science. Kubeflow è un toolkit diffuso dedicato a rendere semplici, portabili e scalabili i deployment dei workflow di ML su Kubernetes. Per monitorare lo stato del cluster e le metriche delle applicazioni, gli ingegneri si affidano spesso a Prometheus. Per semplificare ulteriormente la complessità del training e del deployment dei modelli in questi ambienti, la Ultralytics Platform offre un'interfaccia unificata che automatizza la gestione dei dataset e il training dei modelli, consentendo agli utenti di esportare modelli pronti per i cluster di cloud computing. Inoltre, i gestori di pacchetti come Helm aiutano a gestire applicazioni Kubernetes complesse tramite chart riutilizzabili.









