环境变量LOCAL_RANK
时间: 2024-01-05 16:20:58 浏览: 541
环境变量LOCAL_RANK是在使用PyTorch进行分布式训练时自动赋值的一个变量。它表示当前进程在本机上的rank值。在单机多卡的情况下,LOCAL_RANK的值与全局rank的值相同。
在使用PyTorch进行分布式训练时,可以通过命令行参数`--use_env`来将LOCAL_RANK的值赋给环境变量os.environ["RANK"]。如果没有使用`--use_env`参数,os.environ["RANK"]将没有值。
如果使用argparse库来解析命令行参数,需要在代码中显式地添加local_rank变量。如果忘记添加local_rank变量,可以在命令行启动时加上`--use_env`参数,这样LOCAL_RANK的值会通过环境变量传递给local_rank。
以下是一个示例代码,演示了如何使用环境变量LOCAL_RANK:
```python
import os
import torch
import torch.distributed as dist
# 初始化分布式训练环境
dist.init_process_group(backend='nccl')
# 获取当前进程在本机上的rank
local_rank = int(os.environ['LOCAL_RANK'])
# 打印当前进程的LOCAL_RANK
print("Local Rank:", local_rank)
```
运行上述代码时,需要使用`torch.distributed.launch`命令来启动训练脚本,并指定`--use_env`参数,例如:
```shell
python -m torch.distributed.launch --nproc_per_node=4 --use_env train.py
```
阅读全文