Konfigurieren von GPU-fähigen Knoten

Kubernetes bietet Unterstützung für die Verwaltung von Grafikprozessoren (GPUs) auf verschiedenen Knoten in einem Cluster. Dazu werden Device-Plug-ins eingesetzt.

In ArcGIS Enterprise on Kubernetes können Sie ein Device-Plug-in implementieren, um GPU-fähige Knoten in einem Cluster zu aktivieren und so GIS-Workflows zu optimieren, z. B. für Raster-Analysen und Deep Learning. Standardmäßig sind Funktionalitäten wie die Raster-Analyse so konfiguriert, dass sie im CPU-Modus ausgeführt werden. Sie bieten aber auch die flexible Möglichkeit zur Ausführung im GPU-Modus, sofern diese Ressourcen verfügbar sind.

Ob Sie die Bereitstellung und Verwendung von GPUs in einem Cluster in Erwägung ziehen, ist optional, da dies zusätzliche Kosten verursacht.

Zur Aktivierung der GPU ist ein NVIDIA-Device-Plug-in für Kubernetes erforderlich. Das NVIDIA-Device-Plug-in für Kubernetes ist ein DaemonSet, worüber Sie die Anzahl der GPUs auf jedem Knoten eines Clusters anzeigen, GPU-fähige Container ausführen und den Zustand der GPUs verfolgen können.

Hinweis:

Derzeit wird ArcGIS Enterprise on Kubernetes nur mit NVIDIA-GPUs unterstützt.

Aktivieren der GPU

Zum Aktivieren der GPU für Ihre Organisation führen Sie die folgenden Schritte aus; sie richten sich jedoch nach Ihrer Umgebung und Ihren Einstellungen.

  1. Führen Sie die Schritte zur Konfiguration von Raster-Analysen, Notebook-Services bzw. einer anderen Funktionalität, für die Sie GPU-fähige Knoten verwenden möchten, aus.
  2. Vergewissern Sie sich, dass das Device-Plug-in auf Ihrer Instanz installiert ist.

    Viele Cloud-Umgebungen verfügen über vorkonfigurierte GPU-Knoten. Wenn das Device-Plug-in nicht installiert ist, finden Sie weitere Informationen und Installationsschritte in der Dokumentation zum NVIDIA-Device-Plug-in für Kubernetes. Bei einer lokalen Bereitstellung muss der Administrator auf jedem Knoten in einem Cluster die GPU aktivieren.

  3. Konfigurieren Sie den Zugriff auf GPU-Ressourcen, um GPU-fähige Knoten für die GIS-Workflows Ihrer Organisation zu verwenden.
  4. Wenn GPU-Workloads ausschließlich auf GPU-Knoten ausgeführt werden sollen, können Sie optional die Knotenaffinität und Toleranzen konfigurieren.

Konfigurieren des Zugriffs auf GPU-Ressourcen

Wenn Sie die GPU für Notebook-Services aktivieren, finden Sie unter Anzeigen und Bearbeiten von Runtimes Informationen zum Festlegen von GPU-Einheiten pro Knoten.

