Glossar

Containerisierung

Entdecken Sie die Vorteile der Containerisierung für KI/ML-Projekte. Optimieren Sie Arbeitsabläufe, gewährleisten Sie Konsistenz und skalieren Sie effizient mit modernsten Tools.

Die Containerisierung ist eine Methode zur Paketierung von Softwarecode zusammen mit allen erforderlichen Abhängigkeiten, Bibliotheken und Konfigurationsdateien in eine einzige, in sich geschlossene Einheit, den "Container". Durch diese Paketierung wird sichergestellt, dass Anwendungen in verschiedenen Computerumgebungen zuverlässig und konsistent ausgeführt werden, unabhängig davon, ob es sich um den lokalen Rechner eines Entwicklers, eine Testumgebung oder einen Produktionsserver in der Cloud handelt. Im Gegensatz zu herkömmlichen virtuellen Maschinen (VMs), die für jede Instanz ein vollständiges Betriebssystem benötigen, nutzen Container den Betriebssystemkern des Hostsystems gemeinsam. Dadurch sind sie deutlich schlanker, schneller zu starten und effizienter in der Ressourcennutzung, was besonders für ressourcenintensive Anwendungen der künstlichen Intelligenz (KI) und des maschinellen Lernens (ML) von Vorteil ist, die oft komplexe Softwareanforderungen haben.

Wichtige Konzepte und Komponenten

Zum Verständnis der Containerisierung gehören ein paar Kerngedanken:

  • Container-Abbild: Ein schlankes, eigenständiges, ausführbares Paket, das alles enthält, was zum Ausführen einer Software erforderlich ist: Code, Laufzeit, Systemtools, Systembibliotheken und Einstellungen. Images werden oft auf der Grundlage von Anweisungen in einer speziellen Datei (wie einer Dockerdatei) erstellt.
  • Container: Eine laufende Instanz eines Container-Images. Er läuft isoliert von anderen Containern und dem Host-System, nutzt aber den Kernel des Host-Betriebssystems. Mehrere Container können auf demselben Host-Rechner laufen.
  • Docker: Die beliebteste Containerisierungsplattform, die von Docker, Inc. entwickelt wurde. Sie bietet Tools zur einfachen Erstellung, Freigabe und Ausführung von containerisierten Anwendungen. Ultralytics bietet eine Docker-Schnellstart-Anleitung für die Einrichtung von YOLO-Modellen.
  • Container-Register: Ein Repository zum Speichern und Verteilen von Container-Images. Docker Hub ist eine weit verbreitete öffentliche Registry, aber auch private Registries sind üblich.
  • Orchestrierung: Tools wie Kubernetes und Docker Swarm werden verwendet, um den Lebenszyklus von Containern in großem Maßstab zu verwalten und die Bereitstellung, Skalierung, Vernetzung und Verfügbarkeit über mehrere Host-Rechner hinweg zu handhaben. Die Cloud Native Computing Foundation (CNCF) beherbergt viele Projekte im Zusammenhang mit der Container-Orchestrierung.

Vorteile der Containerisierung in AI/ML

Die Containerisierung bietet erhebliche Vorteile für ML- und KI-Projekte:

  • Reproduzierbarkeit: Container kapseln die genaue Umgebung (Bibliotheken, Versionen wie PyTorch oder OpenCV, Konfigurationen), die für die Ausführung einer Anwendung oder eines Modells benötigt wird, und gewährleisten so die Konsistenz zwischen Entwicklung, Test und Produktion. Dies ist entscheidend für reproduzierbare Forschung und zuverlässige Modellbereitstellung.
  • Verwaltung von Abhängigkeiten: AI/ML-Projekte sind oft auf bestimmte Versionen zahlreicher Bibliotheken angewiesen. Container isolieren diese Abhängigkeiten und verhindern Konflikte zwischen verschiedenen Projekten oder Systembibliotheken.
  • Skalierbarkeit: Container können schnell gestartet und gestoppt werden, so dass sich Anwendungen je nach Bedarf leicht vergrößern oder verkleinern lassen, was für die Bewältigung variabler Arbeitslasten bei Echtzeit-Inferenzen unerlässlich ist. Dies unterstützt die Anforderungen an die Skalierbarkeit von Berechnungen.
  • Übertragbarkeit: Container können in verschiedenen Umgebungen konsistent ausgeführt werden - vom Laptop eines Entwicklers bis hin zu Servern vor Ort oder öffentlichen Clouds wie AWS, Google Cloud oder Microsoft Azure. Dies vereinfacht die Bereitstellung auf verschiedenen Zielen, einschließlich Edge-Geräten. Erforschen Sie die verschiedenen Optionen für die Modellbereitstellung, die durch die Containerisierung erleichtert werden.
  • Effizienz: Container verbrauchen weniger Ressourcen (CPU, Arbeitsspeicher, Speicher) als VMs, da sie kein separates Betriebssystem für jede Instanz benötigen, was eine höhere Anwendungsdichte auf derselben Hardware ermöglicht. Dies steht im Einklang mit effizienten Machine Learning Operations (MLOps).

