[논문 리뷰] FusionStitching: Deep Fusion and Code Generation for Tensorflow Computations on GPUs
FusionStitching는 블록 조합과 공유 메모리 최적화를 통해 효율적인 GPU 커널 융합을 가능하게 하는 텐서플로우를 위한 딥 퓨전 및 코드 생성 시스템으로, XLA 대비 GPU 커널 런처를 평균 기하 평균으로 55% 감소시키며 지연이 중요한 워크로드에서 종단 간 성능을 최대 20% 향상시킨다.
In recent years, there is a surge on machine learning applications in industry. Many of them are based on popular AI frameworks like Tensorflow, Torch, Caffe, or MxNet, etc, and are enpowered by accelerator platforms such as GPUs. One important challenge of running Tensorflow computations on GPUs is the fine granularity problem, namely, FLOPS of individual ops are far from enough to fully exploit the computing power of underlying accelerators. The XLA framework provides a solid foundation to explore this problem further. In this paper, we propose FusionStitching, a novel, comprehensive Op fusion and code generation system to stitch computations into large GPU kernels. Experimental results on four public models and two of our large inhouse applications show another 55% (geometric mean) reduction of GPU kernel launches, compared to the XLA fusion baseline. This increases the E2E performance of both of our latency critical inhouse applications up to 20%.
연구 동기 및 목표
- GPU 하드웨어의 잠재력을 충분히 활용할 수 없을 정도로 FLOPS가 낮은 텐서플로우의 세분화된 연산 문제를 해결한다.
- 복잡한 케이스(예: 비용이 큰 원소별 연산, 배치 행렬곱, 레이아웃 전치)를 처리하지 못하는 XLA의 정적 융합 규칙의 한계를 극복한다.
- 계산 사양과 저수준 스케줄링 세부 정보를 분리하여 비-MatMul/Convolution 연산에 대해 확장 가능하고 자동화된 융합 및 코드 생성을 가능하게 한다.
- 블록 조합과 공유 메모리를 활용한 새로운 코드 생성 전략을 개발하여 서로 다른 병렬 루프 에미터를 사용하는 커널을 조합한다.
- 커널 런처 오버헤드를 최소화함으로써 다양한 모델에서 뚜렷한 성능 향상을 이끌어내며, 특히 지연 민감한 산업 응용 분야에서 실질적인 영향을 미친다.
제안 방법
- 가장 긴 데이터 종속성 체인에 있는 연산을 우선순위로 삼는 비결정 경로 분석을 제안하여 융합 결정을 안내한다.
- 저수준 튜닝 파라미터를 추상화하면서도 자동 최적화를 가능하게 하는 도메인 특화 스케줄링 사양 언어를 도입한다.
- 다양한 연산이 별도의 병렬 루프 에미터를 사용하고 공유 메모리를 중간 저장소로 활용할 수 있도록 허용하는 새로운 IR 에미터 IrEmitterStitched를 설계한다.
- 다른 스케줄링 패턴을 가진 융합된 연산 간 효율적인 데이터 전달을 가능하게 하기 위해 片상 공유 메모리를 스케치패드로 활용한다.
- 사용량이 20KB 이하를 초과할 경우 동적으로 메모리 프로필을 줄이는 공유 메모리 축소 메커니즘을 구현하여 커널 런처 실행 가능성을 유지한다.
- 의존성 분석을 기반으로 한 계층적 스펜 그래프를 활용하여 복잡한 계산 그래프 전반에 걸쳐 융합 기회를 모델링하고 최적화한다.
실험 결과
연구 질문
- RQ1복잡한 종속성 또는 메모리 액세스 패턴으로 인해 기존 융합 히우리스틱이 실패할 경우, 어떻게 세분화된 텐서플로우 연산을 GPU에서 효과적으로 융합할 수 있는가?
- RQ2공유 메모리 조합과 블록 수준 스케줄링은 딥 러닝 워크로드에서 커널 융합의 확장성과 성능에 어떤 영향을 미치는가?
- RQ3사용자에게 투명한 컴파일러 기반 융합 및 코드 생성 시스템이 커널 런처 감소와 종단 간 지연 측면에서 기존 XLA 기반 융합 전략을 능가할 수 있는가?
- RQ4공유 메모리는 얼마나 효과적으로 여러 융합된 연산 간에 재사용될 수 있으며, 이를 통해 메모리 대역폭 압박을 줄이고 처리량을 향상시킬 수 있는가?
- RQ5제안된 융합 전략은 공개 모델과 대규모 산업 응용 분야를 포함한 다양한 워크로드에서 어떻게 확장 가능한가?
주요 결과
- FusionStitching은 네 개의 공개 모델과 두 개의 내부 애플리케이션에서 XLA 융합 기준 대비 GPU 커널 런처를 기하 평균 55% 감소시켰다.
- 지연 민감한 두 개의 산업 응용 분야에서 종단 간 성능이 최대 20% 향상되어 실제 산업 영향을 입증했다.
- 시스템은 XLA의 정적 융합 규칙이 처리하지 못하는 복잡한 융합 케이스(예: 배치 행렬곱, 비용이 큰 원소별 연산, 메모리 레이아웃 전치)를 성공적으로 처리했다.
- 음성 워크로드에서는 공유 메모리 사용이 최대 10,432바이트에 도달했으며, NMT 모델에서는 할당된 공간의 17%가 여러 연산 간에 공유되어 효과적인 결과 재사용을 보였다.
- 100개 이상의 커널 중 3개에서만 축소 메커니즘이 활성화되어 대부분의 워크로드에서 메모리 압박이 20KB 이내에서 관리 가능함을 보여주었다.
- LR, W2V, RNN, BiRNN 워크로드는 낮은 공유 메모리 사용량과 축소 없이 안정적인 성능을 기록하여 단순한 융합 패턴임을 시사했다.
더 나은 연구,지금 바로 시작하세요
논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.
카드 등록 없음 · 무료 플랜 제공
이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.