View a markdown version of this page

Neuron-Geräte auf Amazon EKS verwalten - Amazon EKS

Unterstützung für die Verbesserung dieser Seite beitragen

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Um zu diesem Benutzerhandbuch beizutragen, wählen Sie den GitHub Link Diese Seite bearbeiten unter, der sich im rechten Bereich jeder Seite befindet.

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Neuron-Geräte auf Amazon EKS verwalten

AWS Trainium und AWS Inferentia sind speziell entwickelte Chips für maschinelles Lernen, die von entwickelt wurden. AWS Amazon EKS unterstützt zwei Mechanismen für die Verwaltung von Neuron-Geräten in EKS-Clustern: den Neuron DRA-Treiber und das Neuron Kubernetes-Geräte-Plugin.

Wir empfehlen die Verwendung von DRA-Treibern für neue Bereitstellungen mit Kubernetes-Versionen 1.34 und höher, wenn Sie die statische Kapazitätsbereitstellung in Karpenter, von EKS verwaltete Knotengruppen oder selbstverwaltete Knoten verwenden. DRA wird derzeit im EKS-Automatikmodus nicht unterstützt. Der Neuron DRA-Treiber bietet topologieorientierte Zuweisung, Planung verbundener Geräte, logische Konfiguration NeuronCore (LNC) und Zuweisung UltraServer mehrerer Knoten, ohne dass benutzerdefinierte Scheduler-Erweiterungen erforderlich sind.

Neuron-DRA-Treiber im Vergleich zum Neuron-Geräte-Plugin

Feature Neuron-DRA-Treiber Plugin für Neuron-Geräte

Mindestversion von Kubernetes

1.34

Alle EKS-supported Kubernetes-Versionen

EKS Compute

Karpenter (nur statische Kapazität), verwaltete Knotengruppen, selbstverwaltete Knoten

EKS Auto Mode, Karpenter, verwaltete Knotengruppen, selbstverwaltete Knoten

EKS-optimized AMI-Unterstützung

AL2023 (Neuron), Flaschenrakete

AL2023 (Neuron), Flaschenrakete

Werbung für Geräte

Umfassende Attribute anhand von ResourceSlice Objekten wie Geräte-ID, Instanztyp, Topologie, Treiberversion und EFA-Lokalität

Anzahl der Ressourcen als Ganzzahl und erweiterte Ressourcen aws.amazon.com/neuron aws.amazon.com/neuroncore

Untergruppen verbundener Geräte

Ordnen Sie Teilmengen von 1, 4, 8 oder 16 verbundenen Neuron-Geräten mithilfe von Topologiebeschränkungen zu

Erfordert die Neuron Scheduler-Erweiterung für die zusammenhängende Gerätezuweisung

LNC-Konfiguration

Per-workload Logische NeuronCore Konfiguration (LNC=1 oder LNC=2) über Parameter ResourceClaimTemplate

Erfordert eine Vorkonfiguration in den EC2-Startvorlagen

Attribute-based Auswahl

Filtern Sie Geräte mithilfe von CEL-Ausdrücken nach Instanztyp, Treiberversion und anderen Attributen

Nicht unterstützt

Topology-aware EFA-Zuweisung

DRA-native Kenntnis der Topologie

Automatische Topologieerkennung (nur AL2023 AMIs) EKS-optimized

Installieren Sie den Neuron DRA-Treiber

Der Neuron DRA-Treiber bewirbt Neuron-Geräte als ResourceSlice Objekte mit dem Namen. DeviceClass neuron.aws.com Der Treiber läuft als DaemonSet und erkennt automatisch Neuron-Geräte und ihre Topologieattribute.

Detaillierte Informationen zum Neuron DRA-Treiber finden Sie in der Neuron DRA-Dokumentation. https://awsdocs-neuron.readthedocs-hosted.com/en/latest/containers/neuron-dra.html#neuron-dra-driver-attributes-reference

Voraussetzungen

  • Ein Amazon EKS-Cluster mit Kubernetes-Version 1.34 oder höher mit statischer Kapazität, die von Karpenter bereitgestellt wird, von EKS verwalteten Knotengruppen oder selbstverwalteten Knotengruppen.

  • Knoten mit den Instanztypen Trainium oder Inferentia2. AWS

  • Weitere Informationen finden Sie in den Anweisungen zur Einrichtung von Helm.

  • kubectlkonfiguriert für die Kommunikation mit Ihrem Cluster, weitere Informationen finden Sie unterInstallieren oder aktualisieren Sie kubectl.

Verfahren

Wichtig

