Multi-GPU Barrier()


Multi-GPU Barrier()

최근 발생한 문제를 해결하는 글입니다. 서론 Multi-GPU에서는 모든 GPU의 동작이 적절하게 같이 이루어지는 것이 중요합니다. 예를 들어서 Multi-GPU에서 Loss를 합치거나 Weight 공유를 위해서 dist.all_reduct() 또는 dist.all_gather()과 같은 매서드를 사용하게 되는데 이 때 모든 GPU에서 하나의 값을 받기 위해서 다른 GPU들이 대기하거나 하는 현상이 발생합니다. 예로 1,2,3 GPU는 이미 Loss 값을 보낸 상태이고 ( 0.1 , 0.2 , 0.3 으로 보냈다고 했을 때) 4번 GPU에서 아직 Loss 값을 보내지 않았다면 1, 2, 3번은 자연스럽게 4번 GPU에서 Loss를 보내기 전까지 대기하게 됩니다. 근데 이 때 각 GPU 어디에서든 dist.barrier()와 같이 싱크를 위해 특정 GPU의 동작을 멈추게 만드는 코드를 사용하게 된다면 모든 GPU는 Utilize 100%를 보이며 정지하게 됩니다. 따라서 GPU의 동작...


#asymmetric #Troubleshooting #다중GPU #딥러닝GPU #딥러닝분산학습 #멀티지피유 #멀티지피유문제 #분산학습 #지피유정지 #파이토치분산학습 #pytorchdistribution #pytorch #barrer #barrier #Dist #Distribution #GPU #GPUTrouble #GPU다중학습 #multigpu #MultiGPU학습안됨 #학습정지

원문링크 : Multi-GPU Barrier()