简单的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和下一个参数同步等需要网络传输的操作可以正常进行。