Controllo verde
Link copiato negli appunti

Containerizzazione con Docker per semplificare la distribuzione dei modelli

Scopri come l'utilizzo di Docker per la containerizzazione rende più efficiente e semplice la distribuzione di modelli di computer vision come Ultralytics YOLO11 .

Il processo di creazione di una soluzione di computer vision prevede più fasi del semplice addestramento e test di un modello. Infatti, una delle parti più entusiasmanti della creazione di modelli all'avanguardia è vedere il loro impatto in ambienti reali. L'utilizzo dell'intelligenza artificiale per risolvere i problemi porta naturalmente all'implementazione dei modelli di computer vision sviluppati in produzione.

L'implementazione dei modelli comporta diverse fasi, tra cui l'ottimizzazione dei modelli per l'affidabilità, la scalabilità e le prestazioni in diverse condizioni. Un flusso di lavoro di distribuzione ben strutturato colma il divario tra lo sviluppo del modello e il fatto che il modello abbia un impatto significativo che fa la differenza. 

Spesso, quando si utilizzano modelli di computer vision come Ultralytics YOLO11ci sono diverse tecniche e opzioni di distribuzione che puoi scegliere e che dipendono dall'applicazione specifica che stai realizzando. Ad esempio, tecniche come la containerizzazione possono semplificare il flusso di lavoro di distribuzione. 

La containerizzazione aiuta a impacchettare un modello e le sue dipendenze, come librerie, framework e configurazioni, in un'unica unità autonoma chiamata container. Uno dei modi più efficienti e popolari per farlo è Docker, una piattaforma open-source che facilita la creazione, la spedizione e l'esecuzione di applicazioni containerizzate.

In questo articolo esploreremo il modo in cui la containerizzazione e Docker semplificano l' implementazione dei modelli, garantendo scalabilità ed efficienza senza soluzione di continuità nelle applicazioni Vision AI del mondo reale.

Che cos'è la distribuzione del modello?

La distribuzione del modello è la fase finale del ciclo di vita dell'apprendimento automatico, in cui il modello addestrato viene introdotto in un ambiente di produzione per fare previsioni reali. Il successo dell'implementazione è una parte fondamentale del funzionamento affidabile del modello in condizioni pratiche. 

Ad esempio, consideriamo un modello di computer vision progettato per identificare le targhe per la riscossione automatica dei pedaggi. Sebbene possa raggiungere un'elevata precisione in un ambiente controllato con set di dati ben etichettati, l'implementazione su telecamere stradali può introdurre problemi di latenza dovuti a fattori quali l'elaborazione di immagini ad alta risoluzione, i ritardi della rete, le limitazioni hardware e i vincoli di inferenza in tempo reale. 

Previsioni lente potrebbero causare ritardi nell'elaborazione dei pedaggi, congestioni o addirittura mancati rilevamenti. Un'adeguata strategia di distribuzione dei modelli può aiutare a ridurre la latenza, migliorare l'efficienza e supportare prestazioni affidabili nelle applicazioni reali.

Figura 1. Rilevamento della targa con YOLO11.

Inoltre, ci sono diverse considerazioni da tenere a mente quando si distribuiscono i modelli. Una di queste è la scalabilità: i modelli funzionano bene durante l'addestramento ma possono avere difficoltà a gestire dati su larga scala.

Un altro problema è rappresentato dalle discrepanze ambientali, come le differenze hardware, quando un modello viene addestrato su GPU (Graphics Processing Unit) ad alte prestazioni ma distribuito su dispositivi con una potenza di elaborazione limitata. Queste incongruenze nella distribuzione possono portare a un comportamento imprevisto del modello. Per affrontare queste sfide si possono utilizzare soluzioni avanzate come la containerizzazione.

Containerizzazione

La containerizzazione può essere paragonata alla confezione del pranzo, che contiene tutto il necessario per un pasto, come cibo, posate e condimenti. Puoi mangiare ovunque senza preoccuparti di trovare una cucina o utensili specifici. 

Allo stesso modo, la containerizzazione impacchetta un modello con tutte le sue dipendenze, come librerie, framework e configurazioni, in un'unica unità chiamata container. Questi container assicurano che il modello venga eseguito in modo coerente fornendo le stesse dipendenze su qualsiasi sistema, indipendentemente dall'ambiente sottostante. A differenza delle macchine virtuali, che trasportano interi sistemi operativi, i container sono leggeri e portatili, il che li rende un'alternativa efficiente.

Figura 2. Una panoramica della containerizzazione.

