Glossario

Containerizzazione

Scoprite la potenza della containerizzazione per i progetti AI/ML. Semplificate i flussi di lavoro, garantite la coerenza e scalate in modo efficiente con strumenti all'avanguardia.

La containerizzazione è una forma leggera di virtualizzazione del sistema operativo che consente di impacchettare un'applicazione e le sue dipendenze, come librerie, framework e file di configurazione, in un'unica unità isolata chiamata container. Questo risolve il problema comune del software che non funziona correttamente quando viene spostato da un ambiente informatico a un altro. Nel contesto del Machine Learning (ML), la containerizzazione garantisce che i complessi modelli di intelligenza artificiale e i loro intricati stack software siano portabili, riproducibili e scalabili, costituendo una componente critica delle moderne pratiche MLOps.

La tecnologia di containerizzazione più diffusa è Docker, che fornisce un modo standardizzato per costruire, spedire ed eseguire i container. Ogni container condivide il kernel del sistema operativo host, ma viene eseguito come processo isolato nello spazio utente. Questo approccio, standardizzato da organizzazioni come la Open Container Initiative (OCI), rende i container molto più efficienti dal punto di vista delle risorse e più veloci da lanciare rispetto alle macchine virtuali tradizionali. Per saperne di più sui fondamenti della containerizzazione, è possibile consultare risorse come la spiegazione dei container di Red Hat.

La containerizzazione e i concetti correlati

La comprensione delle distinzioni tra la containerizzazione e le tecnologie simili è fondamentale per apprezzarne il ruolo nei flussi di lavoro AI/ML.

  • Macchine virtuali (VM): Sebbene sia i container che le macchine virtuali forniscano ambienti isolati, operano a livelli diversi. Una macchina virtuale emula un intero stack hardware, compreso un sistema operativo guest completo, il che la rende pesante e lenta da avviare. Al contrario, un container virtualizza il sistema operativo, condividendo il kernel host. Questo rende i container molto più leggeri e veloci, anche se le macchine virtuali possono offrire un maggior grado di isolamento a livello hardware.
  • Docker: La containerizzazione è il concetto di base. Docker è la piattaforma più diffusa che implementa questo concetto, fornendo gli strumenti per creare e gestire singoli container. Per un inizio pratico, Ultralytics fornisce una guida Docker Quickstart per l'esecuzione dei modelli YOLO. Per ulteriori informazioni, è possibile consultare le risorse ufficiali di Docker.
  • Kubernetes: Mentre Docker gestisce singoli container su un host, Kubernetes è una piattaforma di orchestrazione di container. Automatizza la distribuzione, il ridimensionamento e la gestione di migliaia di container su cluster di macchine. Un flusso di lavoro comune consiste nel creare un container con Docker e poi gestirlo in scala con Kubernetes. Per un approfondimento, consultare la documentazione ufficiale di Kubernetes.
  • Serverless Computing: Serverless è un modello di esecuzione in cui i fornitori di cloud gestiscono automaticamente l'infrastruttura necessaria per l'esecuzione del codice. In questo modo i server e i container vengono completamente eliminati. Mentre la containerizzazione fornisce il controllo sull'ambiente dell'applicazione, le piattaforme serverless come AWS Lambda privilegiano la facilità d'uso nascondendo tutta la gestione dell'infrastruttura.

Applicazioni del mondo reale in AI/ML

La containerizzazione è ampiamente utilizzata nell'intero ciclo di vita dell'AI/ML, dalla sperimentazione alla distribuzione dei modelli di produzione.

  1. Distribuzione dei modelli di rilevamento degli oggetti: Un modello Ultralytics YOLO addestrato per il rilevamento degli oggetti può essere inserito in un contenitore Docker. Questo contenitore include i pesi del modello, lo script di inferenza e tutte le dipendenze necessarie, come PyTorch e le librerie NVIDIA CUDA. Questa unità autonoma può essere distribuita in modo coerente su varie piattaforme, dalle potenti GPU del cloud ai dispositivi Edge AI con risorse limitate, garantendo che il modello funzioni come previsto indipendentemente dall'ambiente.
  2. Servire i modelli NLP come microservizi: Un team che sviluppa un'applicazione di elaborazione del linguaggio naturale (NLP) utilizzando modelli di piattaforme come Hugging Face può containerizzare diversi componenti (ad esempio, preelaborazione del testo, inferenza del modello, endpoint API) come microservizi separati. Questi contenitori possono essere gestiti con Kubernetes, consentendo la scalabilità e l'aggiornamento indipendente di ciascun componente. Questo segue i principi di un'architettura a microservizi e porta a un sistema più resiliente. Piattaforme come Ultralytics HUB sfruttano i principi della containerizzazione per semplificare la gestione e la distribuzione dei modelli.

Fornendo un ambiente coerente e isolato, la containerizzazione è diventata una pietra miliare dello sviluppo software moderno, soprattutto nei campi in rapida evoluzione dell'IA e della Computer Vision (CV). Consente agli sviluppatori e agli ingegneri MLOps di creare, testare e distribuire applicazioni AI affidabili con maggiore velocità ed efficienza su piattaforme come Google Cloud e Amazon Elastic Container Service.

Unitevi alla comunità di Ultralytics

Entrate a far parte del futuro dell'IA. Connettetevi, collaborate e crescete con gli innovatori globali.

Iscriviti ora
Link copiato negli appunti