Auf dieser Seite wird beschrieben, wie Sie Ihre GPU-Arbeitslasten so konfigurieren, dass die dynamische Ressourcenzuweisung in Ihren Google Distributed Cloud Bare Metal-Clustern verwendet wird. Die dynamische Ressourcenzuweisung ist eine Kubernetes-API, mit der Sie allgemeine Ressourcen wie GPUs für Pods und Container anfordern und freigeben können. Diese Ressourcen werden von Drittanbietertreibern verwaltet.
Bei der dynamischen Ressourcenzuweisung plant Kubernetes Pods basierend auf der referenzierten Gerätekonfiguration. App-Betreiber müssen in ihren Arbeitslasten keine bestimmten Knoten auswählen und nicht dafür sorgen, dass jeder Pod genau die Anzahl der Geräte anfordert, die an diese Knoten angehängt sind. Dieser Vorgang ähnelt dem Zuweisen von Volumes für den Speicher.
Mit dieser Funktion können Sie KI-Arbeitslasten ausführen, indem Sie die GPU-Ressourcen in Ihren Bare-Metal-Clustern dynamisch und präzise zuweisen. So lassen sich die Ressourcennutzung und die Leistung für anspruchsvolle Arbeitslasten verbessern.
Diese Seite richtet sich an Administratoren, Architekten und Betreiber, die den Lebenszyklus der zugrunde liegenden technischen Infrastruktur verwalten. Weitere Informationen zu gängigen Rollen und Beispielaufgaben, auf die wir in Google Cloud -Inhalten verweisen, finden Sie unter Häufig verwendete GKE Enterprise-Nutzerrollen und -Aufgaben.
Hinweise
Bevor Sie Ihre GPU-Arbeitslasten für die Verwendung der dynamischen Ressourcenzuweisung konfigurieren, müssen Sie prüfen, ob die folgenden Voraussetzungen erfüllt sind:
- Ihr Bare-Metal-Cluster hat Version 1.33.0 oder höher.
- Ihr Betriebssystem ist entweder Ubuntu 22.04 oder Red Hat Enterprise Linux (RHEL) 9.4.
- Sie haben Ihren Cluster aktualisiert, um die dynamische Ressourcenzuweisung zu aktivieren, wie unter Dynamische Ressourcenzuweisung aktivieren beschrieben.
- Sie haben mindestens einen Knotencomputer mit einer angehängten GPU und dem installierten NVIDIA-GPU-Treiber. Weitere Informationen finden Sie unter Mitgelieferten NVIDIA GPU-Operator installieren oder deinstallieren.
- Sie haben die Anleitung unter NVIDIA DRA Driver for GPUs (NVIDIA DRA-Treiber für GPUs) befolgt, um den NVIDIA DRA-Treiber auf allen Knoten mit angehängter GPU zu installieren.
GPU-Arbeitslasten erstellen, die die dynamische Ressourcenzuordnung verwenden
Damit Ihre GPU-Arbeitslasten die dynamische Ressourcenzuweisung zum Anfordern von GPUs nutzen können, müssen sie sich in einem freigegebenen Namespace mit einem ResourceClaim
befinden, das die Anfrage für die Zuweisung von GPU-Geräten beschreibt. Ihre Arbeitslasten müssen auf ResourceClaim
verweisen, damit Kubernetes GPU-Ressourcen zuweisen kann.
In den folgenden Schritten wird eine Umgebung eingerichtet, in der Ihre Arbeitslasten GPU-Ressourcen über die dynamische Ressourcenzuweisung anfordern:
Wenn Sie Ressourcen im Zusammenhang mit der dynamischen Ressourcenzuweisung erstellen möchten, erstellen Sie eine neue
Namespace
in Ihrem Cluster:cat <<EOF | kubectl apply --kubeconfig=CLUSTER_KUBECONFIG -f - apiVersion: v1 kind: Namespace metadata: name: NAMESPACE_NAME EOF
Ersetzen Sie Folgendes:
CLUSTER_KUBECONFIG
: der Pfad der kubeconfig-Datei des Nutzerclusters.NAMESPACE_NAME
durch den Namen für Ihren Namespace für die dynamische Ressourcenzuweisung.
Erstellen Sie eine
ResourceClaim
, um die Anfrage für den GPU-Zugriff zu beschreiben:cat <<EOF | kubectl apply --kubeconfig=CLUSTER_KUBECONFIG -f - apiVersion: resource.k8s.io/v1beta1 kind: ResourceClaim metadata: namespace: NAMESPACE_NAME name: RESOURCE_CLAIM_NAME spec: devices: requests: - name: gpu deviceClassName: gpu.nvidia.com EOF
Ersetzen Sie
RESOURCE_CLAIM_NAME
durch den Namen Ihres Ressourcenanspruchs für GPU-Anfragen.Erstellen Sie Arbeitslasten, die auf die
ResourceClaim
verweisen, die im vorherigen Schritt erstellt wurde.Die folgenden Beispiele für Arbeitslasten zeigen, wie Sie in einem Namespace
dra-test
auf eineResourceClaim
mit dem Namengpu-claim
verweisen. Die Container impod1
-Pod sind NVIDIA-CUDA-Beispiele (Compute Unified Device Architecture), die für die Ausführung von CUDA-Arbeitslasten auf den GPUs entwickelt wurden. Wenn derpod1
-Pod erfolgreich abgeschlossen wird, bedeutet das, dass die dynamische Ressourcenzuweisung ordnungsgemäß funktioniert und bereit ist, GPU-Ressourcen in Ihrem Cluster zu verwalten.Ubuntu
Wenden Sie das Manifest mit dem folgenden Befehl auf Ihren Cluster an:
cat <<EOF | kubectl apply --kubeconfig=CLUSTER_KUBECONFIG -f - apiVersion: v1 kind: Pod metadata: name: pod1 namespace: dra-test spec: restartPolicy: OnFailure resourceClaims: - name: gpu resourceClaimName: gpu-claim containers: - name: ctr0 image: nvcr.io/nvidia/k8s/cuda-sample:vectoradd-cuda12.5.0 resources: claims: - name: gpu - name: ctr1 image: nvcr.io/nvidia/k8s/cuda-sample:devicequery resources: claims: - name: gpu EOF
RHEL
Laden Sie das SELinux-Richtlinienmodul
nvidia_container_t
herunter und installieren Sie es. Es ist für den Zugriff auf GPUs erforderlich.Weitere Informationen finden Sie im NVIDIA-Repository dgx-selinux.
Wenden Sie das Manifest mit dem folgenden Befehl auf Ihren Cluster an:
cat <<EOF | kubectl apply --kubeconfig=CLUSTER_KUBECONFIG -f - apiVersion: v1 kind: Pod metadata: name: pod1 namespace: dra-test spec: restartPolicy: OnFailure securityContext: seLinuxOptions: type: nvidia_container_t resourceClaims: - name: gpu resourceClaimName: gpu-claim containers: - name: ctr0 image: nvcr.io/nvidia/k8s/cuda-sample:vectoradd-cuda12.5.0 resources: claims: - name: gpu - name: ctr1 image: nvcr.io/nvidia/k8s/cuda-sample:devicequery resources: claims: - name: gpu EOF
Beschränkungen
Beachten Sie bei der Verwendung der dynamischen Ressourcenzuweisung die folgenden Einschränkungen:
Wenn Sie RHEL OS verwenden, kann die SELinux-Richtlinie den Zugriff von Containern auf GPUs verhindern. Weitere Informationen finden Sie unter GPUs in Containern auf Bare-Metal-RHEL 8 verwenden.
Für dieses Feature wird die API-Gruppe
resource.k8s.io/v1beta1
verwendet, die sich von der Open-Source-Kubernetes-API-Gruppe für dieses Feature,resource.k8s.io/v1
, unterscheidet. Die Open-Source-API-Gruppev1
bietet mehr Funktionen und eine bessere Stabilität als die API-Gruppev1beta1
.
Nächste Schritte
- Weitere Informationen zur dynamischen Ressourcenzuweisung finden Sie in der Kubernetes-Dokumentation.
- Drittanbieter-LLMs auf Bare-Metal-Servern bereitstellen