Installieren Sie den Neuron-DRA-Treiber nicht auf Knoten, auf denen das Neuron-Geräte-Plugin ausgeführt wird. Die beiden Mechanismen können nicht auf demselben Knoten koexistieren. Andernfalls kann es zu einer unbemerkten Überbelegung der zugrunde liegenden Geräte für mehrere Pods auf demselben Knoten kommen.

  1. Installieren Sie den Neuron DRA-Treiber mithilfe von Helm.

    helm upgrade --install neuron-helm-chart oci://public.ecr.aws/neuron/neuron-helm-chart \ --namespace neuron-dra-driver \ --create-namespace \ --set "devicePlugin.enabled=false" \ --set "npd.enabled=false" \ --set "draDriver.enabled=true"

    Der Treiber wird standardmäßig als DaemonSet im neuron-dra-driver Namespace mit dem bereitgestellt. DeviceClass neuron.aws.com

  2. Stellen Sie sicher, dass der DRA-Treiber ausgeführt DaemonSet wird.

    kubectl get ds -n neuron-dra-driver neuron-dra-driver-kubelet-plugin
    NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE neuron-dra-driver-kubelet-plugin 1 1 1 1 1 <none> 60s
  3. Stellen Sie sicher, dass der erstellt DeviceClass wurde.

    kubectl get deviceclass neuron.aws.com
    NAME AGE neuron.aws.com 60s
  4. Stellen Sie sicher, dass ResourceSlice Objekte für Ihre Knoten angekündigt werden.

    kubectl get resourceslice

Informationen zu den verfügbaren ResourceSlice Objektattributen finden Sie in der Neuron DRA-Dokumentation.

Fordern Sie Neuron-Geräte in einem Pod an

Um Neuron-Geräte mithilfe des DRA-Treibers anzufordern, erstellen Sie einen, der auf den verweistResourceClaimTemplate, neuron.aws.com DeviceClass und verweisen Sie in Ihrer Pod-Spezifikation darauf.

Das folgende Beispiel fordert alle Neuron-Geräte auf einer trn2.48xlarge Instanz an:

apiVersion: resource.k8s.io/v1 kind: ResourceClaimTemplate metadata: name: all-neurons spec: spec: devices: requests: - name: neurons exactly: deviceClassName: neuron.aws.com selectors: - cel: expression: "device.attributes['neuron.aws.com'].instanceType == 'trn2.48xlarge'" allocationMode: All --- apiVersion: v1 kind: Pod metadata: name: neuron-workload spec: containers: - name: app ... resources: claims: - name: neurons resourceClaims: - name: neurons resourceClaimTemplateName: all-neurons

Ordnen Sie Untergruppen verbundener Geräte zu

Der Neuron DRA-Treiber kann Teilmengen verbundener Neuron-Geräte zuweisen, ohne dass die Neuron-Scheduler-Erweiterung erforderlich ist. https://awsdocs-neuron.readthedocs-hosted.com/en/latest/containers/tutorials/k8s-neuron-scheduler.html Die unterstützten Teilmengengrößen sind 1, 4, 8 oder 16 Geräte. Verwenden Sie die matchAttribute Beschränkung mit einer Topologiegruppen-ID, um sicherzustellen, dass Geräte angeschlossen sind.

Das folgende Beispiel fordert 4 verbundene Neuron-Geräte an:

apiVersion: resource.k8s.io/v1 kind: ResourceClaimTemplate metadata: name: 1x4-connected-neurons spec: spec: devices: requests: - name: neurons exactly: deviceClassName: neuron.aws.com allocationMode: ExactCount count: 4 selectors: - cel: expression: "device.attributes['neuron.aws.com'].instanceType == 'trn2.48xlarge'" constraints: - requests: ["neurons"] matchAttribute: "resource.aws.com/devicegroup4_id"

Die unterstützten matchAttribute Werte für verbundene Teilmengen sindresource.aws.com/devicegroup1_id, resource.aws.com/devicegroup4_idresource.aws.com/devicegroup8_id, und. resource.aws.com/devicegroup16_id Die Zahl im devicegroup Attributnamen entspricht der Anzahl der Neuron-Geräte in der verbundenen Topologiegruppe. resource.aws.com/devicegroup1_idIdentifiziert beispielsweise ein einzelnes Neuron-Gerät, resource.aws.com/devicegroup4_id identifiziert eine Gruppe von 4 verbundenen Geräten resource.aws.com/devicegroup8_id und resource.aws.com/devicegroup16_id identifiziert Gruppen von 8 bzw. 16 verbundenen Geräten. Wählen Sie matchAttribute das Gerät aus, das dem Gerät count in Ihrer Anfrage entspricht, sodass die zugewiesenen Geräte derselben verbundenen Topologiegruppe angehören. Weitere Informationen zu diesen Attributen finden Sie in der Dokumentation zum Neuron DRA-Treiber.

Logisch konfigurieren NeuronCores (LNC)

Der Neuron DRA-Treiber ermöglicht eine logische NeuronCore Konfiguration pro Workload über Parameter. ResourceClaimTemplate Dadurch entfällt die Notwendigkeit, LNC in EC2-Startvorlagen vorzukonfigurieren.

Das folgende Beispiel fordert alle Neuron-Geräte an, bei denen LNC auf 1 gesetzt ist:

