Docker
Esplora come Docker abilita il deployment riproducibile dell'AI. Impara a impacchettare i modelli di Ultralytics YOLO26 in container per un ridimensionamento fluido dal cloud ai dispositivi edge.
Docker è una piattaforma open-source che consente agli sviluppatori di automatizzare il deployment, il ridimensionamento e la gestione delle applicazioni tramite la containerizzazione. Nel contesto dell'intelligenza artificiale e del machine learning, Docker funge da unità software standardizzata che racchiude il codice e tutte le sue dipendenze (come librerie, strumenti di sistema e impostazioni), in modo che l'applicazione venga eseguita in modo rapido e affidabile da un ambiente di calcolo all'altro. Ciò elimina il comune problema del "sul mio computer funziona", garantendo che una rete neurale addestrata sul portatile di un ricercatore si comporti esattamente allo stesso modo quando viene distribuita su un enorme cloud server o su un dispositivo edge.
Link to this sectionPerché Docker è importante per l'intelligenza artificiale e il machine learning#
Le moderne machine learning operations (MLOps) si basano fortemente sulla riproducibilità e sulla portabilità. Un progetto di IA spesso comporta uno stack software complesso, che include versioni specifiche di Python, driver CUDA per l'accelerazione GPU e framework di deep learning come PyTorch o TensorFlow. Gestire tutto questo manualmente tra diversi team e infrastrutture è soggetto a errori.
Docker semplifica questo processo creando container leggeri e autonomi. A differenza delle tradizionali macchine virtuali (VM) 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. Ciò li rende significativamente più efficienti in termini di risorse e più veloci da avviare, il che è fondamentale quando si scala l'infrastruttura di model serving o si eseguono lavori di addestramento distribuiti.
Link to this sectionApplicazioni nel mondo reale#
Docker è onnipresente nel ciclo di vita dell'IA, dalla sperimentazione iniziale al deployment finale.
-
Ambienti di addestramento coerenti: un team di data science può utilizzare le immagini Docker per condividere un ambiente di sviluppo unificato. Ad esempio, un ricercatore che lavora sul rilevamento oggetti può eseguire il pull di un'immagine pre-costruita contenente tutti i driver e le librerie necessari. Ciò garantisce che, quando addestra un modello YOLO26, i risultati siano riproducibili dai colleghi, indipendentemente dalle differenze nell'hardware sottostante.
-
Deployment di Edge AI: nella sorveglianza di città intelligenti, i modelli aggiornati devono essere inviati a migliaia di dispositivi edge, come telecamere stradali o droni. I container Docker consentono agli ingegneri di racchiudere una nuova versione del modello e di distribuirla over-the-air. Poiché il container include il runtime di inferenza, il processo di aggiornamento è fluido e non interferisce con il sistema operativo principale del dispositivo.
Link to this sectionDocker vs. Kubernetes vs. Macchine virtuali#
È utile distinguere Docker dalle tecnologie correlate per comprenderne il ruolo specifico:
- Docker vs. Macchine virtuali (VM): le VM virtualizzano l'hardware, il che significa che ogni VM esegue un sistema operativo completo (come Windows o Linux) sopra un hypervisor. Questo consuma molta memoria e CPU. Docker virtualizza il sistema operativo, rendendo i container molto più piccoli e veloci delle VM.
- Docker vs. Kubernetes: si tratta di tecnologie complementari, non concorrenti. Docker è lo strumento utilizzato per creare ed eseguire i singoli container. Kubernetes è una piattaforma di orchestrazione di container che gestisce cluster di container Docker, gestendo attività come l'auto-scaling, il bilanciamento del carico e l'auto-riparazione in ambienti di cloud computing su larga scala.
Link to this sectionEsempio: eseguire l'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 utilizza 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.")Link to this sectionIntegrazione di Docker nel tuo flusso di lavoro#
Per iniziare con la containerizzazione, gli sviluppatori definiscono solitamente un Dockerfile, che è un documento di testo contenente tutti i comandi per assemblare un'immagine. Una volta create, queste immagini possono essere archiviate in registri come Docker Hub o il NVIDIA NGC Catalog, che offre container ottimizzati per GPU.
Per chi desidera semplificare il processo di addestramento e deployment senza gestire manualmente i Dockerfile, la Ultralytics Platform offre strumenti integrati che gestiscono la complessità degli ambienti cloud. Ciò consente agli utenti di concentrarsi sul miglioramento dell'accuratezza del modello piuttosto che sulla configurazione dell'infrastruttura. Inoltre, puoi esplorare la nostra Guida rapida a Docker per imparare a eseguire immediatamente i modelli Ultralytics nei container.






