[논문 리뷰] Purine: A bi-graph based deep learning framework
Purine는 연산자와 데이터 텐서로 구성된 방향성 비순환 이분 그래프로 신경망을 모델링하는 이중 그래프 기반 딥러닝 프레임워크로, 메모리 이동과 계산의 자동 겹침을 통해 효율적이고 이벤트 기반으로 실행을 가능하게 한다. 유니버설 작업 디스patcher와 그래프 조합을 통해 데이터 병렬 및 모델 병렬을 균일하게 지원함으로써, 배치 크기가 GPU당 128인 GoogLeNet에서 12개 GPU를 사용할 경우 12배의 가속을 달성하며 거의 선형적인 성능 향상을 보였다.
In this paper, we introduce a novel deep learning framework, termed Purine. In Purine, a deep network is expressed as a bipartite graph (bi-graph), which is composed of interconnected operators and data tensors. With the bi-graph abstraction, networks are easily solvable with event-driven task dispatcher. We then demonstrate that different parallelism schemes over GPUs and/or CPUs on single or multiple PCs can be universally implemented by graph composition. This eases researchers from coding for various parallelization schemes, and the same dispatcher can be used for solving variant graphs. Scheduled by the task dispatcher, memory transfers are fully overlapped with other computations, which greatly reduce the communication overhead and help us achieve approximate linear acceleration.
연구 동기 및 목표
- 딥러닝에서 다중 GPU 및 다중 머신 환경에서 다양한 병렬화 기법(데이터, 모델, 하이브리드)의 구현을 단순화하기 위해.
- 이벤트 기반 작업 디스패처를 사용해 메모리 이동과 계산을 겹침으로써 분산 학습에서의 통신 오버헤드를 감소시키기 위해.
- 알고리즘 설계를 저수준 병렬화 로직에서 분리하는 것을 가능하게 하는 통합적이고 확장 가능한 프레임워크를 제공하기 위해.
- 순환 종속성이 발생하지 않도록 반복 학습 프로세스(예: SGD)를 그래프 반복을 통해 효율적으로 실행하기 위해.
제안 방법
- 딥 신경망을 두 가지 정점 유형(연산자(기능)와 텐서(데이터))를 가진 방향성 비순환 이분 그래프(bi-graph)로 표현하기 위해.
- 모든 입력 텐서가 준비될 때만 연산자 실행을 트리거하는 이벤트 기반 작업 디스패처를 사용하여 자동 스케줄링과 종속성 해결을 가능하게 하기 위해.
- 텐서와 연산자에 '위치' 속성(호스트명 및 장치 ID)을 할당하여 GPU 또는 CPU 할당을 지정함으로써 다중 장치 및 다중 머신 환경에서의 투명한 실행을 가능하게 하기 위해.
- 장치 경계를 넘는 데이터 전송을 가능하게 하기 위해 'Copy' 연산자를 도입하여 크로스 GPU 및 크로스 머신 통신을 지원하기 위해.
- 그래프 조합을 통해 병렬화 기법(데이터, 모델, 하이브리드)을 구현하고 동일한 디스패처를 재사용함으로써 각 구성에 맞는 맞춤형 코드가 필요 없도록 하기 위해.
- 계산의 유휴 단계 동안 데이터 전송을 스케줄링하여 통신과 계산을 겹침으로써 유휴 시간을 최소화하고 효율성을 향상시키기 위해.
실험 결과
연구 질문
- RQ1통합된 이중 그래프 추상화가 딥러닝 프레임워크에서 다양한 병렬화 전략의 구현을 단순화할 수 있는가?
- RQ2이벤트 기반 작업 스케줄링을 사용할 경우 분산 학습에서 통신 오버헤드를 얼마나 효과적으로 숨길 수 있는가?
- RQ3기존에 통신 병목 현상으로 간주되던 완전 연결층에 대해 데이터 병렬화를 얼마나 효율적으로 적용할 수 있는가?
- RQ4단일 디스패처와 그래프 조합을 사용해 다수의 GPU 및 머신에서 거의 선형적인 성능 향상을 달성할 수 있는가?
주요 결과
- Purine는 GPU당 배치 크기가 128인 GoogLeNet에서 12개 GPU를 사용해 초당 1383.7장의 이미지를 처리하여 12배의 가속을 달성했다.
- 메모리 이동과 계산의 효과적인 겹침 덕분에, 10 GbE 네트워크에서도 12개 GPU에서 거의 선형적인 확장성을 확보했다.
- GPU당 배치 크기가 32인 경우에도 Purine는 12개 GPU에서 여전히 9.53배의 가속을 달성하여 작은 배치 크기에서도 뛰어난 성능을 보였다.
- 프로파일링 결과, CPU와 GPU 간의 메모리 복사가 백워드 패스 계산과 완전히 겹쳐졌으며, 유일한 경계점은 첫 번째 합성곱 레이어에서 발생한 미미한 블로킹이었다.
- 그래프 반복을 통해 SGD를 성공적으로 구현하였으며, 파라미터 업데이트를 별도의 그래프로 분할함으로써 순환 종속성을 피했다.
- 유니버설 작업 디스패처의 사용으로 프레임워크의 재설계 없이도 데이터 병렬, 모델 병렬, 하이브리드 병렬을 원활하게 지원할 수 있었다.
더 나은 연구,지금 바로 시작하세요
논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.
카드 등록 없음 · 무료 플랜 제공
이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.