Glossario

Docker

Semplificate i flussi di lavoro AI/ML con Docker! Imparate a distribuire i modelli, a garantire la riproducibilità e a scalare in modo efficiente tra gli ambienti.

Docker è una piattaforma open-source che automatizza la distribuzione, il ridimensionamento e la gestione delle applicazioni utilizzando la virtualizzazione a livello di sistema operativo per fornire software in pacchetti chiamati container. Per gli ingegneri di Machine Learning (ML) e i data scientist, Docker è uno strumento fondamentale che risolve il problema comune delle incongruenze ambientali, il famigerato problema del "funziona sulla mia macchina". Accorpando il codice di un'applicazione con tutte le librerie, i framework come PyTorch e le altre dipendenze di cui ha bisogno per funzionare, Docker garantisce che un modello funzioni in modo identico indipendentemente da dove viene distribuito. Questa coerenza è fondamentale per una distribuzione affidabile dei modelli ed è una pietra miliare delle moderne pratiche MLOps. Ultralytics fornisce una guida rapida a Docker per aiutare gli utenti a iniziare a containerizzare le loro applicazioni.

Come funziona Docker

Il flusso di lavoro di Docker ruota attorno ad alcuni componenti fondamentali che lavorano insieme per impacchettare ed eseguire le applicazioni:

  • Dockerfile: È un semplice file di testo che contiene un elenco di comandi o istruzioni sequenziali. Queste istruzioni indicano a Docker come costruire una specifica immagine Docker. Per un progetto di ML, un Dockerfile specificherebbe il sistema operativo di base, i comandi per installare le dipendenze come Python e OpenCV, copiare i file del modello e il codice di inferenza e definire il comando da eseguire all'avvio del contenitore. Per ulteriori informazioni sui file Docker, consultare la documentazione ufficiale di Docker.
  • Immagine Docker: Un'immagine è un pacchetto leggero, autonomo ed eseguibile che include tutto ciò che serve per eseguire un software, compreso il codice, il runtime, le librerie, le variabili d'ambiente e i file di configurazione. È un modello di sola lettura creato da un file Docker. Le immagini specifiche per il ML sono spesso disponibili su registri come NVIDIA NGC, che vengono forniti preconfigurati con driver per GPU e framework ML.
  • Contenitore Docker: Un contenitore è un'istanza eseguibile di un'immagine Docker. Quando si esegue un'immagine, questa diventa un contenitore, ovvero un processo isolato in esecuzione sul kernel della macchina host. Più container possono essere eseguiti sulla stessa macchina e condividere il kernel del sistema operativo con altri container, ciascuno dei quali viene eseguito come processo isolato nello spazio utente. Questo li rende estremamente efficienti rispetto alla virtualizzazione tradizionale. La tecnologia è standardizzata da organizzazioni come la Open Container Initiative (OCI).

Applicazioni AI/ML nel mondo reale

Docker semplifica l'intero ciclo di vita di un modello di intelligenza artificiale, dalla sperimentazione alla produzione.

  1. Distribuzione dei modelli di visione artificiale sull'Edge: un modello Ultralytics YOLO11 addestrato per il rilevamento di 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 le versioni specifiche delle librerie CUDA. Questo singolo contenitore può quindi essere distribuito in modo coerente su varie piattaforme, da una potente GPU del cloud a un dispositivo Edge AI con risorse limitate come un NVIDIA Jetson. Questo garantisce che il modello funzioni come previsto, un requisito fondamentale per l'inferenza in tempo reale in applicazioni come la sorveglianza intelligente.
  2. Creare ambienti di ricerca riproducibili: Un data scientist che sviluppa un nuovo algoritmo per la segmentazione delle immagini può creare un contenitore Docker che blocca versioni specifiche di Python, TensorFlow e altre librerie. Questo ambiente containerizzato può essere condiviso con i collaboratori o pubblicato insieme a un documento di ricerca, consentendo ad altri di replicare perfettamente l'ambiente di addestramento e verificare i risultati. Piattaforme come Ultralytics HUB si integrano con le tecnologie dei container per semplificare ulteriormente questo processo.

Confronto con termini simili

Sebbene Docker sia fondamentale per la containerizzazione, viene spesso utilizzato insieme ad altre tecnologie:

  • Contenitore: È il concetto generale di impacchettamento del software in container. Docker è la piattaforma più diffusa per la containerizzazione e fornisce gli strumenti per costruire, spedire ed eseguire i container.
  • Kubernetes: Mentre Docker gestisce singoli container su un singolo host, Kubernetes è una piattaforma di orchestrazione di container. Automatizza la distribuzione, il ridimensionamento e la gestione di applicazioni containerizzate su cluster di macchine. Pensate a Docker come alla creazione dei container e a Kubernetes come al sistema che gestisce le navi e le porte. Per saperne di più, visitate il sito ufficiale di Kubernetes.
  • Macchine virtuali (VM): Le macchine virtuali forniscono isolamento emulando interi sistemi hardware, compreso un sistema operativo guest. I container, gestiti da Docker, virtualizzano il sistema operativo, condividendo il kernel host. Questo rende i container molto più leggeri, veloci ed efficienti dal punto di vista delle risorse rispetto alle macchine virtuali, anche se queste ultime offrono un isolamento maggiore. Il sito ufficiale di Docker offre un ottimo confronto.

Sfruttando Docker, i professionisti dell'AI e della Computer Vision (CV) possono migliorare significativamente l'efficienza del flusso di lavoro, la collaborazione e l'affidabilità dei modelli distribuiti. Per una panoramica generale sullo scopo di Docker, risorse come la spiegazione di Docker di OpenSource.com offrono introduzioni accessibili. Questa tecnologia è un fattore chiave per un'ampia gamma di opzioni di distribuzione dei modelli.

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