Docker
Scopri come Docker abilita un deployment AI riproducibile. Impara a impacchettare i modelli Ultralytics YOLO26 in container per una scalabilità fluida dal cloud ai dispositivi edge.
Docker è una piattaforma open source che consente agli sviluppatori di automatizzare la distribuzione, la scalabilità e la gestione delle applicazioni tramite la containerizzazione. Nel contesto dell'intelligenza artificiale e del machine learning, Docker funge da unità software standardizzata che raggruppa il codice e tutte le sue dipendenze, come librerie, strumenti di sistema e impostazioni, così che l'applicazione venga eseguita in modo rapido e affidabile da un ambiente di elaborazione all'altro. Questo elimina il comune problema del "funziona sul mio computer", garantendo che una rete neurale addestrata sul laptop di un ricercatore si comporti esattamente allo stesso modo quando viene distribuita su un enorme server cloud o su un dispositivo edge.
Perché Docker è importante per l'intelligenza artificiale e il machine learning#
Le moderne operazioni di machine learning (MLOps) dipendono fortemente dalla riproducibilità e dalla portabilità. Un progetto di intelligenza artificiale spesso include uno stack software complesso, comprendente versioni specifiche di Python, driver CUDA per l'accelerazione GPU e framework di deep learning come PyTorch o TensorFlow. Gestire manualmente questi componenti tra team e infrastrutture diversi è soggetto a errori.
Docker semplifica questo processo creando container leggeri e autonomi. A differenza delle tradizionali macchine virtuali (VMs), che richiedono un sistema operativo completo per ogni istanza, i container condividono il kernel del sistema operativo della macchina host, ma vengono eseguiti in spazi utente isolati. Questo li rende notevolmente più efficienti in termini di risorse e più rapidi da avviare, un aspetto fondamentale quando si fa lo scaling dell'infrastruttura di serving dei modelli o si eseguono processi di addestramento distribuiti.
Applicazioni nel mondo reale#
Docker è onnipresente nel ciclo di vita dell'intelligenza artificiale, dalla sperimentazione iniziale alla distribuzione finale.
-
Ambienti di addestramento coerenti: un team di data science può usare immagini Docker per condividere un ambiente di sviluppo unificato. Ad esempio, un ricercatore che lavora sul rilevamento degli oggetti può scaricare un'immagine preconfigurata contenente tutti i driver e le librerie necessari. In questo modo, quando addestra un modello YOLO26, i risultati sono riproducibili dai suoi colleghi, indipendentemente dalle differenze nell'hardware sottostante.
-
Distribuzione dell'intelligenza artificiale edge: nella videosorveglianza delle smart city, i modelli aggiornati devono essere inviati a migliaia di dispositivi edge, come telecamere del traffico o droni. I container Docker consentono agli ingegneri di raggruppare una nuova versione del modello e distribuirla via etere. Poiché il container include il runtime per l'inferenza, il processo di aggiornamento è fluido e non interferisce con il sistema operativo principale del dispositivo.
Docker, Kubernetes e macchine virtuali a confronto#
Per comprendere il ruolo specifico di Docker, è utile distinguerlo dalle tecnologie correlate:
- Docker e macchine virtuali (VMs) a confronto: le macchine virtuali virtualizzano l'hardware, ovvero ogni macchina virtuale esegue un sistema operativo completo, come Windows o Linux, sopra un hypervisor. Questo comporta un consumo significativo di memoria e CPU. Docker virtualizza il sistema operativo, rendendo i container molto più piccoli e rapidi delle macchine virtuali.
- Docker e Kubernetes a confronto: si tratta di tecnologie complementari, non concorrenti. Docker è lo strumento usato per creare ed eseguire singoli container. Kubernetes è una piattaforma di orchestrazione dei container che gestisce cluster di container Docker, occupandosi di attività come l'autoscaling, il bilanciamento del carico e l'autoriparazione in ambienti di cloud computing su larga scala.
Esempio: esecuzione dell'inferenza in un container#
L'esempio seguente mostra come potrebbe apparire uno script Python all'interno di un container Docker progettato per la computer vision. Questo script usa il pacchetto ultralytics per caricare un modello ed eseguire l'inferenza. L'ambiente del container garantisce che le dipendenze corrette, come opencv-python e torch, siano già presenti.
from ultralytics import YOLO
# Load the YOLO26 model (weights are typically included in the Docker image)
model = YOLO("yolo26n.pt")
# Perform inference on an image source
# In a containerized microservice, this might process incoming API requests
results = model.predict("https://ultralytics.com/images/bus.jpg")
# Log the detection results
print(f"Detected {len(results[0].boxes)} objects in the image.")Integrazione di Docker nel tuo workflow#
Per iniziare a usare la containerizzazione, gli sviluppatori definiscono in genere un file Dockerfile, ovvero un documento di testo contenente tutti i comandi necessari per assemblare un'immagine. Una volta create, queste immagini possono essere archiviate in registry come Docker Hub o nel Catalogo NVIDIA NGC, che offre container ottimizzati per GPU.
Per chi desidera semplificare il processo di addestramento e distribuzione senza gestire manualmente i Dockerfile, la Ultralytics Platform offre strumenti integrati che gestiscono la complessità degli ambienti cloud. In questo modo puoi concentrarti sul miglioramento dell'accuratezza del modello anziché sulla configurazione dell'infrastruttura. Inoltre, puoi consultare la nostra Guida rapida a Docker per scoprire subito come eseguire i modelli Ultralytics nei container.









