2016-07-11 3 views
3

다중 GPU에서 tensorflow의 분산 버전을 테스트해야합니다.Tensorflow. Cifar10 Multi-gpu 예제가 더 많은 gpus로 성능이 저하되었습니다

AWS g2.8x EC2 인스턴스에서 Cifar-10 멀티 -gpu 예제를 실행합니다.

cifar10_multi_gpu_train.py (코드 here)의 2000 단계 실행 시간은 1 gpu (flag num_gpu=1)에서 427 초입니다. 그 후 eval.py 스크립트는 precision @ 1 = 0.537을 반환했습니다. 동일한 예 (하나의 단계로 모든 GPU에 걸쳐 병렬로 실행되는) 동일한 단계 번호를 실행하지만,도 4의 GPU를 사용하여

은 ( flag num_gpu=4) 실행 시간은 약 530초이고 eval.py 스크립트는 약간 높은 리턴 0.552의 precision @ 1 (아마도 계산상의 무작위성 때문에?).

더 많은 수의 GPU로 인해 성능이 저하되는 이유는 무엇입니까? 필자는 테스트 용으로 매우 적은 수의 단계를 사용했으며 4 GPU를 사용하여 훨씬 더 높은 정밀도를 기대했습니다. 나는 뭔가를 놓치거나 몇 가지 기본적인 실수를 했습니까? 다른 사람이 위의 예를 시도 했습니까?

대단히 감사합니다.

답변

0

cifar10 예제는 기본적으로 다중 GPU 아키텍처에 필요한 CPU 변수를 사용합니다. 2 GPU를 사용하는 단일 GPU 설정에 비해 약 1.5 배의 속도 향상을 경험할 수 있습니다.

문제는 Nvidia Tesla K80 용 듀얼 GPU 아키텍처와 관련이 있습니다. 두 개의 GPU 카드를 내부적으로 통신 할 수있는 PCIe 스위치가 있습니다. 통신에 오버 헤드가 발생한다. 블록 다이어그램 참조 : enter image description here

+0

GCP에서 2 개의 Nvidia Tesla K80과 동일한 문제가 발생했습니다. 듀얼 아키텍처로 인해 내부 GK210 GPU에 많은 오버 헤드가 발생하는 것을 알고 있습니다. 그러나 저는 두 개의 별도 K80 (아래 인쇄 화면 참조)이 있다는 인상하에있었습니다 : https://postimg.org/image/pitpneai9/, 우리의 설정은 GK210을 가진 단 하나의 K80이라고 생각합니까? – Fematich

관련 문제