使用pytorch进行分布式训练,需要指定 local_rank,主机 local_rank = 0
1 """ 2 pytorch 分布式训练初始化 3 1) backend (str): 指定通信所用后端,可以是'ncll'、'gloo' 或者是一个torch.ditributed.Backend类 4 2) init_method (str): 这个URL指定了如何初始化互相通信的进程 5 3) world_size (int): 执行训练的所有的进程数 等于 cuda.device 数量 6 4) rank (int): 进程的编号,即优先级 7 """ 8 torch.distributed.init_process_group(backend="nccl", init_method="env://", world_size=torch.cuda.device_count(), 9 rank=args.local_rank)
若是报错:
raise _env_error("MASTER_ADDR")
ValueError: Error initializing torch.distributed using env:// rendezvous: environment variable MASTER_ADDR expected, but not set
可使用如下两条指令解决上述问题:
1 export MASTER_ADDR=localhost 2 3 export MASTER_PORT=5678