本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
聯網
對於具有高節點間通訊的應用程式,請考慮較高的網路頻寬或彈性布料轉接器
對於 Amazon EKS 上具有高節點間通訊需求的分散式訓練工作負載,請考慮選取具有較高網路頻寬或 Elastic Fabric Adapter (EFA) 的執行個體。網路效能不足可能會使資料傳輸遇到瓶頸,從而減緩分散式多 GPU 訓練等機器學習任務。請注意,推論工作負載通常不會有高節點間通訊。
範例
例如,使用 Karpenter:
apiVersion: v1 kind: Pod metadata: name: ml-workload spec: nodeSelector: karpenter.k8s.aws/instance-network-bandwidth: "100000" # 100 Gbps in Mbps node.kubernetes.io/instance-type: p5.48xlarge # EFA-enabled instance containers: - name: training-job image: `763104351884.dkr.ecr.us-west-2.amazonaws.com/pytorch-inference:2.6.0-gpu-py312-cu124-ubuntu22.04-ec2-v1.6` resources: limits: vpc.amazonaws.com/efa: 1 # Requires EFA device plugin
確保 MPI 和 NCCL 等工具已安裝在您的容器映像中,以利用 EFA 進行訓練任務。
增加可用的 IP 地址數量,以啟用更快的 Pod 啟動時間
在 EKS 中,每個 Pod 都需要 VPC CIDR 區塊的 IP 地址。隨著叢集擴展更多節點和 Pod,您將面臨 IP 地址耗盡或效能較慢的風險,但啟用字首委派可以透過預先配置 IP 範圍和減少 EC2 API 呼叫來緩解這些問題,從而縮短 Pod 啟動時間並改善可擴展性。
建立叢集後啟用字首委派可讓 VPC 容器網路界面 (CNI) 將 IP 字首 (/28,每個字首提供 16 個 IP 地址) 指派給 EC2 執行個體上的網路界面。這表示每個節點可以支援更多 Pod,降低 IP 不足的風險。例如,在c5.4xlarge
執行個體上,您最多可以支援 110 個具有字首委派的 Pod。
雖然字首委派對於在具有許多小型 Pod 的環境中最佳化 IP 使用量至關重要,但 AI/ML 工作負載通常會使用較少、較大的 Pod (例如,每個 GPU 一個 Pod)。啟用字首委派可讓 VPC CNI 透過維護暖集區來預先配置字首,以加快 Pod 啟動速度。這表示 IP 地址隨時可用,相較於非字首模式的隨需配置,可縮短 Pod 初始化所需的時間。在這種情況下,啟用字首委派節省的 IP 可為 AI/ML 工作負載提供效能優勢。透過減少 IP 地址組態和預先配置 IP 範圍所需的 EC2 API 呼叫數量,使用字首委派可加快 Pod 啟動時間,這對於快速擴展 AI/ML 工作負載特別有用。
若要啟用字首委派:
kubectl set env daemonset/aws-node -n kube-system ENABLE_PREFIX_DELEGATION=true
確保適當規劃 VPC 子網路以避免 IP 地址耗盡,尤其是在大型部署中,並管理 CIDR 區塊以避免跨 VPCs 重疊。若要進一步了解,請參閱最佳化 IP 地址使用率和使用字首將更多 IP 地址指派給 Amazon EKS 節點。