작성
·
1.4K
0
data = dict( | |
samples_per_gpu=2, | |
workers_per_gpu=2, | |
train=dict( | |
type=dataset_type, | |
ann_file=data_root + 'annotations/instances_train2017.json', | |
img_prefix=data_root + 'train2017/', | |
pipeline=train_pipeline), |
안녕하세요. 선생님
config 관련 정보를 보다가 samples_per_gpu 와 workers_per_gpu에 대해서
알고 싶어 질문드립니다.
GPU 하나를 쓴다고 하였을 때,
samples_per_gpu의 경우는 batch_size와 동일해진다고 해석을 하였는데...
이 해석이 맞는지 헷갈려서 문의드립니다.
그리고 workers_per_gpu 부분은 정확히 무슨 의미인지, 그리고 숫자 증가에 따라 어떤 차이가 발생하고
어떻게 선정을 하는 것인지 궁금합니다.
단순 구글 검색해서 nums_worker 같은 경우, cpu에서 gpu로 데이터를 넘기는데
cpu 코어를 얼마나 할당해서 gpu로 데이터를 넘길 것인가 부분이라고 나왔는데
이 내용이 config의 workers_per_gpu랑은 다른 내용인 것 같아 질문드립니다.
항상 좋은 강의 감사드립니다.
답변 1
1
안녕하십니까,
1. 네, samples_per_gpu는 GPU 카드 한장당 batch_size를 의미합니다.
samples_per_gpu = 8 이고 GPU 카드가 2장이면 MMDetection은 batch size로 2*8=16을 설정합니다.
2. workers_per_gpu는 pytorch의 DataLoader와 연관된 파라미터 입니다. pytorch는 DataLoader를 통해서 CPU의 Data를 GPU로 넘기는데, 이때 병렬 프로세스를 몇개를 띄울 것인가(즉 몇개의 CPU Core 병렬로 사용할 것인가)를 설정하는 파라미터 입니다. DataLoader의 num_workers와 동일 설정입니다.
감사합니다.