[논문 리뷰] Glow: Graph Lowering Compiler Techniques for Neural Networks
Glow는 이기종 하드웨어를 대상으로 하는 다중 IR 단계에서 신경망 그래프를 낮추는 오픈 소스 기계 학습 컴파일러로, 타깃 독립적인 최적화와 백엔드별 코드 생성을 가능하게 한다.
This paper presents the design of Glow, a machine learning compiler for heterogeneous hardware. It is a pragmatic approach to compilation that enables the generation of highly optimized code for multiple targets. Glow lowers the traditional neural network dataflow graph into a two-phase strongly-typed intermediate representation. The high-level intermediate representation allows the optimizer to perform domain-specific optimizations. The lower-level instruction-based address-only intermediate representation allows the compiler to perform memory-related optimizations, such as instruction scheduling, static memory allocation and copy elimination. At the lowest level, the optimizer performs machine-specific code generation to take advantage of specialized hardware features. Glow features a lowering phase which enables the compiler to support a high number of input operators as well as a large number of hardware targets by eliminating the need to implement all operators on all targets. The lowering phase is designed to reduce the input space and allow new hardware backends to focus on a small number of linear algebra primitives.
연구 동기 및 목표
- 무어의 법칙의 한계와 증가하는 ML 계산 수요로 인한 도메인 특화 컴파일 필요성에 대한 동기를 부여한다.
- 여러 하드웨어 백엔드에 대해 최적화된 코드를 생성하는 재타깃 가능한 컴파일러로서 Glow를 제안한다.
- 고수준 그래프 최적화를 위한 두 단계의 강타입 중간 표현과 저수준 메모리 최적화를 도입한다.
- 다양한 장치에서 효율적인 정수 연산을 가능하게 하는 양자화 및 프로파일링 접근법을 설명한다.
- 여러 가속기에서 그래프를 실행하기 위한 런타임 및 파티셔닝 메커니즘을 제시한다.
제안 방법
- 두 단계의 강타입 중간 표현(고수준 데이터플로 IR 및 저수준 주소 전용 IR)을 도입한다.
- 고수준 연산자를 저수준 선형대수 프리미티브로 낮춰 백엔드 간소화를 가능하게 한다(노드 로우링).
- 타깃 독립적 최적화를 적용한 뒤 타깃 특정 최적화 및 코드 생성을 수행한다(IRGen).
- 프로파일 guided 범위를 가진 양자화를 구현하여 부동 소수점 네트워크를 int8 표현으로 변환한다.
- ClassGen을 사용하여 IR 명령어 및 노드 클래스를 자동으로 생성해 백엔드 개발을 용이하게 한다.
- 작고 타깃 독립적인 표준 라이브러리 및 데이터 병렬 연산을 융합하기 위한 연산 스태킹을 갖춘 CPU 백엔드를 제공한다.
- 장치 간 그래프를 파티션하고 가속기에 하위 그래프를 로드하며 비동기 추론 요청을 관리하는 Glow 런타임을 제공한다.
실험 결과
연구 질문
- RQ1신경망용 재타깃 가능 컴파일러가 고수준 그래프를 여러 하드웨어 백엔드에 어떻게 효율적으로 매핑할 수 있는가?
- RQ2다중 레벨 IR과 로우링이 연산 구현을 중복하지 않으면서 백엔드 특화 최적화를 가능하게 하는 데 어떤 역할을 하는가?
- RQ3다양한 장치에서 정확하고 효율적인 정수 계산을 생성하는 데 양자화와 프로파일 guided 기술이 얼마나 효과적인가?
- RQ4주어진 모델에 대해 어떤 런타임 전략(파티셔닝, 프로비저닝, 장치 관리)이 여러 가속기를 가장 잘 활용하는가?
주요 결과
- Glow는 소수의 선형대수 프리미티브를 대상으로 하여 모든 백엔드를 위해 모든 연산자를 구현할 필요를 줄이는 확장 가능한 로우링 접근 방식을 제공한다.
- 두 레벨 IR 디자인은 타깃 독립적 최적화와 하드웨어 특정 코드 생성을 가능하게 하여 백엔드 유연성을 향상시킨다.
- 프로파일 guided 범위를 가진 양자화는 int8로의 변환과 정수 계산의 섬을 가능하게 하여 효율적인 추론을 촉진한다.
- 연산 스태킹과 작은 표준 라이브러리를 갖춘 CPU 백엔드는 융합 커널과 개선된 메모리 로컬리티를 달성하며 Resnet50, VGG19와 같은 모델에서 시연된다.
- Glow 런타임은 여러 가속기에 걸친 파티션 및 실행을 지원하며 하위 그래프 로딩과 비동기 추론을 조정한다.
- 평가에서 실제 모델에 대해 Glow를 TensorFlow 및 TVM과 비교하여 성능을 평가하고 테스트 플랫폼으로 Kaby Lake CPU를 사용한다.
더 나은 연구,지금 바로 시작하세요
연구 설계부터 논문 작성까지, 연구 시간을 획기적으로 줄여보세요.
카드 등록 없음 · 무료 플랜 제공
이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.