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训练代码,问题解决。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