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 auf, 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.

Es wird empfohlen, den Neuron DRA-Treiber für neue Bereitstellungen auf EKS-Clustern zu verwenden, auf denen Kubernetes Version 1.34 oder höher ausgeführt wird. Der Neuron DRA-Treiber ermöglicht eine topologieorientierte Zuordnung, die Planung von Teilmengen verbundener Geräte, die logische Konfiguration NeuronCore (LNC) und die Zuweisung mehrerer Knoten, ohne dass benutzerdefinierte Scheduler-Erweiterungen erforderlich sind. UltraServer Das Neuron-Geräte-Plugin wird weiterhin unterstützt.

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

Feature Neuron DRA-Treiber Neuron-Geräte-Plugin

Mindestversion von Kubernetes

1.34

Alle von EKS unterstützten Kubernetes-Versionen

Automatischer Modus von Karpenter und EKS

Nicht unterstützt

Unterstützt

EKS-optimierte AMI-Unterstützung

AL2023

AL2023, Bottlerocket

Werbung für Geräte

Umfangreiche Attribute über ResourceSlice Objekte wie Geräte-ID, Instanztyp, Topologie, Treiberversion und EFA-Lokalität

Ganzzahlzahl und erweiterte aws.amazon.com/neuron Ressourcen aws.amazon.com/neuroncore

Untergruppen verbundener Geräte

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

Erfordert die Neuron Scheduler-Erweiterung für die Zuordnung zusammenhängender Geräte

LNC-Konfiguration

Logische NeuronCore Konfiguration pro Workload (LNC=1 oder LNC=2) über Parameter ResourceClaimTemplate

Erfordert eine Vorkonfiguration in EC2-Startvorlagen

Attributbasierte Auswahl

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

Nicht unterstützt

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.

Die Verwendung des Neuron DRA-Treibers mit Bottlerocket wird derzeit nicht unterstützt.

Voraussetzungen

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. Updates finden Sie unter Upstream Kubernetes KEP-5004.

  1. Installieren Sie den Neuron DRA-Treiber mit 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. Vergewissern Sie sich, dass ResourceSlice Objekte für Ihre Knoten angekündigt wurden.

    kubectl get resourceslice

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

Neuron-Geräte in einem Pod anfordern

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

Im folgenden Beispiel werden alle Neuron-Geräte auf einer trn2.48xlarge Instanz angefordert:

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 Teilmengen verbundener Geräte zu

Der Neuron DRA-Treiber kann Teilmengen verbundener Neuron-Geräte zuweisen, ohne dass die Neuron Scheduler-Erweiterung erforderlich ist. Unterstützte Teilmengengrößen sind 1, 4, 8 oder 16 Geräte. Verwenden Sie die matchAttribute Einschränkung mit einer Topologiegruppen-ID, um sicherzustellen, dass Geräte angeschlossen sind.

Im folgenden Beispiel werden 4 verbundene Neuron-Geräte angefordert:

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

Logisch NeuronCores (LNC) konfigurieren

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

Im folgenden Beispiel werden alle Neuron-Geräte angefordert, 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

Installieren Sie das Neuron Kubernetes-Geräte-Plugin

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

Voraussetzungen

  • Ein Amazon EKS-Cluster.

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

  • 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 von kubectl.

Verfahren

  1. Installieren Sie das Neuron Kubernetes-Geräte-Plugin mit 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, in 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 tolerations: - key: "aws.amazon.com/neuron" operator: "Exists" effect: "NoSchedule"
  2. Das Manifest anwenden.

    kubectl apply -f neuron-ls.yaml
  3. Nachdem der Pod fertig ausgeführt wurde, 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 | +--------+--------+--------+---------+

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