Python/Debugging

Pytorch DataLoader Multithreading 관련 오류 해결

jimmy_AI 2022. 3. 3. 17:39
반응형

파이토치 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이 감소할 수 있는 관계로,

멀티 스레드를 활용하면서 문제를 해결할 수 있는 방법을 찾아보면 좋을 듯 합니다.