Deep Learning/PyTorch

[Pytorch] DataLoader num_workers 개수 설정 방법

notesfromyoungdeveloper 2025. 1. 6. 15:57
728x90
반응형

 

 

 

num_workers는 데이터를 로드할 때, 몇 개의 서브프로세스를 사용할 것인지 설정하는 파라미터입니다.
공식 홈페이지에서 설명하는 내용은 다음과 같습니다.

 

num_workers (int, optional)
 – how many subprocesses to use for data loading. 
    0 means that the data will be loaded in the main process. (default: 0)

출처 : https://pytorch.org/docs/stable/data.html#torch.utils.data.DataLoader

 

torch.utils.data — PyTorch 2.5 documentation

torch.utils.data At the heart of PyTorch data loading utility is the torch.utils.data.DataLoader class. It represents a Python iterable over a dataset, with support for These options are configured by the constructor arguments of a DataLoader, which has si

pytorch.org

 

실제 코드에서는 아래와 같이 사용됩니다.

from torch.utils.data import DataLoader

train_loader = DataLoader(xor_data, batch_size=1000, num_workers=40)

 

그렇다면 num_workers를 몇으로 설정하는 것이 좋을까요?
단순하게 생각하면 무조건 큰 값으로 설정하는 것이 좋아 보이지만, 너무 큰 값으로 설정하면 데이터 로드가 아닌 다른 작업에서 병목 현상이 생길 수 있습니다.
모델을 학습할 때 데이터 로드만 하는 것이 아니기 때문입니다.

최적의 num_workers 개수를 찾기 위해 고려해야 할 사항은 CPU 코어 수, 메모리, I/O 속도 등이 있습니다.
내 학습 환경에 딱 맞는 최적의 num_workers 값을 구하는 공식이 있으면 좋겠지만, 아쉽게도 그런 공식은 없다고 합니다.
고려해야 할 사항은 많은데 개개인마다 학습 환경이 다르기 때문에, 직접 여러 번 학습해 보면서 최적의 값을 찾을 수밖에 없다고 합니다.
학습 속도, CPU와 메모리 사용량 등을 모니터링하면서, 최적의 num_workers 값을 찾아야 합니다.

 

 

 

728x90
반응형