카테고리 없음

PyTorch 데이터로더(Dataloader)의 첫 번째 배치 혹은 iter()가 굉장히 느리게 동작할 때 해결 방법

개발자의 잡동사니 2022. 11. 12. 22:15

  PyTorch를 이용할 때면 가끔 데이터로더(dataloader)를 초기화한 뒤에, 첫 번째 배치를 뽑을 때 혹은 iter()를 사용했을 때 굉장히 느리게 동작하는 경우가 있다. 말 그대로 첫 번째 데이터 배치(batch)를 가져오기 위해서 많은 시간이 소요되는 것인데, 5분 이상 걸리는 경우도 있다.

  이러한 문제가 발생하는 원인으로는 여러 가지가 있는데, 필자의 경우 PyTorch 상에서 커스텀(custom) Dataset 클래스를 작성할 때 __getitem__() 메서드 안에서 랜덤(random) 함수를 이용하여 학습 데이터를 가져오는 경우에 이러한 문제가 발생했다. 다시 말해, 데이터로더(dataloader)가 데이터를 불러오는 상황에서 시간이 오래 걸릴만한 요소가 있을 때 이러한 문제가 발생하는 것으로 이해했다.

  이 경우 batch_size나 num_workers와 같은 파라미터를 조금씩 바꾸어 보는 것을 추천한다. 필자의 경우 num_workers 파라미터의 값을 8에서 1로 바꾸었을 때 문제가 해결되었다.