分布式GPU训练 - Amazon 深度学习容器
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

分布式GPU训练

本节用于在多节点GPU集群上运行分布式训练。

设置集群以进行分布式训练

要在上运行分布式训练EKS,你需要在集群上安装以下组件。

  • Kubeflow 的默认安装,其中包含所需的组件,例如 PyTorch 运算符和插件。NVIDIA

  • MPI运营商。

下载并运行脚本以在集群中安装所需的组件。

$ wget -O install_kubeflow.sh https://raw.githubusercontent.com/aws/deep-learning-containers/master/test/dlc_tests/eks/eks_manifest_templates/kubeflow/install_kubeflow.sh $ chmod +x install_kubeflow.sh $ ./install_kubeflow.sh <EKS_CLUSTER_NAME> <AWS_REGION>

PyTorch分布式GPU训练

本教程将指导您在多节点GPU集群 PyTorch 上进行分布式训练。它使用 Gloo 作为后端。

  1. 确认已安装 PyTorch 自定义资源。

    $ kubectl get crd

    该输出应包含 pytorchjobs.kubeflow.org

  2. 确保NVIDIA插件daemonset正在运行。

    $ kubectl get daemonset -n kubeflow

    输出应类似于以下内容。

    NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE nvidia-device-plugin-daemonset 3 3 3 3 3 <none> 35h
  3. 使用以下文本创建基于 Gloo 的分布式数据并行作业。将其保存在名为的文件中distributed.yaml

    apiVersion: kubeflow.org/v1 kind: PyTorchJob metadata: name: "kubeflow-pytorch-gpu-dist-job" spec: pytorchReplicaSpecs: Master: replicas: 1 restartPolicy: OnFailure template: spec: containers: - name: "pytorch" image: "763104351884.dkr.ecr.us-east-1.amazonaws.com/aws-samples-pytorch-training:1.7.1-gpu-py36-cu110-ubuntu18.04-example" args: - "--backend" - "gloo" - "--epochs" - "5" Worker: replicas: 2 restartPolicy: OnFailure template: spec: containers: - name: "pytorch" image: "763104351884.dkr.ecr.us-east-1.amazonaws.com/aws-samples-pytorch-training:1.7.1-gpu-py36-cu110-ubuntu18.04-example" args: - "--backend" - "gloo" - "--epochs" - "5" resources: limits: nvidia.com/gpu: 1
  4. 使用您刚刚创建的 pod 文件运行分布式训练作业。

    $ kubectl create -f distributed.yaml
  5. 您可以使用以下方法检查作业的状态:

    $ kubectl logs kubeflow-pytorch-gpu-dist-job

    要连续查看日志,请使用:

    $ kubectl logs -f <pod>