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 값을 찾아야 합니다.
'Deep Learning > PyTorch' 카테고리의 다른 글
[PyTorch Lightning] Trainer 클래스에서 GPU 설정하는 방법 (1) | 2025.01.20 |
---|---|
[PyTorch] MLP 모델 만들기 2편 - 학습 모델 구축하기 (1) | 2025.01.13 |
[PyTorch] MLP 모델 만들기 1편 - 학습 데이터셋 만들기 (33) | 2025.01.01 |
PyTorch Lightning 설치 방법 (30) | 2024.12.28 |