在 Amazon EKS 上管理 Neuron 裝置 - Amazon EKS

協助改進此頁面

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

若要為本使用者指南貢獻內容,請點選每個頁面右側面板中的在 GitHub 上編輯此頁面連結。

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

在 Amazon EKS 上管理 Neuron 裝置

AWS Trainium 和 AWS Inferentia 是由 設計的專用機器學習晶片 AWS。Amazon EKS 支援兩種在 EKS 叢集中管理 Neuron 裝置的機制:Neuron DRA 驅動程式Neuron Kubernetes 裝置外掛程式

建議在執行 Kubernetes 1.34 版或更新版本的 EKS 叢集上使用 Neuron DRA 驅動程式進行新部署。Neuron DRA 驅動程式提供拓撲感知配置、連線裝置子集排程、邏輯 NeuronCore (LNC) 組態,以及 UltraServer 多節點配置,而不需要自訂排程器延伸。Neuron 裝置外掛程式仍受支援。

Neuron DRA 驅動程式與 Neuron 裝置外掛程式

功能 Neuron DRA 驅動程式 Neuron 裝置外掛程式

最低 Kubernetes 版本

1.34

所有 EKS 支援的 Kubernetes 版本

Karpenter 和 EKS 自動模式

不支援

支援

EKS 最佳化 AMI 支援

AL2023

AL2023, Bottlerocket

裝置廣告

透過裝置 ID、執行個體類型、拓撲、驅動程式版本和 EFA 地區性等ResourceSlice物件的豐富屬性

aws.amazon.com/neuronaws.amazon.com/neuroncore擴充資源的整數計數

連線的裝置子集

使用拓撲限制條件配置 1、4、8 或 16 個連線 Neuron 裝置的子集

需要 Neuron 排程器延伸以進行連續的裝置配置

LNC 組態

透過ResourceClaimTemplate參數的每個工作負載邏輯 NeuronCore 組態 (LNC=1 或 LNC=2)

在 EC2 啟動範本中需要預先設定

以屬性為基礎的選擇

使用 CEL 表達式,依執行個體類型、驅動程式版本和其他屬性篩選裝置

不支援

安裝 Neuron DRA 驅動程式

Neuron DRA 驅動程式會將 Neuron 裝置公告為DeviceClass名稱為 的ResourceSlice物件neuron.aws.com。驅動程式會以 DaemonSet 的形式執行,並自動探索 Neuron 裝置及其拓撲屬性。

如需 Neuron DRA 驅動程式的詳細資訊,請參閱 Neuron DRA 文件

目前不支援將 Neuron DRA 驅動程式與 Bottlerocket 搭配使用。

先決條件

  • 執行 Kubernetes 1.34 版或更新版本的 Amazon EKS 叢集。

  • 具有 AWS Trainium 或 Inferentia2 執行個體類型的節點。

  • 已在命令列環境中安裝 Helm,如需詳細資訊,請參閱安裝 Helm 說明

  • kubectl 設定為與您的叢集通訊,安裝或更新 kubectl如需詳細資訊,請參閱 。

程序

重要

請勿在執行 Neuron 裝置外掛程式的節點上安裝 Neuron DRA 驅動程式。這兩個機制不能同時存在於同一個節點上。如需更新,請參閱上游 Kubernetes KEP-5004

  1. 使用 Helm 安裝 Neuron DRA 驅動程式。

    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"

    根據預設,驅動程式會部署為 neuron-dra-driver 命名空間中的 DaemonSetDeviceClassneuron.aws.com

  2. 確認 DRA 驅動程式 DaemonSet 正在執行。

    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. 確認DeviceClass已建立 。

    kubectl get deviceclass neuron.aws.com
    NAME AGE neuron.aws.com 60s
  4. 確認已為您的節點公告ResourceSlice物件。

    kubectl get resourceslice

如需可用ResourceSlice物件屬性的資訊,請參閱 Neuron DRA 文件

在 Pod 中請求 Neuron 裝置

若要使用 DRA 驅動程式請求 Neuron 裝置,請建立參考 的 ResourceClaimTemplateneuron.aws.comDeviceClass並在 Pod 規格中參考它。

下列範例會請求trn2.48xlarge執行個體上的所有 Neuron 裝置:

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

配置連線的裝置子集

Neuron DRA 驅動程式可以配置已連線 Neuron 裝置的子集,而不需要 Neuron 排程器延伸。支援的子集大小為 1、4、8 或 16 個裝置。使用matchAttribute限制條件搭配拓撲群組 ID,以確保裝置已連線。

下列範例會請求 4 個連線的 Neuron 裝置:

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"

連線子集支援matchAttribute的值為 resource.aws.com/devicegroup1_idresource.aws.com/devicegroup8_idresource.aws.com/devicegroup4_idresource.aws.com/devicegroup16_id

設定邏輯 NeuronCores (LNC)

Neuron DRA 驅動程式允許透過ResourceClaimTemplate參數進行每個工作負載的 Logical NeuronCore 組態。這不需要在 EC2 啟動範本中預先設定 LNC。

下列範例會請求 LNC 設為 1 的所有 Neuron 裝置:

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

安裝 Neuron Kubernetes 裝置外掛程式

Neuron Kubernetes 裝置外掛程式會將 Neuron 裝置公告為 aws.amazon.com/neuron,並將 NeuronCores 公告為aws.amazon.com/neuroncore延伸資源。您可以在容器資源請求和限制中請求 Neuron 裝置。

先決條件

  • Amazon EKS 叢集。

  • 針對 AWS Trainium 或 AWS Inferentia 執行個體安裝主機層級元件的節點。如果使用 EKS AL2023 加速 AMIs 或 EKS Bottlerocket AMIs,則會包含這些項目。

  • 已在命令列環境中安裝 Helm,如需詳細資訊,請參閱安裝 Helm 說明

  • kubectl 設定為與您的叢集通訊,安裝或更新 kubectl如需詳細資訊,請參閱 。

程序

  1. 使用 Helm 安裝 Neuron Kubernetes 裝置外掛程式。

    helm upgrade --install neuron-helm-chart oci://public.ecr.aws/neuron/neuron-helm-chart \ --set "npd.enabled=false"
  2. 驗證 Neuron 裝置外掛程式 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. 確認您的節點具有可配置的 Neuron 裝置。

    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

使用測試 Pod 驗證 Neuron 裝置

您可以在測試 Pod 中執行 neuron-ls工具,以驗證 Neuron 裝置是否可存取。

  1. 使用下列內容建立名為 neuron-ls.yaml 的檔案。此資訊清單會啟動已安裝 neuron-ls工具的 Neuron Monitor 容器。

    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. 套用清單檔案。

    kubectl apply -f neuron-ls.yaml
  3. Pod 執行完成後,請檢視其日誌。

    kubectl logs neuron-ls

    範例輸出如下。

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

使用 Neuron 裝置外掛程式時,具有多個 Neuron 裝置 (例如 trn2.48xlarge) 的執行個體上的連續裝置配置需要 Neuron Kubernetes 排程器延伸。Neuron DRA 驅動程式會透過拓撲限制自動處理此問題。

如需搭配 Amazon EKS 使用 Neuron 裝置的詳細資訊,請參閱用於在 EKS 上執行的 Neuron 文件