Closed Hzy98 closed 1 year ago
@Hzy98 是支持ddp的。你是本地机器ddp吗,只有一张卡的显存被占用?
不是,在linux服务器上,只有一张卡显存被占用,但是是两个进程,像是本应该分布在两张卡的跑在一张上了。而且日志信息显示好像没有使用分布式模式。是命令有误吗?
@Hzy98 不是集群吧?按理说不应该的,你要不去试一些普通的ddp代码,能不能跑起来
@Hzy98 不是集群吧?按理说不应该的,你要不去试一些普通的ddp代码,能不能跑起来
不是集群,之前用torch.distributed.launch跑其他ddp代码是可以的,是命令错了吗? CUDA_VISIBLE_DEVICES=1,2 python -m torch.distributed.launch --nproc_per_node=2 --use_env main_landet.py --train --config=configs/lane_detection/bezierlanenet/resnet18_culane_aug1b.py --mixed-precision 这个命令,在你的环境上能正常运行吗?
@Hzy98 我现在没有自己的ddp调试环境了,但readme里面记录的命令肯定是当初能跑起来的
你是两个进程跑到一张卡(除了没用到计算资源别的没问题),还是起了两个重复的任务
GPT是这样说的:
根据您提供的命令,CUDA_VISIBLE_DEVICES=1,2
的设置让两个进程分别使用 GPU 1 和 GPU 2。但是您遇到了两个进程都运行在同一张 GPU 卡上的问题。这可能是由于某些原因导致的环境错误。
要解决此问题,请尝试以下解决方案:
确保您的代码中没有覆盖 CUDA_VISIBLE_DEVICES
变量。
检查您的 Python 脚本(例如 main.py
)以确保它不修改或覆盖 CUDA_VISIBLE_DEVICES
变量。
尝试将 CUDA_VISIBLE_DEVICES
设置为字符串而非整数。
在终端输入以下命令:
CUDA_VISIBLE_DEVICES="1,2" python -m torch.distributed.launch --nproc_per_node=2 --use_env main.py --xxx
使用 --nnodes
和 --node_rank
参数来指定节点数量和当前节点的顺序。
在终端输入以下命令:
CUDA_VISIBLE_DEVICES=1,2 python -m torch.distributed.launch --nproc_per_node=2 --nnodes=1 --node_rank=0 --use_env main.py --xxx
如果以上方法都不能解决问题,可以尝试更新 PyTorch 版本并确保安装了适当的 GPU 支持。 更新 PyTorch 后,重新运行命令。
如果问题仍然存在,请阐述详细情况,以便为您提供更有针对性的解决方案。
你先试试,不行再说
你是两个进程跑到一张卡(除了没用到计算资源别的没问题),还是起了两个重复的任务
GPT是这样说的:
根据您提供的命令,
CUDA_VISIBLE_DEVICES=1,2
的设置让两个进程分别使用 GPU 1 和 GPU 2。但是您遇到了两个进程都运行在同一张 GPU 卡上的问题。这可能是由于某些原因导致的环境错误。要解决此问题,请尝试以下解决方案:
- 确保您的代码中没有覆盖
CUDA_VISIBLE_DEVICES
变量。 检查您的 Python 脚本(例如main.py
)以确保它不修改或覆盖CUDA_VISIBLE_DEVICES
变量。- 尝试将
CUDA_VISIBLE_DEVICES
设置为字符串而非整数。 在终端输入以下命令:CUDA_VISIBLE_DEVICES="1,2" python -m torch.distributed.launch --nproc_per_node=2 --use_env main.py --xxx
- 使用
--nnodes
和--node_rank
参数来指定节点数量和当前节点的顺序。 在终端输入以下命令:CUDA_VISIBLE_DEVICES=1,2 python -m torch.distributed.launch --nproc_per_node=2 --nnodes=1 --node_rank=0 --use_env main.py --xxx
- 如果以上方法都不能解决问题,可以尝试更新 PyTorch 版本并确保安装了适当的 GPU 支持。 更新 PyTorch 后,重新运行命令。
如果问题仍然存在,请阐述详细情况,以便为您提供更有针对性的解决方案。
你先试试,不行再说
我把wordsize print出来看了下,发现是0,然后把config文件中的world_size修改为2,就可以正常分在两张卡上了。
哦哦,你没改config,我感觉得更新一下文档,突出一下这个事
哦哦,你没改config,我感觉得更新一下文档,突出一下这个事
嗯嗯 是的 改了config应该就能正常跑了。
bezierlanenet支持分布式训练吗?我用如下命令:CUDA_VISIBLE_DEVICES=1,2 python -m torch.distributed.launch --nproc_per_node=2 --use_env main_landet.py --train --config=configs/lane_detection/bezierlanenet/resnet18_culane_aug1b.py --mixed-precision 进行分布式训练的时候,发现它都跑在了一张卡上。 而且好像没有使用分布式模式