Pytorch报错insufficient shared memory (shm)
一、出现错误背景
LZ自己在Docker中配了一套环境,里面也同时安装了Anaconda,然后包含各种例如pytoch,tf,onnx,caffe等不同框架,在容器中使用pytorch训练的时候会出现以下问题
ERROR: Unexpected bus error encountered in worker. This might be caused by insufficient shared memory (shm).
很多教程说的LZ觉得并不是很清晰,解决方法也不是很明确,于是根据自己的实践总结了一番,出现上述问题的原因是在构建容器的时候,设置的shared memory size太小了,所以我们需要增加它的size,具体怎么增加呢?
二、解决方案
- step one:停止docker(注意不停止,后续操作做完也没啥用)
systemctl stop docker
- step two:查找对应容器的id
docker inspect felaim_py_ubuntu16.04 | grep Id
"Id": "70e7a5ca0a8de233**********************7164c7c4abc0f149cc42"
- step three: 修改hostconfig.json文件
找到对应容器的id下的hostconfig.json文件,一般docker的container都在这个路径下/var/lib/docker/containers/your_containers_id/,找到对应hostconfig.json中,修改"ShmSize"这个设置,LZ改成8g
"ShmSize":8589934592
- step four: 重启docker和对应容器
systemctl restart docker
docker start felaim_py_ubuntu16.04
docker exec -it felaim_py_ubuntu16.04 /bin/bash
- step five: 验证结果
可以看到shm已經被我們修改完成了,再次运行pytorch训练代码,问题解决。