docker训练大模型时报共享内存不足的解决办法

最近在docker环境中训练YOLO模型时,只要把图片尺寸设置为320就报共享内存不足,设为128就正常:

RuntimeError: DataLoader worker (pid 179) 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环境中运行命令df -h /dev/shm查看,发现共享内存只有64M,这应该就是docker默认分配的额度,太小了:

~ df -h /dev/shm
Filesystem      Size  Used Avail Use% Mounted on
shm              64M   32K   64M   1% /dev/shm

于是解决办法有两种:

  • 启动容器(docker run)的时候使用--shm-size=2g参数
    docker run --shm-size=8g ...
  • 修改docker容器默认的共享内存大小,编辑下面的文件,修改ShmSize的值,单位是Bytes,1GB为1073741824
    vim /var/lib/docker/containers/{容器ID}/hostconfig.json

在修改以上参数之前,需要先看看宿主机的共享内存上限有多少,在宿主机还是使用命令df -h /dev/shm查看,大小一般是物理内存的一半

上一篇
下一篇