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
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 |
Anzahl der Ressourcen als Ganzzahl und erweiterte Ressourcen |
|
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 |
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.
-
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-driverNamespace mit dem bereitgestellt.DeviceClassneuron.aws.com -
Stellen Sie sicher, dass der DRA-Treiber ausgeführt DaemonSet wird.
kubectl get ds -n neuron-dra-driver neuron-dra-driver-kubelet-pluginNAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE neuron-dra-driver-kubelet-plugin 1 1 1 1 1 <none> 60s -
Stellen Sie sicher, dass der erstellt
DeviceClasswurde.kubectl get deviceclass neuron.aws.comNAME AGE neuron.aws.com 60s -
Stellen Sie sicher, dass
ResourceSliceObjekte 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.htmlmatchAttribute 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
-
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" -
Stellen Sie sicher, dass das Neuron-Geräte-Plugin läuft. DaemonSet
kubectl get ds -n kube-system neuron-device-pluginNAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE neuron-device-plugin 1 1 1 1 1 <none> 60s -
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.
-
Erstellen Sie eine Datei mit dem Namen
neuron-ls.yamlund dem folgenden Inhalt. Dieses Manifest startet einen NeuronMonitor-Container, auf dem das neuron-lsTool 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" -
Das Manifest anwenden.
kubectl apply -f neuron-ls.yaml -
Nachdem der Pod seine Ausführung beendet hat, sehen Sie sich seine Protokolle an.
kubectl logs neuron-lsEine 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
Weitere Informationen zur Verwendung von Neuron-Geräten mit Amazon EKS finden Sie in der Neuron-Dokumentation zur Ausführung auf EKS.