協助改進此頁面
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
若要為本使用者指南貢獻內容,請點選每個頁面右側面板中的在 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 地區性等 |
|
|
連線的裝置子集 |
使用拓撲限制條件配置 1、4、8 或 16 個連線 Neuron 裝置的子集 |
需要 Neuron 排程器延伸 |
|
LNC 組態 |
透過 |
在 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
-
使用 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。 -
確認 DRA 驅動程式 DaemonSet 正在執行。
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 -
確認
DeviceClass已建立 。kubectl get deviceclass neuron.aws.comNAME AGE neuron.aws.com 60s -
確認已為您的節點公告
ResourceSlice物件。kubectl get resourceslice
如需可用ResourceSlice物件屬性的資訊,請參閱 Neuron DRA 文件
在 Pod 中請求 Neuron 裝置
若要使用 DRA 驅動程式請求 Neuron 裝置,請建立參考 的 ResourceClaimTemplate,neuron.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 排程器延伸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_id、resource.aws.com/devicegroup8_id、 resource.aws.com/devicegroup4_id和 resource.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如需詳細資訊,請參閱 。
程序
-
使用 Helm 安裝 Neuron Kubernetes 裝置外掛程式。
helm upgrade --install neuron-helm-chart oci://public.ecr.aws/neuron/neuron-helm-chart \ --set "npd.enabled=false" -
驗證 Neuron 裝置外掛程式 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 -
確認您的節點具有可配置的 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 裝置是否可存取。
-
使用下列內容建立名為
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" -
套用清單檔案。
kubectl apply -f neuron-ls.yaml -
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 排程器延伸
如需搭配 Amazon EKS 使用 Neuron 裝置的詳細資訊,請參閱用於在 EKS 上執行的 Neuron 文件