Docker
Erfahre, wie Docker eine reproduzierbare KI-Bereitstellung ermöglicht. Lerne, Ultralytics YOLO26-Modelle in Containern zu verpacken, um eine nahtlose Skalierung von der Cloud bis hin zu Edge-Geräten zu erreichen.
Docker ist eine Open-Source-Plattform, die es Entwicklern ermöglicht, die Bereitstellung, Skalierung und Verwaltung von Anwendungen mithilfe von Containerisierung zu automatisieren. Im Kontext von künstlicher Intelligenz und maschinellem Lernen fungiert Docker als standardisierte Softwareeinheit, die Code und alle seine Abhängigkeiten – wie Bibliotheken, Systemwerkzeuge und Einstellungen – bündelt, sodass die Anwendung schnell und zuverlässig von einer Rechenumgebung in eine andere läuft. Dies beseitigt das häufige Problem „auf meinem Rechner funktioniert es“ und stellt sicher, dass ein auf dem Laptop eines Forschers trainiertes neural network bei der Bereitstellung auf einem massiven Cloud-Server oder einem Edge-Gerät exakt genauso funktioniert.
Warum Docker für KI und maschinelles Lernen wichtig ist#
Moderne machine learning operations (MLOps) basieren stark auf Reproduzierbarkeit und Portabilität. Ein KI-Projekt umfasst häufig einen komplexen Software-Stack, einschließlich spezifischer Versionen von Python, CUDA-Treibern für GPU acceleration und Deep-Learning-Frameworks wie PyTorch oder TensorFlow. Die manuelle Verwaltung dieser Komponenten über verschiedene Teams und Infrastrukturen hinweg ist fehleranfällig.
Docker vereinfacht dies, indem es leichtgewichtige, eigenständige Container erstellt. Im Gegensatz zu herkömmlichen virtuellen Maschinen (VMs), die für jede Instanz ein vollständiges Betriebssystem erfordern, teilen sich Container den Betriebssystemkern der Host-Maschine, laufen jedoch in isolierten Benutzerbereichen. Dies macht sie deutlich ressourceneffizienter und schneller im Start, was bei der Skalierung der model serving-Infrastruktur oder der Durchführung verteilter Trainingsjobs von entscheidender Bedeutung ist.
Praxisanwendungen#
Docker ist im KI-Lebenszyklus allgegenwärtig, von der ersten Experimentierphase bis zur endgültigen Bereitstellung.
-
Konsistente Trainingsumgebungen: Ein Data-Science-Team kann Docker-Images verwenden, um eine einheitliche Entwicklungsumgebung zu teilen. Beispielsweise kann ein Forscher, der an der object detection arbeitet, ein vorgefertigtes Image abrufen, das alle erforderlichen Treiber und Bibliotheken enthält. Dies stellt sicher, dass beim Training eines YOLO26-Modells die Ergebnisse von den Kollegen reproduzierbar sind, unabhängig von den zugrundeliegenden Hardwareunterschieden.
-
Edge-KI-Bereitstellung: Bei der smart city surveillance müssen aktualisierte Modelle auf Tausenden von Edge-Geräten wie Verkehrskameras oder Drohnen bereitgestellt werden. Docker-Container ermöglichen es Ingenieuren, eine neue Modellversion zu verpacken und drahtlos (Over-the-Air) bereitzustellen. Da der Container die Inferenz-Laufzeitumgebung enthält, verläuft der Aktualisierungsprozess nahtlos und beeinträchtigt nicht das Kernbetriebssystem des Geräts.
Docker vs. Kubernetes vs. Virtuelle Maschinen#
Es ist hilfreich, Docker von verwandten Technologien abzugrenzen, um seine spezifische Rolle zu verstehen:
- Docker vs. Virtuelle Maschinen (VMs): VMs virtualisieren die Hardware, was bedeutet, dass jede VM ein vollwertiges Betriebssystem (wie Windows oder Linux) auf einem Hypervisor ausführt. Dies verbraucht erheblichen Arbeitsspeicher und CPU-Leistung. Docker virtualisiert das Betriebssystem, wodurch Container wesentlich kleiner und schneller als VMs sind.
- Docker vs. Kubernetes: Dies sind komplementäre, keine konkurrierenden Technologien. Docker ist das Werkzeug zum Erstellen und Ausführen einzelner Container. Kubernetes ist eine Container-Orchestrierungsplattform, die Cluster von Docker-Containern verwaltet und Aufgaben wie automatisches Skalieren, Lastenausgleich und Selbstheilung in groß angelegten cloud computing-Umgebungen übernimmt.
Beispiel: Ausführung von Inference in einem Container#
Das folgende Beispiel veranschaulicht, wie ein Python-Skript innerhalb eines Docker-Containers aussehen könnte, der für Computer Vision entwickelt wurde. Dieses Skript verwendet das Paket ultralytics, um ein Modell zu laden und eine Inferenz durchzuführen. Die Container-Umgebung stellt sicher, dass die korrekten Abhängigkeiten (wie opencv-python und torch) bereits vorhanden sind.
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.")Integration von Docker in deinen Workflow#
Um mit der Containerisierung zu beginnen, definieren Entwickler typischerweise ein Dockerfile, bei dem es sich um ein Textdokument mit allen Befehlen zum Zusammenstellen eines Images handelt. Nach dem Erstellen können diese Images in Registries wie dem Docker Hub oder dem NVIDIA NGC Catalog gespeichert werden, der GPU-optimierte Container bereitstellt.
Für diejenigen, die den Trainings- und Bereitstellungsprozess optimieren möchten, ohne Dockerfiles manuell zu verwalten, bietet die Ultralytics Platform integrierte Werkzeuge, die die Komplexität von Cloud-Umgebungen handhaben. Dies ermöglicht es Anwendern, sich auf die Verbesserung der model accuracy zu konzentrieren, anstatt die Infrastruktur zu konfigurieren. Darüber hinaus kannst du unseren Docker Quickstart Guide erkunden, um zu erfahren, wie du Ultralytics-Modelle sofort in Containern ausführen kannst.






