python - 反向传播期间的 PyTorch“NCCL 错误:未处理的系统错误”
问题描述
我正在尝试使用 PyTorch 进行分布式培训,但遇到了问题。此运行时错误发生在反向传播期间(第一批,第一个时期)。
File "/home/user/anaconda3/lib/python3.7/runpy.py", line 193, in _run_module_as_main
"__main__", mod_spec)
File "/home/user/anaconda3/lib/python3.7/runpy.py", line 85, in _run_code
exec(code, run_globals)
File "/home/user/anaconda3/lib/python3.7/site-packages/mpi4py/__main__.py", line 7, in <module>
main()
File "/home/user/anaconda3/lib/python3.7/site-packages/mpi4py/run.py", line 196, in main
run_command_line(args)
File "/home/user/anaconda3/lib/python3.7/site-packages/mpi4py/run.py", line 47, in run_command_line
run_path(sys.argv[0], run_name='__main__')
File "/home/user/anaconda3/lib/python3.7/runpy.py", line 263, in run_path
pkg_name=pkg_name, script_name=fname)
File "/home/user/anaconda3/lib/python3.7/runpy.py", line 96, in _run_module_code
mod_name, mod_spec, pkg_name, script_name)
File "/home/user/anaconda3/lib/python3.7/runpy.py", line 85, in _run_code
exec(code, run_globals)
File "project/main.py", line 115, in <module>
trainer.run(config["epochs"])
File "/home/user/project/trainer/trainer.py", line 107, in run
self.run_epoch()
File "/home/user/project/trainer/trainer.py", line 70, in run_epoch
loss.backward()
File "/home/user/anaconda3/lib/python3.7/site-packages/torch/tensor.py", line 107, in backward
torch.autograd.backward(self, gradient, retain_graph, create_graph)
File "/home/user/anaconda3/lib/python3.7/site-packages/torch/autograd/__init__.py", line 93, in backward
allow_unreachable=True) # allow_unreachable flag
RuntimeError: NCCL error in: /pytorch/torch/lib/c10d/ProcessGroupNCCL.cpp:272, unhandled system error
我使用 MPI 进行自动排名分配,使用 NCCL 作为主要后端。初始化是通过共享文件系统上的文件完成的。每个进程使用 2 个 GPU,进程在不同的节点上运行。环境变量NCCL_SOCKET_IFNAME
已设置。以前,此代码运行良好:(
有谁知道为什么会发生这个错误?
UPD 13/05/19:取得了进展。最初在模型初始化时发生错误,现在在第一次向后传递时发生。
解决方案
unhandled system error
意味着在 NCCL 方面存在一些潜在的错误。您应该首先使用 重新运行您的代码NCCL_DEBUG=INFO
。然后从调试日志中找出错误是什么(尤其是日志中的警告)。
Pytorch“NCCL 错误”中给出了一个示例:未处理的系统错误,NCCL 版本 2.4.8”
推荐阅读
- php - 内存中的 PHP 和 SQLite 服务
- docker - 使用自签名证书将本地 Docker 映像推送到私有存储库
- javascript - 使用星星反转三角形
- python - 如何在 MS Visual Studio Code 中为 python 修改 Start without Debugger 脚本
- php - 无法使用 ajax 将 javascript 变量发送到 php 文件
- python - 似乎无法更新 txt 文件中内容数量的字符串 var
- maven - 如何使用命令行将存储库/分发管理配置传递到 pom.xml
- javascript - 如何在javascript中用null替换undefined或将其视为false?
- algorithm - 构造具有给定最小值的斐波那契树的算法
- wordpress - 下一个/上一个帖子来自同一类别的链接