报错
在运行单机多卡训练与测试的时候,直接执行训练/测试脚本遇到如下报错:文章来源:https://www.toymoban.com/news/detail-649794.html
Traceback (most recent call last):
...
torch.distributed.init_process_group(backend="nccl")
File "/usr/local/lib/python3.6/dist-packages/torch/distributed/distributed_c10d.py", line 500, in init_process_group
store, rank, world_size = next(rendezvous_iterator)
File "/usr/local/lib/python3.6/dist-packages/torch/distributed/rendezvous.py", line 166, in _env_rendezvous_handler
raise _env_error("RANK")
ValueError: Error initializing torch.distributed using env:// rendezvous: environment variable RANK expected, but not set
解决办法
通过python -m torch.distributed.launch
执行脚本,报错解决:文章来源地址https://www.toymoban.com/news/detail-649794.html
python -m torch.distributed.launch xxx.py # xxx.py为要执行的脚本文件名
说明
-
python -m
将其后的模块作为脚本来运行,其后的xxx.py
是作为位置参数传递给该脚本,以此来启动分布式训练/测试。 -
python -m torch.distributed.launch
除了接受待执行脚本作为位置参数,同时支持一些可选参数以配置分布式训练/测试,部分参数及其含义解释如下:参数 说明 --nnodes
节点数量,或以 <minimum_nodes>:<maximum_nodes>
形式给出的节点范围--nproc_per_node
每个节点的进程( worker
)的数量,允许的值:[auto, cpu, gpu, int]
,单机多卡时可将其理解为使用GPU的数量--node_rank
多节点分布式训练的节点序号( rank
)--master_addr
主节点( rank
为0
)的r地址。对于单节点多进程训练,可以简单地为127.0.0.1
;IPv6应具有模式[0:0:0:0:0:0:0:1]
--master_port
主节点( rank
为0
)上的端口,用于分布式训练期间的通信--use_env
使用环境变量传递 local rank
。其值默认为False
,如果设置为True
,脚本将不会传递--local_rank
作为参数,而是设置LOCAL_RANK
到了这里,关于报错: environment variable RANK expected, but not set的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!