반응형
파이토치 DataLoader RuntimeError 디버깅
이번에 겪었던 오류 메시지는 다음과 같았습니다.
Traceback (most recent call last):
~~~
RuntimeError: Caught RuntimeError in DataLoader worker process 0.
Original Traceback (most recent call last):
~~~
RuntimeError: Cannot re-initialize CUDA in forked subprocess. To use CUDA with multiprocessing, you must use the 'spawn' start method
오류 원인
아주 세밀한 원인까지는 파악하지 못했으나, torch의 dataloader 객체에 num_workers 인자를 높은 값으로 지정하여 스레드를 할당하는 과정에서 문제가 생긴 것으로 보입니다.
오류 해결 방법
dataloader 객체의 num_workers 인자를 0으로 지정하여 단일 스레드로 gpu를 사용하니
문제가 해결되었습니다. 다만, 이 방법으로는 gpu util이 감소할 수 있는 관계로,
멀티 스레드를 활용하면서 문제를 해결할 수 있는 방법을 찾아보면 좋을 듯 합니다.
'Python > Debugging' 카테고리의 다른 글
python setup.py egg_info did not run successfully. exit code: 1 해결(apex 설치 과정 에러) (0) | 2022.03.04 |
---|---|
파이참에서 코드가 회색 글씨로 작성되는 경우 해결 방법 (1) | 2022.02.25 |
주피터 노트북에서 삭제된 셀을 복구하는 방법 (4) | 2022.02.13 |