Containerisierung vs. Virtualisierung

Obwohl sowohl die Containerisierung als auch die Virtualisierung isolierte Umgebungen schaffen, unterscheidet sich ihr Ansatz erheblich. Virtuelle Maschinen (VMs) emulieren ein komplettes Hardwaresystem und führen ein vollständiges Gastbetriebssystem auf einem Hypervisor aus. Dies bietet eine starke Isolierung, verursacht jedoch einen erheblichen Overhead in Bezug auf den Ressourcenverbrauch(CPU, Speicher) und die Startzeit. Bei Containern hingegen wird das Betriebssystem selbst virtualisiert und der Kernel des Host-Betriebssystems über Containerisierungs-Engines wie Docker gemeinsam genutzt. Dies führt zu einem wesentlich geringeren Platzbedarf, einem schnelleren Start und einer besseren Leistung. Für viele KI/ML-Aufgaben, insbesondere für die Bereitstellung von Microservices oder Anwendungen, die eine schnelle Skalierbarkeit erfordern, werden Container häufig bevorzugt. VMs sind nach wie vor geeignet, wenn verschiedene Betriebssysteme auf derselben Hardware ausgeführt werden müssen oder eine maximale Isolierung zwischen Anwendungen erforderlich ist.

Real-World-Anwendungen in AI/ML

Die Containerisierung ist im gesamten Lebenszyklus von KI/ML weit verbreitet:

  1. Bereitstellung von Objekterkennungsmodellen: Ein für die Objekterkennung trainiertes Ultralytics YOLO-Modell kann in einen Docker-Container gepackt werden. Dieser Container enthält die Modellgewichte, das Inferenzskript und alle erforderlichen Abhängigkeiten(PyTorch, CUDA-Bibliotheken usw.). Dieser Container kann dann konsistent auf verschiedenen Plattformen eingesetzt werden, von leistungsstarken Cloud-GPUs bis hin zu ressourcenbeschränkten Edge-KI-Geräten, um sicherzustellen, dass das Modell unabhängig von der Umgebung die erwartete Leistung erbringt. Ultralytics bietet eine Docker-Schnellstart-Anleitung, um dies zu erleichtern.
  2. NLP-Modelle als Microservices bereitstellen: Ein Team, das eine NLP-Anwendung (Natural Language Processing) entwickelt und dabei Modelle von Plattformen wie Hugging Face verwendet, kann verschiedene Komponenten (z. B. Textvorverarbeitung, Modellinferenz, API-Endpunkt) als separate Microservices containerisieren. Diese Container können mit Kubernetes verwaltet werden, was eine unabhängige Skalierung und Aktualisierung der einzelnen Komponenten ermöglicht und zu einer robusteren und besser verwaltbaren Systemarchitektur führt, die häufig den Grundsätzen der Microservices-Architektur folgt. Plattformen wie Ultralytics HUB nutzen ebenfalls die Prinzipien der Containerisierung für eine optimierte Modellverwaltung und -bereitstellung.

Die Containerisierung, die durch Bestrebungen wie die Open Container Initiative (OCI) standardisiert wurde, ist zu einem Eckpfeiler der modernen Softwareentwicklung und -bereitstellung geworden, insbesondere in den sich schnell entwickelnden Bereichen KI und Computer Vision (CV).

Werden Sie Mitglied der Ultralytics-Gemeinschaft

Beteiligen Sie sich an der Zukunft der KI. Vernetzen Sie sich, arbeiten Sie zusammen und wachsen Sie mit globalen Innovatoren

Jetzt beitreten
Link in die Zwischenablage kopiert