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

在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


版权声明:著作权归作者所有。

相关推荐

redis报错 : OOM command not allowed when used memory > ‘maxmemory’

redis内存不足时会报此错误:OOM command not allowed when used memory > ‘maxmemory’有两个方法可以解决:1、增加redis内存。修改redis.conf配置项maxmemory,增加redis的内存,如:maxmemory 2gbmaxmemory默认为1024MB2、修改存储策略修改redis.conf,把redis的存储策略修改为l

Docker销毁所有容器和镜像脚本

如果有权限问题,使用root或者使用sudo执行。#!/bin/bash # 停止所有的容器 docker stop $(docker ps -a -q) # 删除所有的容器 docker rm $(docker ps -a -q) # 删除所有的镜像 docker rmi $(docker images -q)