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

+ Recent posts