在Docker容器运行Pytorch报错:dataloader's workers are out of shared memory

时间:2022-02-10 17:47:49

在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