Glossar

Kubernetes

Entdecke, wie Kubernetes KI/ML-Workloads mit skalierbarer Modellbereitstellung, verteiltem Training und effizientem Ressourcenmanagement optimiert.

Trainiere YOLO Modelle einfach
mit Ultralytics HUB

Mehr erfahren

Kubernetes, oft auch als K8s abgekürzt, ist eine Open-Source-Plattform, die die Bereitstellung, Skalierung und den Betrieb von Anwendungscontainern automatisieren soll. Ursprünglich von Google entwickelt, wird Kubernetes heute von der Cloud Native Computing Foundation gepflegt. Es fungiert im Wesentlichen als Orchestrator für containerisierte Anwendungen und verwaltet sie in einem Cluster von Computern, damit sie effizient und zuverlässig laufen. Nutzer, die mit maschinellem Lernen vertraut sind, können sich Kubernetes als Dirigent eines Orchesters vorstellen, der dafür sorgt, dass die verschiedenen Instrumente (deine KI/ML-Anwendungskomponenten) harmonisch und in großem Umfang zusammenspielen.

Was ist Kubernetes?

Im Kern ist Kubernetes ein System zur Verwaltung von containerisierten Anwendungen. Container verpacken Softwarecode und seine Abhängigkeiten, damit Anwendungen einheitlich und konsistent in verschiedenen Computerumgebungen laufen können. Docker ist eine beliebte Containerisierungstechnologie, die oft mit Kubernetes verwendet wird. Kubernetes automatisiert viele der manuellen Prozesse, die mit der Bereitstellung, Verwaltung und Skalierung dieser containerisierten Anwendungen verbunden sind. Es fasst die Container, aus denen eine Anwendung besteht, in logischen Einheiten zusammen, um die Verwaltung und Erkennung zu erleichtern. Diese Einheiten, Pods genannt, werden in einem Cluster von Maschinen eingesetzt. Kubernetes übernimmt dann Aufgaben wie:

  • Service Discovery und Lastausgleich: Kubernetes kann einen Container über den DNS-Namen oder über seine eigene IP-Adresse offenlegen. Wenn der Datenverkehr zu einem Container hoch ist, kann Kubernetes die Lastverteilung übernehmen und den Netzwerkverkehr so verteilen, dass die Bereitstellung stabil ist.
  • Speicher-Orchestrierung: Mit Kubernetes kannst du automatisch das Speichersystem deiner Wahl einbinden, z. B. lokalen Speicher, öffentliche Cloud-Anbieter und mehr.
  • Automatisierte Rollouts und Rollbacks: Du kannst mit Kubernetes den gewünschten Zustand für deine bereitgestellten Container beschreiben, und Kubernetes ändert den tatsächlichen Zustand kontrolliert in den gewünschten Zustand. Kubernetes kann zum Beispiel die Erstellung neuer Container für deinen Einsatz automatisieren, bestehende Container entfernen und alle ihre Ressourcen in den neuen Container übernehmen.
  • Automatisches Packen der Container: Mit Kubernetes kannst du festlegen, wie viel CPU und RAM (Speicher) jeder Container benötigt. Kubernetes kann Container auf deine Nodes packen, um deine Ressourcen bestmöglich zu nutzen.
  • Selbstheilung: Kubernetes startet ausgefallene Container neu, ersetzt und plant Container neu, wenn Knoten ausfallen, beendet Container, die nicht auf deine benutzerdefinierte Gesundheitsprüfung reagieren, und gibt sie erst dann an Clients weiter, wenn sie bereit sind.
  • Geheimnis- und Konfigurationsmanagement: Mit Kubernetes kannst du sensible Informationen wie Passwörter, OAuth-Tokens und SSH-Schlüssel speichern und verwalten. Du kannst Geheimnisse und Anwendungskonfigurationen verteilen und aktualisieren, ohne deine Container-Images neu zu erstellen und ohne Geheimnisse in deiner Stack-Konfiguration preiszugeben.

Warum ist Kubernetes für KI und ML relevant?

Kubernetes ist im Bereich der KI und des maschinellen Lernens besonders wichtig, da ML-Workloads ressourcenintensiv und skalierbar sind. Das Trainieren großer Modelle, insbesondere Ultralytics YOLO Modelle für die Objekterkennung, erfordert oft verteilte Rechenleistung auf mehreren GPUs oder TPUs. Kubernetes bietet die Infrastruktur, um diese verteilten Ressourcen effizient zu verwalten.

Außerdem erfordert der Einsatz von KI/ML-Modellen für Inferenzen im großen Maßstab eine robuste und skalierbare Infrastruktur. Kubernetes vereinfacht die Bereitstellung von Modellen, indem es den Nutzern ermöglicht, ihre Modelle in Container zu verpacken und sie über skalierbare APIs bereitzustellen. Dies ist entscheidend für reale Anwendungen, die geringe Latenzzeiten und einen hohen Durchsatz erfordern.

Anwendungen von Kubernetes in AI/ML

  1. Skalierbares Modell Serving: Betrachten wir eine Echtzeit-Anwendung zur Objekterkennung, z. B. ein intelligentes Verkehrsmanagementsystem für die Stadt. Ultralytics YOLOv8. Wenn die Stadt wächst, steigt der Bedarf an der Verarbeitung von Video-Feeds von mehr Kameras. Mit Kubernetes kannst du die Model-Serving-Infrastruktur dynamisch skalieren. Indem du dein YOLOv8 Modell als containerisierten Dienst auf Kubernetes bereitstellst, kannst du die Anzahl der Modellinstanzen je nach eingehendem Datenverkehr leicht erhöhen oder verringern und so eine gleichbleibende Leistung auch bei hoher Last sicherstellen. Diese Skalierbarkeit ist wichtig, um niedrige Latenzzeiten und hohe Verfügbarkeit bei Echtzeit-KI-Anwendungen zu gewährleisten.

  2. Verteiltes Training: Das Training moderner KI-Modelle erfordert oft große Datensätze und viel Rechenleistung. Um die Trainingszeit zu verkürzen, ist ein verteiltes Training auf einem Cluster von Maschinen notwendig. Kubernetes kann verteilte Trainingsaufträge orchestrieren, indem es die Verteilung der Arbeitslast auf mehrere Knoten verwaltet, den Fortschritt überwacht und mit Ausfällen umgeht. Du könntest Kubernetes zum Beispiel verwenden, um einen verteilten Trainingsauftrag für ein großes Bildklassifizierungsmodell mit einem Datensatz wie ImageNet zu verwalten. Kubernetes stellt sicher, dass jeder Trainingsknoten richtig konfiguriert ist, die Daten effizient verteilt werden und der gesamte Trainingsprozess gegen Knotenausfälle gewappnet ist.

Zusammenfassend lässt sich sagen, dass Kubernetes ein leistungsfähiges Tool für die Verwaltung der komplexen KI- und ML-Workloads ist, das sowohl in der Trainings- als auch in der Bereitstellungsphase Skalierbarkeit, Ausfallsicherheit und Effizienz bietet. Seine Fähigkeit, containerisierte Anwendungen zu orchestrieren, macht es zu einer idealen Plattform für den Aufbau und Betrieb moderner, skalierbarer KI-Systeme.

Alles lesen