报错: environment variable RANK expected, but not set

这篇具有很好参考价值的文章主要介绍了报错: environment variable RANK expected, but not set。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

报错

在运行单机多卡训练与测试的时候,直接执行训练/测试脚本遇到如下报错:

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 主节点(rank0)的r地址。对于单节点多进程训练,可以简单地为127.0.0.1;IPv6应具有模式[0:0:0:0:0:0:0:1]
    --master_port 主节点(rank0)上的端口,用于分布式训练期间的通信
    --use_env 使用环境变量传递local rank。其值默认为False,如果设置为True,脚本将不会传递--local_rank作为参数,而是设置LOCAL_RANK

到了这里,关于报错: environment variable RANK expected, but not set的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包