Yolo Vision Shenzhen
Shenzhen
Iscriviti ora
Glossario

Docker

Semplifica i flussi di lavoro AI/ML con Docker! Scopri come distribuire modelli, garantire la riproducibilità ed effettuare lo scaling in modo efficiente tra diversi ambienti.

Docker è una piattaforma open-source che automatizza il deployment, la scalabilità e la gestione delle applicazioni attraverso la containerizzazione. Nel campo in rapida evoluzione dell'intelligenza intelligenza artificiale (AI), Docker risolve un problema critico noto come "funziona sulla mia macchina". Impacchettando un modello di Machine Learning (ML) insieme al codice, al runtime, agli strumenti di sistema e alle librerie. codice, il runtime, gli strumenti di sistema e le librerie in un'unità standardizzata chiamata contenitore, Docker garantisce che il software verrà eseguito nello stesso modo, indipendentemente dall'ambiente di elaborazione. Questa coerenza è fondamentale per le moderne MLOps moderne, in quanto facilita transizioni fluide dallo sviluppo locale all'infrastruttura all'infrastruttura di cloud computing o ai dispositivi edge.

Concetti fondamentali di Docker

La comprensione di Docker richiede la familiarità con tre componenti fondamentali che ne definiscono il flusso di lavoro.

  • Dockerfile: Si tratta di un documento di testo contenente tutti i comandi che l'utente potrebbe richiamare sulla linea di comando per assemblare un'immagine. per assemblare un'immagine. Per un progetto di intelligenza artificiale, un Dockerfile agisce come una ricetta, specificando il sistema operativo di base sistema operativo di base, installando linguaggi come Pythone l'impostazione dei framework necessari framework necessari, come PyTorch o TensorFlow.
  • Immagine Docker: Un'immagine è un modello di sola lettura con le istruzioni per creare un contenitore Docker. Cattura lo stato dell'applicazione in un momento specifico. Gli sviluppatori spesso utilizzano immagini di base ottimizzate da registri come NVIDIA NGC per sfruttare i driver pre-installati per GPU per l'accelerazione delle GPU.
  • Contenitore Docker: Un contenitore è un'istanza eseguibile di un'immagine. Isola l'applicazione dal sistema dal sistema host, pur condividendo il kernel del sistema operativo dell'host. Questo isolamento assicura che i conflitti software siano conflitti software, un requisito chiave per una distribuzione stabile del modello. distribuzione stabile del modello.

Docker nelle applicazioni AI del mondo reale

Docker è indispensabile per la distribuzione di robuste soluzioni di soluzioni di computer vision (CV) robuste.

  1. Distribuzione dell'intelligenza artificiale sui bordi: Quando si distribuiscono i modelli su dispositivi a risorse limitate come gli NVIDIA Jetson, i contenitori Docker forniscono un ambiente leggero che include ambiente leggero che include dipendenze specifiche come OpenCV e librerie specifiche per l'hardware. Ad esempio, un contenitore Ultralytics YOLO11 confezionato in un contenitore Docker può essere facilmente inviato a migliaia di telecamere remote per il per il rilevamento di oggetti senza preoccuparsi della configurazione dei singoli dispositivi.
  2. Ricerca e formazione riproducibili: Nella ricerca accademica e industriale, la riproducibilità dei risultati è è fondamentale. Utilizzando Docker, i ricercatori possono congelare la versione esatta di ogni libreria utilizzata durante la formazione dei modelli. formazione dei modelli. Questo elimina le discrepanze causate dagli aggiornamenti del software e consente ad altri di verificare i risultati o di sviluppare il lavoro, favorendo una migliore collaborazione nella scienza dei dati. scienza dei dati.

Integrazione di Docker con YOLO

L'esecuzione dell'inferenza all'interno di un contenitore Docker aiuta a garantire che l'ambiente rimanga pulito e che le dipendenze non si scontrino con altri pacchetti a livello di sistema. non si scontrino con altri pacchetti a livello di sistema. Di seguito è riportato un semplice script Python che di solito viene eseguito all'interno di un contenitore Docker per eseguire operazioni di segmentazione o rilevamento di immagini. di rilevamento.

from ultralytics import YOLO

# Load the YOLO11 model (downloads automatically if not present)
model = YOLO("yolo11n.pt")

# Perform object detection on an online image source
results = model("https://ultralytics.com/images/bus.jpg")

# Print the number of objects detected to verify inference
print(f"Detected {len(results[0].boxes)} objects in the image.")

Docker contro le macchine virtuali

Entrambe le tecnologie, pur isolando le applicazioni, funzionano in modo diverso.

  • Macchine virtuali (VM): Una macchina virtuale emula un intero sistema informatico, compreso un sistema operativo guest completo. sistema operativo guest. Questo rende le macchine virtuali pesanti e più lente da avviare. Red Hat fornisce un confronto dettagliato che illustra le differenze architettoniche.
  • Contenitori Docker: I container virtualizzano il sistema operativo piuttosto che l'hardware. Condividono kernel dell'host, rendendoli significativamente più leggeri ed efficienti. Questa efficienza è fondamentale quando modelli ad alte prestazioni come l'imminente YOLO26, che mira a massimizzare la velocità e l'accuratezza con minimo overhead.

Rapporto con Kubernetes

Docker e Kubernetes sono strumenti distinti ma complementari. strumenti. Docker viene utilizzato per creare ed eseguire singoli container. Tuttavia, quando si gestiscono centinaia di container in un cluster di server per il servizio di modelli, è necessario uno strumento di strumento di orchestrazione. Kubernetes coordina la pianificazione e l'esecuzione dei container Docker, assicurando un'elevata disponibilità e scalabilità per un servizio di livello enterprise. disponibilità e scalabilità per gli agenti di agenti di intelligenza artificiale di livello aziendale. Per saperne di più su questa sinergia, consultare la documentazione di documentazione di Kubernetes.

I futuri sviluppi dell'ecosistema Ultralytics , come l'imminente Ultralytics Platform, sfrutteranno questi principi di containerizzazione per semplificare i flussi di lavoro di approvvigionamento, formazione e distribuzione dei dati. principi di containerizzazione per semplificare l'approvvigionamento dei dati, la formazione e i flussi di lavoro di distribuzione, astraendo ulteriormente le complessità della gestione dell'infrastruttura. complessità della gestione dell'infrastruttura.

Unitevi alla comunità di Ultralytics

Entra nel futuro dell'AI. Connettiti, collabora e cresci con innovatori globali

Iscriviti ora