简单的pytorch CPU分布式测试

发布时间:2025-06-24 20:49:04  作者:北方职教升学中心  阅读量:098


直接读取env配置的参数,它可以简化开发人员的开发难度。

上传后打包镜像,可以在集群中跑pytorchjob,pytorch.yaml部署文件如下:a;

apiVersion: "kubeflow.org/v1"kind: PyTorchJobmetadata:  name: torchrun-cpuspec:  pytorchReplicaSpecs:    Master:      replicas: 1      restartPolicy: OnFailure      template:        spec:          containers:            - name: pytorch              image: pytorch-demo              command:                - "python3"                - "demo.py"    Worker:      replicas: 1      restartPolicy: OnFailure      template:        spec:          containers:            - name: pytorch              image: pytorch-demo              command:                - "python3"                - "demo.py"

执行命令开始部署:

kubectl apply -f pytorch.yaml -n namespace。training-operator为其创建了相应的svc,查看svc,

demo.py文件内容如下:以下内容如下:a;

import datetimeimport torchtorch.distributed.init_process_group(init_method="env://",timeout=datetime.timedelta(minutes=1))rank = torch.distributed.get_rank()world_size = torch.distributed.get_world_size()print(f"rank {rank} world_size {world_size}")a = torch.tensor([1])torch.distributed.all_reduce(a)print(f"rank {rank} world_size {world_size} result {a}")torch.distributed.barrier()print(f"rank {rank} world_size {world_size}")。以便init_process_group不需要自己配置分布式训练参数,相反,

集群配置。

简单的pytorch CPU分布式测试。但也可以看出,training-operator对pytorch分布式的支持实际上是基于pytorch原有的pytorch分布式框架开发,在operator上添加相关代码进行支持。master的podc;事实上,但也可以看出,training-operator对pytorch分布式的支持实际上是基于pytorch原有的pytorch分布式框架开发,在operator上添加相关代码进行支持。可以看到两个pod处于complete状态󿀌查看log输出:
在这里插入图片描述

training-operator的一些设计。

Dockerfile文件如下a;

FROM python:3.8RUN pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpuWORKDIR /COPY demo.py demo.py。,describe worker可以看到以下env信息:

在这里插入图片描述

可见master默认端口为23456,world_size是2࿰的总运行节点c;与worker对应的rank为1,master的地址是name࿰,

当我们通过training-operator创建相应的pod资源时,

在k8s集群中安装stable版training-operator:

kubectl apply -k "github.com/kubeflow/training-operator/manifests/overlays/standalone?ref=v1.7.0"

下载Kubeflowow training-Pythonoperator对应 SDK:

pip3 install kubeflow-training。

正常运行后,

training-operator通过分析yaml文件为部署pod配置环境变量,可以看到svc࿱与pod同名a;

在这里插入图片描述

worker通过svc配置到master tcp连接,distributed.init_process_group和下一个参数同步等需要网络传输的操作可以正常进行。