GPU-fähige Knoten

Kubernetes bietet Unterstützung für die Verwaltung von Grafikprozessoren (GPUs) auf verschiedenen Knoten in Ihrem 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 Ihrem 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 Nutzung von GPUs in Ihrem 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 Ihres 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 gehören die folgenden Schritte; sie richten sich jedoch nach Ihrer Umgebung und Ihren Einstellungen.

  1. Führen Sie die Schritte zur Konfiguration der Raster-Analyse 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 im Cluster die GPU aktivieren.

  3. Legen Sie Anforderungen und Limits für die GPU fest, um GPU-fähige Knoten für die GIS-Workflows Ihrer Organisation zu nutzen.
  4. Wenn Sie GPU-Workloads ausschließlich auf GPU-Knoten ausführen möchten, können Sie optional die Knotenaffinität und Toleranzen konfigurieren.

Festlegen von Anforderungen und Limits für die GPU

Legen Sie über das ArcGIS Enterprise Administrator API-Verzeichnis für jede der folgenden Bereitstellungen Anforderungen und Limits für die GPU fest:

  • 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. Wenn Sie jedoch sicherstellen möchten, dass GPU-Workloads ausschließlich auf GPU-Knoten ausgeführt werden, muss Ihr Administrator zusätzliche Schritte unternehmen, um Knotenaffinität und Toleranzen zu konfigurieren. Zu diesem Zweck müssen die Knoten mit einem sog. Taint gekennzeichnet und Toleranzen auf die entsprechenden Services angewendet werden, damit sie auf einem Knoten, der mit einem Taint gekennzeichnet ist, geplant werden können. Dieser Konfigurationsvorgang umfasst die nachfolgenden Schritte.

  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.

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

  3. Bearbeiten Sie unter System die Platzierungsrichtlinie für den Service RasterProcessingGPU (DPServer), sodass er Knotenaffinität und Toleranzen verwendet.

          
    
    "podPlacementPolicy": {
              "tolerations": [{
                 "effect": "NoExecute",
                 "key": "nvidia.com/gpu",
                 "operator": "Exists"
              }],
              "nodeAffinity": {
                 "requiredDuringSchedulingIgnoredDuringExecution": {
                      "nodeSelectorTerms": [{
                           "matchExpressions": [{
                              "key": "raster",
                              "operator": "In",
                              "values": ["GPU"]
                            }]
                       }]
                  }
              }
          }
    

  4. Überprüfen Sie, ob GPU-Pods auf den GPU-Knoten ausgeführt werden.

Sie können nun Raster-Analysewerkzeuge verwenden und Bilddaten in Ihrer Organisation hosten. Beachten Sie auch die Empfehlungen für das Optimieren von Raster-Analysen.