Ecco alcuni dei principali vantaggi della containerizzazione:

  • Controllo delle versioni: Con la containerizzazione, diverse versioni di un modello o di uno stack software possono coesistere, consentendo facili rollback e aggiornamenti senza interrompere i sistemi di produzione.
  • Sicurezza: I container isolano le applicazioni dal sistema sottostante, riducendo il rischio di conflitti, vulnerabilità e accessi non autorizzati.
  • Distribuzione rapida: Le immagini preconfigurate dei container consentono distribuzioni rapide e ripetibili, riducendo i tempi di configurazione e minimizzando gli errori di distribuzione.

Docker: semplificare la containerizzazione

‍Sebbenela containerizzazione sia un ottimo modo per eseguire applicazioni in ambienti isolati, impostarla può essere complicato. È qui che entra in gioco Docker. Docker è una piattaforma open-source che semplifica la creazione, la distribuzione e la gestione di applicazioni containerizzate.

Fornisce un ambiente coerente e isolato insieme agli strumenti e ai framework necessari per testare il modello. In particolare, Docker è noto per il suo solido ecosistema e la sua facilità d'uso. Rende più facile l'implementazione dei modelli di intelligenza artificiale semplificando il processo, lavorando senza problemi con le piattaforme cloud e consentendo ai modelli di intelligenza artificiale di essere eseguiti in modo efficiente sui dispositivi edge per ottenere risultati più rapidi.

Molti settori lo utilizzano attivamente per distribuire e gestire in modo efficiente le applicazioni containerizzate. La distribuzione di modelli basati su Docker coinvolge generalmente tre componenti principali:

  • Dockerfile: Un file di configurazione basato sul testo che funge da modello per la creazione di un'immagine Docker. Contiene tutte le istruzioni necessarie, tra cui l'immagine di base, le dipendenze necessarie, le impostazioni dell'ambiente e i comandi per eseguire il modello.
  • Immagini Docker: File di pacchetti preconfigurati che includono tutto ciò che serve per l'esecuzione del modello, come codice, librerie, ambienti di esecuzione e dipendenze. Queste immagini garantiscono l'esecuzione del modello con la stessa configurazione su qualsiasi sistema.
  • Contenitori Docker: Istanze in esecuzione di immagini Docker che forniscono un ambiente isolato e sicuro per l'esecuzione del modello. All'interno di questo ambiente, il modello può essere addestrato, testato e messo a punto senza interferire con altre applicazioni o con il sistema host.
Figura 3. Comprendere i componenti chiave di Docker.

Esplorare un'applicazione di computer vision utilizzando Docker

Supponiamo che una città voglia implementare un sistema di monitoraggio del traffico che utilizzi la computer vision per rilevare e classificare i veicoli in tempo reale. L'implementazione di questo sistema in più sedi, ciascuna con condizioni hardware e di rete diverse, può essere impegnativa. Problemi di compatibilità, conflitti di dipendenza e ambienti incoerenti possono portare a prestazioni inaffidabili.

Utilizzando Docker, gli sviluppatori possono impacchettare l'intero modello di computer vision, insieme alle sue dipendenze (come i framework AI come TensorFlow e gli script personalizzati), in un container. In questo modo il modello viene eseguito in modo coerente in diversi ambienti, dallo sviluppo locale ai server basati su cloud o persino ai dispositivi edge installati sulle telecamere del traffico.

Figura 4. Come funziona Docker.

Ad esempio, distribuendo modelli di computer vision Dockerizzati in più incroci, la città può analizzare il flusso del traffico, rilevare le violazioni e ottimizzare i segnali stradali. Poiché Docker facilita un ambiente standardizzato in tutte le sedi, la manutenzione è più semplice, gli aggiornamenti sono continui e le prestazioni rimangono costanti.

Distribuire YOLO11 utilizzando Docker

YOLO11, grazie alla sua capacità di eseguire compiti complessi di visione computerizzata, può essere utilizzato in diversi settori, come la produzione, la sanità, la guida autonoma e l'agricoltura. 

Ad esempio, YOLO11 è in grado di elaborare i feed video delle applicazioni di fitness per tracciare esercizi come le flessioni utilizzando la stima della posa. Rilevando i movimenti del corpo e contando le ripetizioni in tempo reale, aiuta a migliorare il monitoraggio degli allenamenti e l'analisi delle prestazioni.

Figura 5. Monitoraggio di un allenamento con YOLO11.

Se vogliamo implementare un modello del genere in applicazioni reali, dobbiamo gestire le dipendenze, ottimizzare l'hardware e garantire prestazioni coerenti in ambienti diversi. L'utilizzo di Docker semplifica questo processo, impacchettando YOLO11 con tutte le librerie e le configurazioni necessarie, rendendo la distribuzione più efficiente, scalabile e affidabile.

