Docker
Vereinfachen Sie KI/ML-Workflows mit Docker! Erfahren Sie, wie Sie Modelle bereitstellen, Reproduzierbarkeit sicherstellen und effizient über verschiedene Umgebungen hinweg skalieren.
Docker ist eine Open-Source-Plattform, die die Bereitstellung, Skalierung und Verwaltung von Anwendungen durch
Containerisierung. In dem sich schnell entwickelnden Bereich der
künstlicher Intelligenz (KI) löst Docker
eine kritische Herausforderung, die als "funktioniert auf meinem Rechner"-Problem bekannt ist. Durch das Verpacken eines
Machine Learning (ML) -Modell zusammen mit seinem
Code, Laufzeit, Systemtools und Bibliotheken in eine standardisierte Einheit, den Container, verpackt, garantiert Docker, dass die
Software unabhängig von der Computerumgebung immer auf die gleiche Weise ausgeführt wird. Diese Konsistenz ist entscheidend für moderne
MLOps-Pipelines und erleichtert
reibungslose Übergänge von der lokalen Entwicklung zur
Cloud-Computing-Infrastruktur oder Edge-Geräten.
Kernkonzepte von Docker
Um Docker zu verstehen, muss man mit drei grundlegenden Komponenten vertraut sein, die den Arbeitsablauf definieren.
-
Dockerdatei: Dies ist ein Textdokument, das alle Befehle enthält, die ein Benutzer auf der Kommandozeile aufrufen kann, um ein
Befehlszeile aufrufen kann, um ein Image zusammenzustellen. Für ein KI-Projekt dient ein
Dockerfile wie ein Rezept, das das Basis-Betriebssystem
Betriebssystems, die Installation von Sprachen wie Pythonund die Einrichtung der notwendigen
Frameworks wie PyTorch oder
TensorFlow.
-
Docker-Abbild: Ein Image ist eine schreibgeschützte Vorlage mit Anweisungen zur Erstellung eines Docker-Containers.
Es erfasst den Zustand der Anwendung zu einem bestimmten Zeitpunkt. Entwickler verwenden häufig optimierte Basis-Images von Registrierungsstellen
wie NVIDIA NGC, um die vorinstallierten Treiber für
GPU Beschleunigung zu nutzen.
-
Docker-Container: Ein Container ist eine lauffähige Instanz eines Images. Er isoliert die Anwendung vom
dem Host-System isoliert, während er den Kernel des Host-Betriebssystems mitbenutzt. Diese Isolierung gewährleistet, dass Softwarekonflikte
Softwarekonflikte minimiert werden, eine wichtige Voraussetzung für eine stabile
Modellbereitstellung.
Docker in KI-Anwendungen der realen Welt
Docker ist unverzichtbar für den Einsatz robuster
Computer Vision (CV) Lösungen.
-
Edge AI-Bereitstellung: Bei der Bereitstellung von Modellen auf ressourcenbeschränkten Geräten wie dem
NVIDIA Jetson, bieten Docker-Container eine
leichtgewichtige Umgebung, die spezifische Abhängigkeiten wie
OpenCV und hardwarespezifische Bibliotheken enthält. Zum Beispiel kann ein
Ultralytics YOLO11 Modell, verpackt in einem Docker-Container
kann problemlos an Tausende von Remote-Kameras zur
Objekterkennung übertragen werden, ohne sich um die
Konfiguration der einzelnen Geräte.
-
Reproduzierbare Forschung und Ausbildung: In der akademischen und industriellen Forschung ist die Reproduzierbarkeit der Ergebnisse
entscheidend. Durch die Verwendung von Docker können Forscher die genaue Version jeder Bibliothek, die während der
Modellschulung. Dies beseitigt Diskrepanzen, die durch
Software-Updates und ermöglicht es anderen, Ergebnisse zu überprüfen oder auf der Arbeit aufzubauen, was die Zusammenarbeit in der
Datenwissenschaft.
Integration von Docker mit YOLO
Die Ausführung von Inferenz innerhalb eines Docker-Containers stellt sicher, dass Ihre Umgebung sauber bleibt und Ihre Abhängigkeiten
nicht mit anderen Paketen auf Systemebene kollidieren. Nachfolgend finden Sie ein einfaches Python , das normalerweise innerhalb eines Docker
Containers ausgeführt wird, um Bildsegmentierungs- oder
Erkennungsaufgaben auszuführen.
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 vs. Virtuelle Maschinen
Beide Technologien isolieren zwar Anwendungen, funktionieren aber unterschiedlich.
-
Virtuelle Maschinen (VMs): Eine VM emuliert ein ganzes Computersystem, einschließlich eines vollständigen Gastbetriebssystems
system. Dies macht VMs schwer und langsamer beim Starten.
Red Hat bietet einen detaillierten Vergleich
der die architektonischen Unterschiede veranschaulicht.
-
Docker-Behälter: Container virtualisieren das Betriebssystem und nicht die Hardware. Sie teilen
den Kernel des Hosts, was sie deutlich schlanker und effizienter macht. Diese Effizienz ist entscheidend, wenn
Einsatz von Hochleistungsmodellen wie dem kommenden
YOLO26, das die Geschwindigkeit und Genauigkeit bei minimalem
minimalen Overhead.
Beziehung zu Kubernetes
Docker und Kubernetes sind unterschiedliche, aber komplementäre
Werkzeuge. Docker wird zur Erstellung und Ausführung einzelner Container verwendet. Bei der Verwaltung von Hunderten von Containern in einem
Cluster von Servern für die Bereitstellung von Modellen, wird ein
Orchestrierungstool benötigt. Kubernetes koordiniert die Planung und Ausführung von Docker-Containern und gewährleistet hohe
Verfügbarkeit und Skalierbarkeit für Enterprise-Grade
KI-Agenten. Weitere Informationen über diese Synergie finden Sie in der
Kubernetes-Dokumentation.
Künftige Entwicklungen im Ultralytics , wie etwa die kommende Ultralytics , werden diese
Containerisierungsprinzipien nutzen, um die Arbeitsabläufe für Datenbeschaffung, Schulung und Bereitstellung zu optimieren und die
Komplexität der Infrastrukturverwaltung weiter abstrahieren.