2016-12-07 4 views
0

(로컬) 멀티 -GPU 교육을 위해 cifar10_multi_gpu_train 예에서 제안 된 교육 방법, 즉 여러 타워를 만든 다음 그라디언트의 평균을 사용했습니다. 그러나 나는 다음과 같은 것을 궁금해했다 : 만약 다른 GPU에서 오는 손실을 그냥 합친 다음, 그 새로운 손실에 그라디언트 디센트를 적용하면 어떻게 될까?Tensorflow에서 멀티 GPU 교육 : 더 간단한 방법?

그게 가능할까요? 아마 이것은 어리석은 질문이며 어딘가에 한계가 있어야합니다. 그래서 당신이 이것에 대해 논평 할 수 있으면 행복 할 것입니다.

감사와 안부, G.

+0

그래디언트 및 평균화 연산 순서는 수학적으로 동일합니다 (미분은 선형 연산자 임). 그러나 문제는 타워'i' 작업에 대한 그래디언트 작업이 타워'i'와 동일한 장치에 있어야한다는 것입니다. 'colocate_gradients_with_ops' 옵션이 있는데, 얼마나 잘 작동하는지 모르지만'cifar10_multi_gpu_train '이 작성되었을 때 존재하지 않았습니다. –

답변

0

그것은 합계와 함께 작동하지 않을 것입니다. 더 큰 손실과 결과적으로 더 크고 틀린 그라디언트를 얻을 것입니다. 그래디언트를 평균화하는 동안 손실을 최소화하기 위해 가중치를 취해야하는 방향의 평균을 얻지 만 각각의 단일 방향은 정확한 손실 값에 대해 계산 된 방향입니다.

시도해 볼 수있는 한 가지 방법은 타워를 독립적으로 실행 한 다음 때때로 가중치의 평균을 내고 수렴 속도는 느리지 만 각 노드에서 처리 속도를 높이는 것입니다.

관련 문제