Dynamisches Slicing in GKE

In diesem Dokument wird dynamisches Slicing in Google Kubernetes Engine (GKE) beschrieben. Mit dem dynamischen Slicing können Sie bereitgestellte TPU-Unterblöcke in verschiedenen Topologien konfigurieren. Diese Funktion macht es weniger erforderlich, Knotenpools neu zu erstellen, verbessert die Fehlertoleranz durch automatische Wiederherstellung bei einem Fehler und optimiert die Ressourcennutzung.

Das dynamische Slicing ist für KI-/ML-Entwickler und Plattformadministratoren gedacht, die die TPU-Auslastung optimieren, die Bereitstellungszeit verkürzen und die Fehlertoleranz für umfangreiche Trainings- und Inferenzarbeitslasten verbessern möchten.

Bevor Sie dieses Dokument lesen, sollten Sie mit Folgendem vertraut sein:

Was ist dynamisches Slicing?

Dynamisches Slicing bietet Flexibilität bei der Verwaltung der Cloud TPU-Kapazität, da Sie die TPU-Bereitstellung entkoppeln können. Das dynamische Aufteilen umfasst die folgenden Schritte:

  1. Ressourcen als kleinere Einheiten bereitstellen: Sie stellen Ressourcen als Einheiten bereit, die als Unterblöcke bezeichnet werden. Ein Unterblock ist die grundlegende logische Baueinheit der Ironwood-Kapazität (TPU7x). Bei Ironwood (TPU7x) stellt ein Unterblock eine Gruppe von 16 TPU-VMs mit einer 4x4x4-Topologie miteinander verbundener TPU-Chips dar. Im Kontext des TPU-Modus „Alle Kapazitäten“ und des dynamischen Slicings wird ein Knotenpool direkt einem Unterblock zugeordnet.
  2. Unterblöcke zusammenfügen: Beim dynamischen Slicing werden diese Unterblöcke zu größeren Slices zusammengefügt.

Vorteile des dynamischen Aufteilens

Dynamisches Aufteilen bietet folgende Vorteile:

  • Bereitstellungszeit verkürzen: Die individuelle Bereitstellung von Unterblöcken führt zu einer schnelleren Gesamtbereitstellung, da die Auswirkungen eines einzelnen Fehlers minimiert werden.
  • Zeit bis zur Wiederherstellung verkürzen: Bei einem TPU-Chipfehler ist die kleinste Fehlerquelle ein Unterblock. Durch dynamisches Slicing werden fehlerhafte Unterblöcke isoliert, sodass Arbeitslasten schneller auf fehlerfreien Unterblöcken neu geplant werden können, als wenn ein großer Slice neu bereitgestellt werden muss.
  • Kapazität neu gestalten: Wenn Sie unterschiedliche Anforderungen an Arbeitslasten haben, müssen Sie Knotenpools für Topologieänderungen nicht löschen und neu erstellen. Stattdessen können Sie die bereitgestellten Knotenpools dynamisch neu konfigurieren, um sie an die angegebenen Formen anzupassen.

Wichtige Elemente des dynamischen Aufteilens

Beim dynamischen Aufteilen werden die folgenden wichtigen Konzepte eingeführt:

  • Inkrementelle Bereitstellung von Knotenpools: Beim dynamischen Slicing wird die inkrementelle Bereitstellung verwendet, ein fehlertolerantes Bereitstellungsmodell für Knotenpools. Bei diesem Modell wird Ihre gesamte TPU-Kapazität in Knotenpools mit einer Gruppe von 16 TPU-VMs umgewandelt.
  • Slice-Controller: Ein Kubernetes-Controller für benutzerdefinierte Ressourcen, der in der GKE-Steuerungsebene ausgeführt wird und das dynamische Slicing verwaltet. Der Slice-Controller verwaltet den Lebenszyklus einer benutzerdefinierten Slice-Ressource, die einen dynamischen Slice darstellt. Der Slice-Controller ist für das Erstellen, kontinuierliche Überwachen und Löschen des Slice zuständig. Wenn Sie einen Scheduler verwenden, steuert dieser die Erstellung und Löschung der benutzerdefinierten Slice-Ressource.
  • Benutzerdefinierte Slice-Ressource: Fügt Unterblöcke basierend auf der angeforderten TPU-Topologie dynamisch zusammen. Dieser Prozess basiert auf der dynamischen Neukonfiguration des OCS-Netzwerks, um die TPU-Knotenpools zu verbinden. So wird eine optimierte Leistung erzielt. Sie können den Fortschritt oder den Zustand der dynamischen Segmentbildung prüfen, indem Sie die Statusfelder der benutzerdefinierten Slice-Ressource untersuchen.

Planer für dynamisches Slicing

Sie können Kueue und Topology Aware Scheduling (TAS) so konfigurieren, dass automatisch eine benutzerdefinierte Slice-Ressource erstellt wird. Sie können auch einen eigenen Scheduler verwenden, um benutzerdefinierte Slice-Ressourcen zu verwalten.

Nächste Schritte