Docker中运行PyTorch错误 RuntimeError: DataLoader worker (pid 123456) is killed by signal: Aborted.

问题

在Docker中运行PyTorch程序时,如果报错:

RuntimeError: DataLoader worker (pid 123456) is killed by signal: Aborted.

最可能的原因是,Docker的共享内存不足,解决办法是,要么改成更小的batchsize,要么退出docker后,重新运行docker并指定更大的共享内存。同时这个原因可以从docker的说明文档中可以看出:

--oom-kill-disable=false:Whether to disable OOM Killer for the container or not.

这个命令表示是否要kill超出内存的程序,以免崩溃。因此解决上面的问题需要重新调整docker的运行内存。例如:

docker run -m='16g' -memory-swap="20g"

docker中内存相关的命令

关于docker内存相关的命令:(docker中有很多与内存相关的命令,如kernel-memory,oom等,这里列出常用的几个)

命令 说明
-m, --memory="" Memory limit (format: []). Number is a positive integer. Unit can be one of b, k, m, or g. Minimum is 4M.
–memory-swap="" 总内存设置:内存+交换内存;Total memory limit (memory + swap, format: []). Number is a positive integer. Unit can be one of b, k, m, or g.
–shm-size="" 共享内存 Size of /dev/shm. The format is . number must be greater than 0. Unit is optional and can be b (bytes), k (kilobytes), m (megabytes), or g (gigabytes). If you omit the unit, the system uses bytes. If you omit the size entirely, the system uses 64m.

关于其中的交换内存(swap)和共享内存(shm)的区别,可以看这篇文章:swap(交换内存)和shm(共享内存)的区别

你可能感兴趣的:(【机器学习/Machine,Learning】,【Docker】,【PyTorch】)