PyTorch DDP로 멀티 GPU 학습 코드 구현
PyTorch DDP(DistributedDataParallel)를 활용해 멀티 GPU 학습 코드를 처음부터 구현한 경험이 있습니다. 단일 GPU에서 동작하던 코드를 4 GPU로 확장하려 했는데, 단순히 DataParallel을 쓰면 GPU 간 불균형이 심해 학습 효율이 오히려 나빴습니다. 이를 해결하기 위해 torch.distributed.launch로 프로세스를 GPU별로 분리하고, DistributedSampler로 데이터를 균등하게 분배했습니다.
핵심 구현 포인트는 rank 0 프로세스에서만 체크포인트 저장, 배리어 동기화, gradient 평균화였습니다. 예상치 못한 도전은 재현성 확보였는데, 시드를 각 프로세스마다 다르게 설정하면서도 전체 실험이 결정론적으로 동작하게 만드는 데 시간이 걸렸습니다. 결과적으로 선형 스케일링에 가까운 4배 속도 향상을 달성했습니다. 이 경험으로 분산 학습 디버깅 방법론을 실전에서 익혔습니다.