test_loader = troch.utils.data.DataLoader ( test_dataset,
shuffle = False,
batch_size = 64,
num_workers = int(0) )
*num_workers :
- how many subprocesses to use for data loading.
- 0 means that the data will be loaded in the main process. (default: 0)
- data 로딩을 위해 몇 개의 서브 프로세스를 사용할 것인지
- 데이터 로드 멀티 프로세싱
- CPU와 GPU 작업간의 밸런스
- 빠른 전처리를 통해 CPU가 task를 바로바로 GPU로 던져줄 수 있다면 GPU는 쉬는시간 없이 계속 일을 할 수 있다.
- CPU에서의 작업을 빠르게 처리하고 task를 GPU로 던져서 GPU 사용률을 최대로 끌어내야 한다.
- 이를 위해 멀티코어를 사용한다.
*최적의 num_workers :
- 파라미터 튜닝
- num_workers 튜닝을 위해 학습 환경의 GPU개수, CPU개수, I/O 속도, 메모리 등을 고려
- I/O를 포함시킨 것은 데이터의 종류에 따라 디스크상에 존재하는 데이터를 로드하는것은 I/O에 상당히 많은 영향을 주고받을 수 있기 때문
- 메모리는 loading된 데이터를 메모리상에 들고 있어야 하는 부담 때문에
'스타트업 > AI' 카테고리의 다른 글
[AI] 상대 경로, 절대 경로 (0) | 2020.01.31 |
---|---|
[AI] RPN(Region Proposal Network) (1) | 2020.01.31 |
[TensorFlow] GPU 배분(분배, 할당) 방식 (0) | 2020.01.28 |
[AI] Spatio-Temporal (0) | 2020.01.12 |
[AI] 주요Cloud AI 개발환경 (0) | 2020.01.07 |