Ecco una rapida panoramica dei vantaggi di distribuire YOLO11 utilizzando Docker:

  • Manutenzione semplificata: Docker semplifica il processo di aggiornamento e manutenzione di YOLO11 e delle sue dipendenze. Gli aggiornamenti possono essere applicati all'immagine del container senza influenzare il sistema host, garantendo una gestione fluida ed efficiente del modello.
  • Collaborazione semplificata: Sviluppatori e ricercatori possono condividere facilmente container Docker preconfigurati, assicurando che i team lavorino con lo stesso ambiente ed evitando problemi di compatibilità.
  • Efficienza delle risorse: A differenza delle macchine virtuali tradizionali, i container Docker condividono il sistema operativo host, riducendo l'overhead e migliorando l'utilizzo delle risorse, aspetto fondamentale per le attività di inferenza in tempo reale.

Applicazioni YOLO11 che possono essere distribuite utilizzando Docker

Vediamo alcuni esempi di applicazioni di computer vision che possono essere realizzate con YOLO11 e Docker. 

Monitoraggio del traffico con YOLO11

In precedenza abbiamo parlato del monitoraggio del traffico attraverso la computer vision. È interessante notare che il supporto di YOLO11per il tracciamento degli oggetti può aiutare a creare un sistema completo di gestione del traffico. Come funziona?

YOLO11 è in grado di analizzare i feed video in diretta delle telecamere del traffico per rilevare e tracciare i veicoli in tempo reale. Identificando continuamente le posizioni, le velocità e gli schemi di movimento dei veicoli, il sistema può monitorare i livelli di congestione, rilevare le violazioni del traffico (come il passaggio con il rosso o le svolte illegali) e ottimizzare i segnali stradali in base ai dati in tempo reale.

Inoltre, la distribuzione di YOLO11 su dispositivi edge o piattaforme basate su cloud con l'aiuto di Docker garantisce un'elaborazione e una scalabilità efficienti, rendendolo uno strumento prezioso per la gestione del traffico nelle città intelligenti.

Figura 6. Tracciamento e conteggio dei veicoli con YOLO11.

Fisioterapia potenziata con YOLO11

Quando si parla di assistenza sanitaria, la fisioterapia è fondamentale per la riabilitazione e una postura e un movimento corretti sono essenziali per un recupero di successo. Il feedback in tempo reale di un sistema di monitoraggio del paziente basato sulla visione può aiutare i terapisti a individuare problemi come angoli articolari errati o squilibri muscolari. 

Ad esempio, se un paziente sta eseguendo un sollevamento della spalla ma non solleva il braccio all'altezza corretta o compensa con una postura scorretta, il sistema può rilevare questi errori e fornire correzioni istantanee. In questo modo i terapisti possono adattare i trattamenti in tempo reale.

Le capacità di stima della posa di YOLO11possono essere utilizzate per rilevare i punti chiave del corpo e analizzare i movimenti delle articolazioni. Può elaborare i feed video in diretta per fornire un feedback istantaneo, aiutando i terapisti a correggere la postura, migliorare l'accuratezza dei movimenti e prevenire gli infortuni. In questo modo è più facile creare piani di trattamento personalizzati in base ai progressi di ciascun paziente.

Figura 7. Un esempio di monitoraggio della fisioterapia con YOLO11.

Per quanto riguarda l'implementazione di questo tipo di soluzioni, l'uso di Docker può garantire un funzionamento regolare in diversi ambienti, sia in clinica che per il monitoraggio remoto dei pazienti. Docker semplifica la distribuzione, migliora la scalabilità e mantiene la coerenza del sistema, rendendo gli strumenti di fisioterapia basati sull'intelligenza artificiale più affidabili e accessibili.

Punti di forza

La distribuzione di un modello di computer vision è un passo fondamentale per passare dallo sviluppo all'utilizzo nel mondo reale. Un processo di distribuzione senza intoppi assicura che il modello addestrato funzioni in modo affidabile nelle applicazioni pratiche. Strumenti come Docker e la containerizzazione hanno reso questo processo più semplice, eliminando molte sfide tradizionali. 

Grazie alla loro natura leggera, portatile e scalabile, queste tecnologie stanno cambiando il modo in cui modelli come YOLO11 vengono costruiti e distribuiti. Utilizzando la containerizzazione, le aziende possono risparmiare tempo, ridurre i costi e migliorare l'efficienza garantendo l'esecuzione dei modelli in modo uniforme in ambienti diversi.

Unisciti alla nostra comunità e consulta il nostro repository GitHub per saperne di più sull'IA. Leggi le varie applicazioni della computer vision nella sanità e dell'IA nella produzione. Esplora le nostre opzioni di licenza yolo per iniziare a lavorare con Vision AI.

Logo di FacebookLogo di TwitterLogo di LinkedInSimbolo di copia-link

Leggi tutto in questa categoria

Costruiamo insieme il futuro
di AI!

Inizia il tuo viaggio nel futuro dell'apprendimento automatico