apiVersion: resource.k8s.io/v1 kind: ResourceClaimTemplate metadata: name: all-neurons-lnc-1 spec: spec: devices: requests: - name: neurons exactly: deviceClassName: neuron.aws.com selectors: - cel: expression: "device.attributes['neuron.aws.com'].instanceType == 'trn2.48xlarge'" allocationMode: All config: - requests: ["neurons"] opaque: driver: neuron.aws.com parameters: apiVersion: neuron.aws.com/v1 kind: NeuronConfig logicalNeuronCore: 1

Ordnen Sie Neuron-Geräten mit abgestimmten EFA-Schnittstellen zu

Siehe Topology-aware EFA und Gerätezuweisung GPU/Neuron

Installieren Sie das Neuron Kubernetes-Geräte-Plugin

Das Neuron Kubernetes-Geräte-Plugin bewirbt Neuron-Geräte als erweiterte Ressourcen. aws.amazon.com/neuron NeuronCores aws.amazon.com/neuroncore Sie fordern Neuron-Geräte in Container-Ressourcenanforderungen und -limits an.

Voraussetzungen

  • Ein Amazon EKS-Cluster.

  • Knoten mit Komponenten auf Host-Ebene, die für AWS Trainium- oder Inferentia-Instances installiert sind. AWS Diese sind enthalten, wenn Sie die beschleunigten AKS AL2023-AMIs oder die EKS-Bottlerocket-AMIs verwenden.

  • Weitere Informationen finden Sie in den Anweisungen zur Einrichtung von Helm.

  • kubectlkonfiguriert für die Kommunikation mit Ihrem Cluster, weitere Informationen finden Sie unterInstallieren oder aktualisieren Sie kubectl.

Verfahren

  1. Installieren Sie das Neuron Kubernetes-Geräte-Plugin mithilfe von Helm.

    helm upgrade --install neuron-helm-chart oci://public.ecr.aws/neuron/neuron-helm-chart \ --set "npd.enabled=false"
  2. Stellen Sie sicher, dass das Neuron-Geräte-Plugin läuft. DaemonSet

    kubectl get ds -n kube-system neuron-device-plugin
    NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE neuron-device-plugin 1 1 1 1 1 <none> 60s
  3. Stellen Sie sicher, dass Ihre Knoten über zuweisbare Neuron-Geräte verfügen.

    kubectl get nodes "-o=custom-columns=NAME:.metadata.name,NeuronDevice:.status.allocatable.aws\.amazon\.com/neuron,NeuronCore:.status.allocatable.aws\.amazon\.com/neuroncore"
    NAME NeuronDevice NeuronCore ip-192-168-47-173.us-west-2.compute.internal 1 2

Verifizieren Sie Neuron-Geräte mit einem Test-Pod

Sie können überprüfen, ob auf Neuron-Geräte zugegriffen werden kann, indem Sie das neuron-ls Tool in einem Test-Pod ausführen.

  1. Erstellen Sie eine Datei mit dem Namen neuron-ls.yaml und dem folgenden Inhalt. Dieses Manifest startet einen Neuron Monitor-Container, auf dem das neuron-ls Tool installiert ist.

    apiVersion: v1 kind: Pod metadata: name: neuron-ls spec: restartPolicy: Never containers: - name: neuron-container image: public.ecr.aws/g4h4h0b5/neuron-monitor:1.0.0 command: ["/bin/sh"] args: ["-c", "neuron-ls"] resources: limits: aws.amazon.com/neuron: 1 requests: aws.amazon.com/neuron: 1 tolerations: - key: "aws.amazon.com/neuron" operator: "Exists" effect: "NoSchedule"
  2. Das Manifest anwenden.

    kubectl apply -f neuron-ls.yaml
  3. Nachdem der Pod seine Ausführung beendet hat, sehen Sie sich seine Protokolle an.

    kubectl logs neuron-ls

    Eine Beispielausgabe sieht wie folgt aus.

    instance-type: inf2.xlarge instance-id: ... +--------+--------+--------+---------+ | NEURON | NEURON | NEURON | PCI | | DEVICE | CORES | MEMORY | BDF | +--------+--------+--------+---------+ | 0 | 2 | 32 GB | 00:1f.0 | +--------+--------+--------+---------+
Anmerkung

Wenn Sie das Neuron-Geräte-Plugin verwenden, ist für die fortlaufende Gerätezuweisung auf Instanzen mit mehreren Neuron-Geräten (z. B.trn2.48xlarge) die Neuron Kubernetes-Scheduler-Erweiterung erforderlich. https://awsdocs-neuron.readthedocs-hosted.com/en/latest/containers/tutorials/k8s-neuron-scheduler.html Der Neuron DRA-Treiber verarbeitet dies automatisch anhand von Topologiebeschränkungen.

Weitere Informationen zur Verwendung von Neuron-Geräten mit Amazon EKS finden Sie in der Neuron-Dokumentation zur Ausführung auf EKS.