今天在docker内使用mmdetection做训练时,workers_per_gpu参数设置为0时,可以正常训练。但修改配置文件中workers_per_gpu=2参数后,
开始训练,程序报错:
网上查资料显示,是因为docker的共享内存不足,使用命令df -h查看:
shm果然很小。
有两种解决办法:
1.重启docker容器,在重启docker容器时,使用 --shm-size 8g 参数,指定docker运行时的挂在内存:
启动docker之后,使用 df -h 查看此时的shm:
已经发生变化, 执行训练命令,正常。
2.还有一种方法是,找到容器对应的配置文件hostconfig.json,修改参数"ShmSize"。重启doker。
个人建议使用第一种方法。
参考:
https://www.jianshu.com/p/4398bdb9e2d2
http://sdsy888.me/%E6%A1%86%E6%9E%B6-Framework/%E9%9A%8F%E7%AC%94-Writing/2019/docker%E8%BF%90%E8%A1%8Cpytorch%E6%8A%A5%E9%94%99%EF%BC%9ARuntimeError-DataLoader-worker-pid-493-is-killed-by-signal-Bus-error-Details-are-lost-due-to-multiprocessing-Rerunning-with-num-workers-0-may-give-better-error-trace/