pytorch 分布式训练 local_rank 问题

使用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

 

posted @ 2021-04-03 21:24  Tnak  阅读(22315)  评论(1编辑  收藏  举报