Pytorch Distributed 초기화
Pytorch Distributed 초기화 방법
참고 문헌
https://pytorch.org/docs/master/distributed.html
코드https://github.com/overfitover/pytorch-distributed어서 오세요.
초기화
torch.distributed.init_process_group(backend, init_method='env://', **kwargs)
매개변수 설명
init_method()
다음과 같은 세 가지 방법이 있습니다.
env
#!/usr/bin/env python
import os
import torch
import torch.distributed as dist
from torch.multiprocessing import Process
import time
def run(rank, size):
pass
def init_processes(rank, size, fn, backend='gloo'):
""" Initialize the distributed environment. """
os.environ['MASTER_ADDR'] = '162.128.0.22'
os.environ['MASTER_PORT'] = '29555'
dist.init_process_group(backend, rank=rank, world_size=size)
torch.cuda.manual_seed(1)
fn(rank, size)
print("MM")
print(dist.get_rank())
print(dist.get_world_size())
print(dist.is_available())
def main():
size = 2
processes=[]
for i in range(size):
p = Process(target=init_processes, args=(i, size, run))
p.start()
processes.append(p)
for p in processes:
p.join()
if __name__ == "__main__":
start_time = time.time()
main()
end_time = time.time()
print(" :", end_time-start_time)
162.128.0.22를 자신의 IP 주소로 바꾸십시오.
tcp
import torch
import torch.distributed as dist
import argparse
from time import sleep
from random import randint
from torch.multiprocessing import Process
def initialize(rank, world_size, ip, port):
dist.init_process_group(backend='tcp', init_method='tcp://{}:{}'.format(ip, port), rank=rank, world_size=world_size)
print("MM")
def main():
parser = argparse.ArgumentParser()
parser.add_argument('--ip', type=str, default='162.128.0.22')
parser.add_argument('--port', type=str, default='20000')
parser.add_argument('--rank', '-r', type=int)
parser.add_argument('--world-size', '-s', type=int)
args = parser.parse_args()
print(args)
# initialize(args.rank, args.world_size, args.ip, args.port)
size = 2
processes = []
for i in range(size):
p = Process(target=initialize, args=(i, size, args.ip, args.port))
p.start()
processes.append(p)
for p in processes:
p.join()
if __name__ == '__main__':
main()
162.128.0.22를 자신의 IP 주소로 바꾸십시오.
파일 공유
import argparse
from time import sleep
from random import randint
from torch.multiprocessing import Process
def initialize(rank, world_size):
dist.init_process_group(backend='gloo', init_method='file:///home/yxk/Documents/Deeplearningoflidar139/overfitover/share', rank=rank, world_size=world_size)
print("MM")
def main():
size = 2
processes = []
for i in range(size):
p = Process(target=initialize, args=(i, size))
p.start()
processes.append(p)
for p in processes:
p.join()
if __name__ == '__main__':
main()
주의 initmethod: file://로 시작해서 공유 파일 시스템에 존재하지 않는 파일 (기존 디렉터리에 있는) 의 경로를 포함해야 합니다.파일이 없는 경우 파일 시스템 초기화는 자동으로 생성되지만 삭제되지는 않습니다.다음 init에서process_그룹이 호출하기 전에 이 파일을 잘 알고 있습니다.
전재 대상:https://www.cnblogs.com/o-v-o/p/9975355.html
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.