本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Networking
提示
通过 Amazon EKS 研讨会@@ 探索
对于 Inter-Node 通信量大的应用程序,可以考虑使用更高的网络带宽或弹性结构适配器
对于节点间通信需求较高的 Amazon EKS 上的分布式训练工作负载,可以考虑选择网络带宽更高的实例或弹性结构适配器 (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 进行训练作业。
规划大型 GPU 实例的 IP 地址消耗
默认情况下,Amazon VPC CNI 插件会预先分配 IP 地址以确保可以快速调度 pod,同时保留一个完整的备用 ENI 并填充 IP。在大型实例中,即使只有几个 pod 在运行,这也可能导致每个节点保留数十个 IP。
这种不匹配在每个节点 Pod 密度较低的训练和推理工作负载中很常见。在集群规模下,尤其是在启动许多 GPU 节点且每个 Pod 很少 GPU 节点的自动缩放事件中,即使实际 IP 利用率很低,这也可能导致子网 IP 耗尽。
要缓解这种情况,请调整WARM_IP_TARGETMINIMUM_IP_TARGET、和WARM_ENI_TARGET变量以匹配您的实际吊舱密度。有关更多信息,请访问 VPC CNI 的 ENI 和 IP 目标设置
有关优化 IP 消耗的完整指南,请参阅优化 IP 地址利用率。