다중 GPU를 활용한 대규모 인공신경망 훈련 가속화
초록
본 논문은 인공신경망의 전·후방 연산을 행렬 곱셈으로 변환하고, 이를 다중 GPU 환경에서 효율적으로 수행하기 위한 외부 메모리(out‑of‑core) 기반 매트릭스 곱셈 알고리즘을 제안한다. 이 알고리즘은 이질적인 GPU들 사이에서도 작업을 동적으로 분배하여 선형적인 속도 향상을 달성한다.
상세 분석
이 연구는 대규모 인공신경망(ANN) 학습에서 가장 비용이 많이 드는 연산인 전방(forward)과 후방(backward) 패스를 행렬 곱셈(GEMM) 형태로 재구성한다는 점에서 출발한다. 기존의 GPU 기반 학습은 주로 단일 GPU 혹은 동질적인 다중 GPU 클러스터에 의존했으며, 메모리 용량 제한과 GPU 간 부하 불균형으로 인해 확장성에 한계가 있었다. 저자들은 이러한 문제를 해결하기 위해 ‘외부 메모리(out‑of‑core) 다중 GPU 매트릭스 곱셈’ 프레임워크를 설계하였다. 핵심 아이디어는 입력 행렬을 작은 타일(tile) 단위로 분할하고, 각 타일을 GPU 메모리와 호스트 메모리 사이에 순차적으로 스트리밍하면서 동시에 연산을 수행하는 것이다.
알고리즘은 다음과 같은 단계로 구성된다. 첫째, 전체 연산을 (C = A \times B) 형태의 블록 매트릭스로 분해하고, 각 블록을 다시 서브‑타일로 나눈다. 둘째, 타일 스케줄러는 각 GPU의 메모리 용량, 연산 성능, 현재 부하 상태를 실시간으로 평가하여 가장 적합한 타일을 할당한다. 이때 이질적인 GPU(예: RTX 3090 vs. GTX 1080 Ti) 간의 연산 속도 차이를 고려해 작업량을 비례적으로 조정한다. 셋째, CUDA 스트림과 비동기 복사를 활용해 데이터 전송과 연산을 겹치게 함으로써 PCIe 대역폭 병목을 최소화한다. 넷째, 연산이 끝난 타일은 즉시 결과 버퍼에 기록하고, 필요 시 다른 GPU와 직접 P2P(peer‑to‑peer) 전송을 수행한다.
이러한 설계는 메모리 사용량을 (O(\sqrt{N})) 수준으로 감소시키면서도, GPU 간 동기화 오버헤드를 최소화한다. 실험에서는 이질적인 GPU 2대(RTX 2080 Ti와 GTX 1070)와 동질적인 GPU 4대(RTX 3090) 구성을 대상으로, 64‑GB 규모의 가중치 행렬을 포함하는 100‑layer 심층 신경망을 학습시켰다. 결과는 GPU 수가 늘어날수록 거의 선형에 가까운 속도 향상을 보여주었으며, 특히 메모리 제한으로 단일 GPU에서 불가능했던 모델도 성공적으로 학습할 수 있었다. 또한, 기존 cuBLAS 기반 다중 GPU 구현과 비교했을 때 평균 1.8배 이상의 성능 개선을 기록했다.
한계점으로는 타일 크기 선택이 워크로드와 GPU 메모리 구조에 민감하며, 매우 작은 모델에서는 오버헤드가 상대적으로 커질 수 있다는 점을 들었다. 향후 연구에서는 자동 튜닝 메커니즘과 NVLink와 같은 고속 인터커넥트를 활용한 확장성을 검토한다.
댓글 및 학술 토론
Loading comments...
의견 남기기