在Docker容器里执行Pytorch脚本,报共享内存不够,信息如下:
RuntimeError: DataLoader worker (pid 45788) is killed by signal: Bus error. It is possible that dataloader's workers are out of shared memory. Please try to raise your shared memory limit.
原因
进入Docker容器
docker exec -it my_container_name bash
查看容器内设置的shm(shared memory)大小
jovyan@8714b5fe80c6:~$ df -h | grep shm
shm 64M 0 64M 0% /dev/shm
可以看到,在容器里共享内存shm大小默认限制为64M。
解决方法
如果需要用到比较多的shm,可以在创建运行docker容器时,可以使用 --shm-size指定shm大小,或者设置为--ipc=host
docker run --runtime=nvidia --shm-size 1G -it --rm my_image