【已解决】KeyError: ‘RANK‘

问题描述

在运行mmSegmentation语义分割框架出现如下问题!

warnings.warn(
Traceback (most recent call last):
  File "/home/wh/projects/SeaFormer-main/seaformer-seg/tools/train.py", line 181, in <module>
    main()
  File "/home/wh/projects/SeaFormer-main/seaformer-seg/tools/train.py", line 99, in main
    init_dist(args.launcher, **cfg.dist_params)
  File "/home/wh/anaconda3/envs/pytorch39/lib/python3.9/site-packages/mmcv/runner/dist_utils.py", line 41, in init_dist
    _init_dist_pytorch(backend, **kwargs)
  File "/home/wh/anaconda3/envs/pytorch39/lib/python3.9/site-packages/mmcv/runner/dist_utils.py", line 52, in _init_dist_pytorch
    rank = int(os.environ['RANK'])
  File "/home/wh/anaconda3/envs/pytorch39/lib/python3.9/os.py", line 679, in __getitem__
    raise KeyError(key) from None
KeyError: 'RANK'

分析原因

使用os.environ.keys() 命令查看主目录下所有的 key,经过排查,是因为os.environ当中没有RANK这个key。
在这里插入图片描述

解决方法

在原程序中添加一个RANK键值。

os.environ['RANK'] = str(0)

添加语句的方法:
新增环境变量语句:
os.environ[‘环境变量名称’]=‘环境变量值’ #其中key和value均为string类型
os.putenv(‘环境变量名称’, ‘环境变量值’)
os.environ.setdefault(‘环境变量名称’, ‘环境变量值’)

扩展

Rank:进程号rank理解:在多进程上下文中,我们通常假定rank 0是第一个进程或者主进程,其它进程分别具有0,1,2不同rank号,这样总共具有4个进程。
LOCAL_RANK:进程内,GPU 编号,非显式参数,由 torch.distributed.launch 内部指定。比方说, rank = 3,local_rank = 0 表示第 3 个进程内的第 1 块 GPU。
WORLD_SIZE:表示全局进程个数。
SLURM_PROCID:可用作全局rank。

猜你喜欢

转载自blog.csdn.net/hhhhhhhhhhwwwwwwwwww/article/details/130806660
今日推荐