Wenn Sie die GPU für Rasteranalysen aktivieren, führen Sie die folgenden Schritte aus, um das ArcGIS Enterprise Administrator API-Verzeichnis zu verwenden, um für jede der folgenden Bereitstellungen Anforderungen und Limits für die GPU festzulegen:

  • system-rasteranalysistools-gpsyncserver (wird für Trainingsmodelle verwendet)
  • system-rasterprocessinggpu-dpserver (wird für die Verarbeitung verwendet)

  1. Melden Sie sich als Administrator beim ArcGIS Enterprise Administrator API-Verzeichnis an.
  2. Klicken Sie auf System > Deployments.
  3. Suchen Sie nach der system-rasteranalysistools-gpsyncserver-Bereitstellung, und klicken Sie auf die zugehörige ID.
  4. Klicken Sie auf Edit Deployment.
  5. Suchen Sie im JSON-Code der Bereitstellung nach dem Abschnitt resources sowie den Parameter customResources.
              
    "containers": [
          {
            "name": "main-container",
            "resources": {
              "memoryMin": "4Gi",
              "memoryMax": "8Gi",
              "cpuMin": "0.125",
              "customResources": {
                "limits":{"nvidia.com/gpu": "1"},
                "requests":{"nvidia.com/gpu": "1"}
              },
              "cpuMax": "2"
            },
    
  6. Aktualisieren Sie den Parameter customResources für jeden aufgeführten Container, um Anforderungen und Limits für die GPU anzugeben.
  7. Klicken Sie auf Submit, um die Änderungen an der Bereitstellung zu speichern.
  8. Wiederholen Sie die Schritte für die system-rasterprocessinggpu-dpserver-Bereitstellung.

In der Dokumentation zur Administrator Directory API erfahren Sie, wie Sie Systembereitstellungen bearbeiten.

Konfigurieren der Knotenaffinität und Toleranzen

Auf GPU-Knoten können sowohl CPU- als auch GPU-Workloads ausgeführt werden. Wenn es zulässig ist, dass Ihre CPU-Workloads auf einem GPU-Knoten ausgeführt werden, sind keine weiteren Schritte erforderlich. Um sicherzustellen, dass GPU-Workloads ausschließlich auf GPU-Knoten ausgeführt werden, muss Ihr Administrator jedoch zusätzliche Schritte unternehmen, um die Knotenaffinität und Toleranzen zu konfigurieren. Führen Sie die folgenden Schritte aus, um die Knoten mit einem sog. Taint zu kennzeichnen und Toleranzen auf die entsprechenden Services anzuwenden, damit sie auf einem Knoten, der mit einem Taint gekennzeichnet ist, geplant werden können:

  1. Kennzeichnen Sie die GPU-Knoten mit einem Taint, um sicherzustellen, dass GPU-Workloads ausschließlich auf GPU-Knoten geplant werden.

    kubectl taint nodes <your-node-name> nvidia.com/gpu=Exists:NoExecute
    

  2. Geben Sie eine Beschriftung für die GPU-Knoten an. Sie können auch eine vorhandene Beschriftung verwenden, die bereits für den Knoten angegeben wurde.

    Um Knoten mit dem Schlüssel raster und dem Wert GPU für Rasteranalysen zu beschriften, verwenden Sie den folgenden Befehl:

    kubectl label nodes <your-node-name> raster=GPU
    

    Um Knoten beispielsweise mit dem Schlüssel notebook und dem Wert NotebooksGPUNode für Notebook-Services zu beschriften, verwenden Sie den folgenden Befehl:

    kubectl label nodes <your-node-name> notebook=NotebooksGPUNode
    

  3. Melden Sie sich bei ArcGIS Enterprise Manager als Administrator an.
  4. Öffnen Sie die Einstellungen für die Pod-Platzierung.

    Wenn Sie die GPU für Notebook-Services aktivieren, finden Sie unter Anzeigen und Bearbeiten von Runtimes Informationen zum Zugriff auf Einstellungen für die Pod-Platzierung.

    Führen Sie die folgenden Schritte aus, um auf Einstellungen für die Pod-Platzierung für Raster-Analysen zuzugreifen:

    1. Klicken Sie auf die Schaltfläche Services auf der Seitenleiste.
    2. Klicken Sie auf Systemdienste, und wählen Sie RasterProcessingGPU aus.
    3. Klicken Sie auf die Registerkarte Pod-Platzierung.
  5. Um eine Knotenaffinitätsregel anzuwenden, mit der sichergestellt wird, dass die Pods des Service auf GPU-Knoten geplant werden, geben Sie im Abschnitt Knotenaffinität die folgenden Informationen an, und klicken Sie auf Hinzufügen:
    • Typ: Erforderlich
    • Schlüssel: Geben Sie den Schlüssel an, der zur Beschriftung des GPU-Knotens verwendet wird, z. B. raster.
    • Operator: In
    • Wert: Geben Sie den Wert an, der für die Beschriftung des GPU-Knotens verwendet wird, z. B. GPU.
  6. Um eine Toleranz anzuwenden, die das Ausführen von Pods auf Knoten ermöglicht, die Sie mit Taints kennzeichnen, geben Sie im Abschnitt Toleranzen die folgenden Informationen an, und klicken Sie auf Hinzufügen:
    • Effekt: Keine Ausführung
    • Schlüssel: nvidia.com/gpu
    • Operator: Ist vorhanden

  7. Klicken Sie auf Speichern.
  8. Überprüfen Sie, ob GPU-Pods auf den GPU-Knoten ausgeführt werden.

Sie können beginnen, GPU-Ressourcen für Ihre Arbeitslast zu verwenden. Beachten Sie auch die Empfehlungen für das Optimieren von Raster-Analysen.