Glossario

Kubernetes

Scopri come Kubernetes ottimizza i carichi di lavoro AI/ML con la distribuzione scalabile dei modelli, la formazione distribuita e la gestione efficiente delle risorse.

Addestra i modelli YOLO semplicemente
con Ultralytics HUB

Per saperne di più

Kubernetes, spesso abbreviato in K8s, è una piattaforma open-source progettata per automatizzare la distribuzione, la scalabilità e la gestione di applicazioni containerizzate. Originariamente è stata sviluppata da Google e ora gestita dalla Cloud Native Computing Foundation (CNCF), Kubernetes fornisce un solido framework per l'esecuzione di sistemi distribuiti in modo resiliente. Per chi lavora nel campo dell'Intelligenza Artificiale (AI) e dell'Apprendimento Automatico (ML), Kubernetes offre strumenti potenti per gestire il complesso ciclo di vita dei modelli, dall'addestramento alla distribuzione e all'inferenza. Aiuta a colmare il divario tra lo sviluppo di modelli di ML e la loro esecuzione affidabile in ambienti di produzione.

Concetti fondamentali semplificati

Kubernetes orchestra i container, che sono pacchetti leggeri e indipendenti contenenti software e le sue dipendenze. I concetti chiave includono:

  • Pod: Le più piccole unità distribuibili in Kubernetes, in genere contenenti uno o più container che condividono risorse e rete. Pensa a un Pod come a un involucro attorno alla tua applicazione ML o al contenitore del server di inferenza.
  • Nodi: Macchine di lavoro (virtuali o fisiche) in cui vengono eseguiti i Pod. Kubernetes gestisce la distribuzione dei Pod tra i nodi disponibili.
  • Servizi: Un'astrazione che definisce un insieme logico di Pod e una politica per accedervi, spesso fornendo un indirizzo IP stabile o un nome DNS per i Pod dinamici. Essenziale per esporre gli endpoint di inferenza ML.
  • Distribuzioni: Descrivi lo stato desiderato per la tua applicazione, gestendo i ReplicaSet (gruppi di Pod identici) per garantire la disponibilità e gestire gli aggiornamenti. Utile per il roll-out di nuove versioni del modello senza tempi di inattività.

La comprensione di questi elementi costitutivi aiuta a progettare sistemi di ML scalabili e resilienti.

Rilevanza nell'IA e nell'apprendimento automatico

Kubernetes è diventato una pietra miliare delle moderne Machine Learning Operations (MLOps) grazie a diversi vantaggi:

  • Scalabilità: Le attività di ML, come l'addestramento di modelli di grandi dimensioni o le richieste di inferenza, hanno spesso richieste di risorse fluttuanti. Kubernetes è in grado di scalare automaticamente il numero di container (Pod) in base al carico, garantendo un uso efficiente di risorse come le GPU.
  • Gestione delle risorse: Permette un controllo a grana fine su CPU e della memoria per i container, prevenendo la contesa sulle risorse e garantendo le prestazioni, particolarmente importanti quando si gestiscono risorse GPU costose su più esperimenti o servizi.
  • Portabilità e coerenza: Kubernetes offre un ambiente coerente tra le diverse infrastrutture, sia che si tratti di server on-premises che di varie piattaforme di cloud computing come Amazon EKS, Google GKE o Azure AKS. Questo semplifica lo spostamento dei flussi di lavoro ML tra sviluppo, test e produzione. Spesso puoi iniziare con una configurazione Docker e scalare con Kubernetes.
  • Automazione e orchestrazione: Automatizza attività complesse come il rilevamento dei servizi, il bilanciamento del carico, l'auto-guarigione (riavvio dei container falliti) e la gestione della configurazione, riducendo il carico manuale per i team di ML.

Applicazioni AI/ML del mondo reale

  1. Formazione distribuita dei modelli: Addestramento di modelli di deep learning (DL) di grandi dimensioni, come ad esempio modelli complessi di Ultralytics YOLO per il rilevamento di oggetti, spesso richiede un'immensa potenza di calcolo. Kubernetes può gestire un cluster di macchine per l'addestramento distribuito utilizzando framework come Kubeflow o integrazioni native con PyTorch o TensorFlow. Gestisce la programmazione dei lavori di formazione, la gestione dell'accesso ai dati e l'allocazione efficiente delle GPU tra i vari nodi.
  2. Servizi di inferenza scalabili: L'implementazione di modelli ML come quelli per l'inferenza in tempo reale richiede un'elevata disponibilità e una bassa latenza. Kubernetes può ospitare i server di inferenza (ad esempio, utilizzando NVIDIA Triton Inference Server, che si integra con i modelli Ultralytics - vedi la guida aTriton ) dietro un bilanciatore di carico. Questo bilancia automaticamente il numero di Pod del server di inferenza in base al traffico in entrata, garantendo la reattività anche durante i picchi di carico per attività come la classificazione delle immagini o l'elaborazione del linguaggio naturale (NLP).

Kubernetes vs. tecnologie correlate

  • Kubernetes vs. Docker: Docker è uno strumento per creare, spedire ed eseguire singoli container(containerizzazione). Kubernetes è un orchestratore di container che gestisce potenzialmente migliaia di container su molte macchine. I due strumenti lavorano insieme: in genere costruisci le immagini dei container con Docker e poi le distribuisci e le gestisci con Kubernetes. Consulta la guida Docker Quickstart per le nozioni di base sui container.
  • Kubernetes vs. Serverless Computing: Le piattaforme serverless (come AWS Lambda o Google Cloud Functions) astraggono completamente dalla gestione dei server, concentrandosi sulle funzioni event-driven. Kubernetes offre un maggiore controllo sull'infrastruttura sottostante ed è più adatto per le applicazioni di lunga durata o per i servizi statici complessi, anche se i framework serverless possono essere eseguiti su Kubernetes (ad esempio, Knative).

Strumenti ed ecosistema

L'ecosistema Kubernetes include molti strumenti per semplificare la gestione:

  • Helm: Un gestore di pacchetti per Kubernetes che aiuta a definire, installare e aggiornare applicazioni complesse.
  • Prometheus e Grafana: Strumenti open-source popolari per il monitoraggio di cluster e applicazioni Kubernetes.
  • Integrazioni con i fornitori di cloud: I servizi Kubernetes gestiti (EKS, GKE, AKS) semplificano la configurazione e la manutenzione dei cluster.
  • Piattaforme ML: Strumenti come Kubeflow si basano su Kubernetes per fornire flussi di lavoro specifici per il ML. Piattaforme come Ultralytics HUB mirano a semplificare la pipeline di distribuzione, talvolta astraendo le complessità di Kubernetes per facilitare la distribuzione dei modelli.

Kubernetes fornisce una base potente per costruire, distribuire e gestire applicazioni AI/ML scalabili e affidabili in ambienti diversi, rendendola una competenza cruciale nel panorama MLOps.

Leggi tutto