1

전방 전파 중에 계산 시간을 줄이기 위해 훈련 된 CNN의 각 레이어를 병렬로 실행하고 싶습니다 (기본적으로 FPS에 너무 많은 영향을 미치지 않으면 서 카메라를 포함하는 실시간 응용 프로그램의 CNN을 실행하고 싶습니다). 각 레이어에 대해 입력 대기열과 출력 대기열을 유지합니다. 각 레이어는 입력 레이어에서 BLOB를 처리하고 출력 레이어에 덤프 할 수 있습니다 (논리적으로 병렬로 수행 할 수 있음). 각 레이어의 출력 대기열은 다음 레이어의 입력 대기열로 작동합니다. 그리고 나서 최종 레이어의 출력 대기열 (바이너리 라벨이 될 것입니다)에서 모든 출력을 수집하고 처리합니다. 그래서 제 질문은 Caffe 또는 Tensorflow에서 CNN의 각 레이어를 병렬로 실행하여이를 구현할 수 있다는 것입니다.caffe 또는 tensorflow에서 cnn의 각 레이어를 병렬로 실행할 수 있습니까?

답변

2

Tensorflow를 사용하면 "장치 배치"를 지정할 수 있으므로 그래프의 각 작업이나 작업 그룹에 대해 여러 GPU가있는 경우와 같이 실행할 GPU를 말할 수 있습니다. GPU에 연산을 배치하는 방법에 대한 샘플 코드는 this tutorial을 참조하십시오.

1

TF에 대해 잘 모름.
카페에 관해서 - 이것은 나쁜 생각처럼 들립니다. 레이어간에 대기열 및 동기화 메커니즘을 적용하면 느려지 게됩니다 (특히 GPU에서 실행하고 CPU 구성을 통해 동기화하는 경우). Caffe는 순방향 패스를 순차적으로 수행하고 빠르게 수행하는 디자인입니다. 병렬 처리가 더 빨리 실행할 수 있다고 기대하는 이유는 무엇입니까?

+0

CNN을 사용한 분류를 위해 10 개의 이미지가 있다고 가정합니다. 이제 Caffe에서 포워드 전파를 사용하여 각 이미지 (첫 번째 이미지 제외)는 전체 cnn 파이프 라인을 통과하기 전에 대기열의 이미지를 기다려야하므로 시간 낭비가됩니다. 첫 번째 이미지가 첫 번째 레이어를 통과하자마자 두 번째 이미지가 입력되어야합니다. –

+0

각 파이프 라인을 병렬로 실행하는 것이 가장 빠르다는 것을 알지만 너무 많은 자원 (CNN 레이어의 가중치 배수)을 많이 소모합니다. –

+0

@AyushPandey'K' 프레임에 충분한 리소스가 있으면 크기 'K'의 배치로 실행하는 것이 더 좋습니다. – Shai