[error] Pytorch 컨테이너 실행 시 메모리 오류
오류 내용
RuntimeError: DataLoader worker (pid 3094) 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.
pytorch container에서 학습을 진행하는데
지금까지 한 번도 발생한 적이 없는 오류가 발생함!
해결책
대략 두 가지 방법이 나왔는데
-
docker container 설정에
**--ipc=host**
추가- 컨테이너가 host와 같은 ipc namespace를 사용하도록 설정
-
docker container 설정에
--shm-size
를 추가하여 넉넉한 메모리 공간 확보- Default :
--shm-size = 4mb
- Default :
--ipc=host
추가
-
container 재생성
-
container 이미지로 만들어서 다시 실행
-
container stop
docker stop [container 이름]
-
container 이미지로 만들기
docker commit [container 이름] [image 이름]
-
컨테이너 run으로 실행
docker run [설정 ... ] [이미지 이름]
-
-
추가로 알아보고 싶은 방법
이미 진행 중인 컨테이너에 설정을 추가하는 방법이 가능할까?
동일한 조건에서
--ipc=host
라는 설정이 있는 컨테이너와 없는 컨테이너를 만들고docker inspect
를 이용하여 설정을 확인했는데"HostConfig"
에서"IpcMode": "host"
,"SecurityOpt": ["label=disable"]
이 두 가지 설정이 다르게 나타났는데이를 /var/lib/docker/containers/[container_id]/config.v2.json 에서 변경해보려고 했는데
"HostConfig"
가 존재하지 않음.. ㅠㅠ
참고
- https://github.com/ultralytics/yolov3/issues/283
- https://graycha.tistory.com/208