system과 동일하게 쓰이는 용어
model parallelization은 alex-net에서 이미 쓰였던 적이 있다.
좋은 gpu parallelization은 그림처럼 gpu가 동시에 사용되도록 파이프라인 구조로 코딩해야한다.
각각의 gpu가 cpu 스레드를 할당받아서 알아서 평균 취한 결과를 구한다.
train_sampler = torch.utils.data.distributed.DistributedSampler(train_data)
shuffle = False
pin_memory = True
train_loader = torch.utils.data.DataLoader(train_data, batch_size=20, shuffle=shuffle, pin_memory=pin_memory, num_workers=4, sampler=train_sampler)
def main():
ngpus_per_node = torch.cuda.device_count()
world_size = ngpus_per_node
torch.multiprocessing.spawn(main_worker, nprocs=ngpus_per_node, args=(ngpus_per_node, ))
worker를 만들고 python에서 map 함수를 쓰듯이 spawn에 넣어준다.