欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

在k8s上部署pytorch分布式程序的完整步驟記錄

 更新時(shí)間:2024年08月23日 11:17:42   作者:道阻&且長(zhǎng)  
Kubernetes的核心優(yōu)勢(shì)在于其能夠提供一個(gè)可擴(kuò)展、靈活且高度可配置的平臺(tái),使得應(yīng)用程序的部署、擴(kuò)展和管理變得前所未有的簡(jiǎn)單下面這篇文章主要給大家介紹了關(guān)于在k8s上部署pytorch分布式程序的完整步驟,需要的朋友可以參考下

集群配置

在k8s集群安裝stable版training-operator:

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

下載Kubeflow training-operator對(duì)應(yīng)的Python SDK:

pip3 install kubeflow-training

簡(jiǎn)單的pytorch CPU分布式測(cè)試

demo.py文件內(nèi)容如下:

import datetime
import torch
torch.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}")

Dockerfile文件如下:

FROM python:3.8
RUN pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu
WORKDIR /
COPY demo.py demo.py

打包好鏡像上傳后,便可以在集群中跑pytorchjob,pytorch.yaml部署文件如下:

apiVersion: "kubeflow.org/v1"
kind: PyTorchJob
metadata:
  name: torchrun-cpu
spec:
  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"

執(zhí)行命令開(kāi)始部署:

kubectl apply -f pytorch.yaml -n namespace

正常運(yùn)行結(jié)束后可以看到兩個(gè)pod均為complete狀態(tài),查看log輸出:

training-operator的一些設(shè)計(jì)

當(dāng)我們通過(guò)training-operator創(chuàng)建對(duì)應(yīng)的pod資源時(shí),describe worker可以看到如下的env信息:

可以看到master默認(rèn)端口為23456,world_size即總共的運(yùn)行節(jié)點(diǎn)為2,該worker對(duì)應(yīng)的rank為1,master的地址為master的pod的name,這其實(shí)是training-operator為它創(chuàng)建了對(duì)應(yīng)的svc,查看svc可以看到與pod同名的svc:

通過(guò)svc配置worker到master pod的tcp連接,以便在distributed.init_process_group以及接下來(lái)參數(shù)同步等需要網(wǎng)絡(luò)傳輸?shù)牟僮髂軌蛘_M(jìn)行。

而training-operator通過(guò)解析yaml文件來(lái)為部署的pod配置環(huán)境變量以便init_process_group時(shí)不用自己配置分布式訓(xùn)練的參數(shù),而是直接讀取env配置好的參數(shù),可以簡(jiǎn)化開(kāi)發(fā)者的開(kāi)發(fā)難度。不過(guò)這也能看出來(lái),training-operator對(duì)pytorch分布式的支持實(shí)際上也是基于pytorch原有的pytorch分布式框架進(jìn)行開(kāi)發(fā),在operator上添加相關(guān)代碼給予支持。

總結(jié)

到此這篇關(guān)于在k8s上部署pytorch分布式程序的文章就介紹到這了,更多相關(guān)k8s部署pytorch分布式程序內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論