NCCL分布式训练报错
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了NCCL分布式训练报错相关的知识,希望对你有一定的参考价值。
参考技术A 调试的时候遇到问题:RuntimeError: NCCL error in: /pytorch/torch/lib/c10d/ProcessGroupNCCL.cpp:784, unhandled system error, NCCL version 2.7.8
于是在环境变量里添加了
export NCCL_DEBUG=info
发现是没有多余共享内存的问题
include/shm.h:48 NCCL WARN Error while creating shared memory segment ...
于是修改docker容器共享内存的大小
最简单的方法是重新建一个容器,在run的时候添加参数-shm-size 6G,但是由于需要重新配置内网穿透,故采用直接修改docker文件的方式
一般原始大小为64M,这是远远不够的
将ShmSize后面加个“22”大概扩大了100倍
此时再查看共享内存大小,发现就变为了6.3G
完美解决windows系统raise RuntimeError(“Distributed package doesn‘t have NCCL “
在训练时出现如下问题:
File "C:\\Users\\urser\\anaconda3\\lib\\site-packages\\torch\\distributed\\distributed_c10d.py", line 597, in _new_process_group_helper
raise RuntimeError("Distributed package doesn't have NCCL "
RuntimeError: Distributed package doesn't have NCCL built in
从文字上来看,错误提示很明显了,没有NCCL
而windows不支持NCCL backend.
我们看下官方文档:
As of PyTorch v1.8, Windows supports all collective communications backend but NCCL, If the init_method argument of init_process_group()
points to a file it must adhere to the following schema:
而要解决这个问题也很简单,不使用NCCL backend.就可以了。
只需要一行代码就可以解决问题。
以上是关于NCCL分布式训练报错的主要内容,如果未能解决你的问题,请参考以下文章
Some NCCL operations have failed or timed out.
Some NCCL operations have failed or timed out.
docker容器内运行pytorch多gpu报错 RuntimeError: NCCL Error 2: unhandled system error