Docker创建容器时默认的共享内存shm太小报错,程序无法正常运行

在docker容器中训练网络,由于创建容器时默认的共享内存shared memory太小,导致程序报错:

ERROR: Unexpected bus error encountered in worker. This might be caused by insufficient shared memory (shm).

RuntimeError: Dataloader worker (pid 94597) 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创建容器时默认的共享内存shm太小报错,程序无法正常运行

docker容器中可以使用命令查看shm值大小,df -h 。

解决方法有几种:

1、减小Dataloader中num_workers的值,直到不再报错,最小可以设置为0。不足之处是训练网络为了节省时间需要尽可能大的num_workers,否则数据传输慢导致GPU利用率低。该方法仅适用于在容器内debug代码,此时不需要很大的num_workers,只要保证代码正确就行。

2、简单快速的方法就是重新创建容器,加上参数–shm-size 8G(或16G等),或者直接使用参数–ipc=host 。

3、修改已有容器的ShmSize的值,(这里省略)

Original: https://www.cnblogs.com/booturbo/p/16341342.html
Author: BooTurbo
Title: Docker创建容器时默认的共享内存shm太小报错,程序无法正常运行

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/683839/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球