在使用 PyTorch 的分布式训练时,正确配置环境参数至关重要。以下是一个典型的配置示例及其可能遇到的错误。
环境配置
在进行分布式训练时,通常需要在启动脚本中设置 Python 的命令行参数。以下是一个示例配置:
"pythonArgs": [
"-m",
"torch.distributed.launch",
"--nproc_per_node=1"
],
常见错误
在配置完成后,执行脚本时可能会遇到以下错误:
Usage: debugpy --listen | --connect
[<host>:]<port>
[--wait-for-client]
[--configure-<name> <value>]...
[--log-to <path>] [--log-to-stderr]
<filename> | -m <module> | -c <code> | --pid <pid>
[<arg>]...
Error: unrecognized switch --local_rank=0
ERROR:torch.distributed.elastic.multiprocessing.api:failed (exitcode: 2) local_rank: 0 (pid: 2751) of binary: /home/sse2020/miniconda3/envs/LayoutDiffusion/bin/python
该错误提示表明系统无法识别 --local_rank=0
这个参数,通常是由于使用了不再推荐的 torch.distributed.launch
模块引起的。
解决方案
为了避免此错误,我们可以将 torch.distributed.launch
替换为新的分布式启动命令:
"pythonArgs": [
"-m",
"torch.distributed.run",
"--nproc_per_node=1"
],
更改后的命令能够更好地支持分布式训练,并解决了 --local_rank
参数无法识别的问题。
结论
在配置分布式训练环境时,务必要使用最新的命令和参数设置。确保使用 torch.distributed.run
来避免不必要的错误,从而使训练过程更加顺利。