dist_train.sh configs/scan/sd198-20/wrn_v1.py 1 usage: launch.py [-h] [--nnodes NNODES] [--node_rank NODE_RANK] [--nproc_per_node NPROC_PER_NODE] [--master_addr MASTER_ADDR] [--master_port MASTER_PORT] [--use_env] [-m] [--no_python] training_script ... launch.py: error: argument --nproc_per_node: invalid int value: 'configs/scan/sd198-20/wrn_v1.py'
时间: 2024-02-26 13:55:22 浏览: 124
看起来你在运行分布式训练的时候出现了问题。错误信息提示 `--nproc_per_node` 参数的值不合法,因为它应该是一个整数,但你传入的是 `configs/scan/sd198-20/wrn_v1.py`。请检查一下你的命令行参数,确保 `--nproc_per_node` 参数的值是一个整数。另外,还要确保你已经正确地设置了其他分布式训练所需的参数,如 `--nnodes`、`--node_rank`、`--master_addr` 和 `--master_port`。如果你不确定如何设置这些参数,可以参考 PyTorch 的官方文档中关于分布式训练的部分。
相关问题
(scan) su@su:~/scan-project/SCAN/openselfsup$ CUDA_VISIBLE_DEVICES=0 bash tools/dist_train.sh configs/scan/sd198-20/wrn_v1.py 1 usage: launch.py [-h] [--nnodes NNODES] [--node_rank NODE_RANK] [--nproc_per_node NPROC_PER_NODE] [--master_ad
这个错误看起来和你的命令行参数有关。从错误信息来看,你使用了 `launch.py` 脚本启动分布式训练,但是传入的参数不正确。
具体来说,`launch.py` 脚本需要以下参数:
- `training_script`:训练脚本的路径。
- `--nproc_per_node`:每个节点上使用的 GPU 数量。
- `--nnodes`:节点数。
- `--node_rank`:当前节点的编号。
- `--master_addr`:主节点的 IP 地址。
- `--master_port`:主节点的端口号。
你使用的命令行中,第一个参数是训练脚本的路径,但是第二个参数是一个数字 `1`,这可能是你想要传给 `--nproc_per_node` 参数的值。但是,`launch.py` 脚本会将 `1` 解析为 `training_script` 参数的值,从而导致参数不匹配的错误。
因此,你需要将命令行中的参数按照上述要求进行传递。一个正确的命令行示例可能如下所示:
```
CUDA_VISIBLE_DEVICES=0 python -m torch.distributed.launch --nproc_per_node=1 --nnodes=1 --node_rank=0 --master_addr=localhost --master_port=1234 train.py configs/scan/sd198-20/wrn_v1.py
```
这里假设你只使用了一台机器进行分布式训练,因此 `--nnodes` 参数设置为 `1`,`--node_rank` 参数设置为 `0`,且 `--master_addr` 参数设置为 `localhost`,`--master_port` 参数设置为 `1234`。具体的参数值应该根据你的实际情况进行修改。
阅读全文