[논문 리뷰] TIRAMISU: A Polyhedral Compiler for Dense and Sparse Deep Learning
Tiramisu는 다면체 모델과 사용자 지시 스케줄링 명령어를 활용하여 다핵 CPU에서 흩어진(weight sparsity) 및 반복적(recurrent) 신경망(RNNs)을 위한 고도로 최적화된 코드를 생성하는 다면체 컴파일러이다. 이 컴파일러는 Intel MKL-DNN 대비 최대 5배의 성능 향상을 달성하며, 딥러닝 벤치마크에서 최신 컴파일러 대비 최대 2배까지 뛰어난 성능을 보이며, 비정형 가중치 흩어짐을 효율적으로 활용하고 미리 알 수 없는 전개 인자(unknown unrolling factors)를 가진 일반적인 RNNs를 지원하는 첫 번째 DNN 컴파일러임을 입증한다.
In this paper, we demonstrate a compiler that can optimize sparse and recurrent neural networks, both of which are currently outside of the scope of existing neural network compilers (sparse neural networks here stand for networks that can be accelerated with sparse tensor algebra techniques). Our demonstration includes a mapping of sparse and recurrent neural networks to the polyhedral model along with an implementation of our approach in TIRAMISU, our state-of-the-art polyhedral compiler. We evaluate our approach on a set of deep learning benchmarks and compare our results with hand-optimized industrial libraries. Our results show that our approach at least matches Intel MKL-DNN and in some cases outperforms it by 5x (on multicore-CPUs).
연구 동기 및 목표
- 기존 딥러닝 컴파일러들이 비정형 및 반복적 신경망을 지원하지 못하는 문제를 해결하기 위해.
- 기존 컴파일러들이 어려워하는 비정형 가중치 흩어짐을 위한 고성능 코드 생성을 가능하게 하기 위해.
- 컴pile 시점에 알 수 없는 전개 인자를 가진 일반적인 RNNs를 지원하기 위해.
- 고도로 최적화된 루프 및 데이터 레이아웃 변환을 통해 기존 산업계 및 학술계 컴파일러를 초월하는 성능을 달성하기 위해.
- 사용자 스케줄링을 포함한 다면체 컴파일러가 완전 자동 또는 제한된 구조의 컴파일러보다 뛰어난 성능을 낼 수 있음을 입증하기 위해.
제안 방법
- 컴파일러는 C++에 통합된 도메인 특화 언어(DSL)를 사용하여 알고리즘과 스케줄링 명령어를 별도로 표현함으로써 아키텍처에 종속되지 않는 고수준의 사양을 가능하게 한다.
- 비정형 및 반복적 신경망을 다면체 모델로 매핑하여 루프 틀기(tiling), 융합(fusion), 벡터화(vectorization), 반복 공간 기울임(iteration space skewing)과 같은 복잡한 애핀 변환을 허용한다.
- 스케줄링 명령어를 사용하여 코드 생성을 안내함으로써 배열 팩킹, 레지스터 블로킹, 데이터 프리패칭 등의 최적화에 대해 사용자가 세밀한 제어를 가능하게 한다.
- 다면체 표현은 정확한 의존성 분석을 가능하게 하여 불법 코드 생성을 방지하는 합법적이지만 보수적인 융합 및 변환 결정을 가능하게 한다.
- 비직사각형 반복 공간과 순환 데이터플로우 그래프를 지원하여, 전개 인자가 알려지지 않은 일반적인 RNNs의 모델링이 가능하다.
- PyTorch와 같은 고수준 프레임워크와 통합되어, 성능 향상 최적화가 적용된 다핵 CPU를 대상으로 최적화된 C++ 코드를 생성한다.
실험 결과
연구 질문
- RQ1비정형 가중치 흩어짐을 가진 딥러닝 신경망을 효과적으로 최적화할 수 있는 다면체 컴파일러는 기존 DNN 컴파일러가 무시하는 문제를 해결할 수 있는가?
- RQ2컴파일 시점에 전개 인자가 알려지지 않은 일반적인 반복 신경망을 컴파일러가 어떻게 표현하고 최적화할 수 있는가?
- RQ3다면체 컴파일러에서 사용자 지시 스케줄링이 CPU 아키텍처에서 완전 자동 스케줄러 및 산업 라이브러리 대비 성능 면에서 뛰어나게 할 수 있는가?
- RQ4다면체 프레임워크를 통해 적용된 고급 최적화 기법들(예: 배열 팩킹, 레지스터 블로킹, 프리패칭)이 비정형 및 반복적 DNN에 미치는 영향은 무엇인가?
- RQ5다면체 모델 기반 컴파일러가 수작업 최적화 라이브러리인 Intel MKL-DNN와 비교해 성능 면에서 유사하거나 슈퍼어리어블한 성능을 달성할 수 있는가?
주요 결과
- Tiramisu는 다핵 CPU에서 비정형 및 반복적 DNN에 대해 Intel MKL-DNN 대비 최대 5배의 성능 향상을 달성하여 뚜렷한 성능 향상을 입증한다.
- 모든 벤치마크에서 Intel MKL-DNN의 성능을 따라잡고, 특히 비정형 흩어짐의 경우 성능 면에서 뛰어나게 성과를 내며 초월한다.
- Tiramisu는 비정형 가중치 흩어짐을 위한 효율적인 코드 생성을 가능하게 하는 첫 번째 DNN 컴파일러로서, 계산과 메모리 액세스 감소로 인한 성능 향상을 가능하게 한다.
- 전개 인자가 알려지지 않은 일반적인 RNNs를 성공적으로 표현하고 최적화하며, Halide나 기타 비순환 데이터플로우 컴파일러에서 지원하지 않는 기능을 제공한다.
- 스케줄링 명령어의 사용은 배열 팩킹 및 프리패칭과 같은 최적화에 대해 세밀한 제어를 가능하게 하며, 이는 완전 자동 다면체 컴파일러에서 누락된 기능이다.
- Tiramisu는 최신 컴파일러 대비 최대 2배까지 뛰어난 성능을 보이며, 다면체 프레임워크에서 사용자 지시 스케줄링이 완전 자동 접근 방식을 능가할 수 있음을 보여준다.
더 나은 연구,지금 바로 시작하세요
논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.
카드 등록 없음 · 무료 플랜 제공
이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.