Skip to main content
QUICK REVIEW

[논문 리뷰] Bring Your Own Codegen to Deep Learning Compiler

Zhi Chen, Cody Hao Yu|arXiv (Cornell University)|2021. 05. 03.
Advanced Neural Network Applications참고 문헌 31인용 수 7
한 줄 요약

이 논문은 딥러닝 가속기 제조사가 기존 딥러닝 컴파일러에 자체 코드 생성 도구를 통합할 수 있도록 하는 통합형 오픈소스 프레임워크를 제안한다. 이는 가속기 고유의 코드 생성 기능을 공유되는 컴파일러 인프라에서 분리함으로써 구현한다. 표준 컴파일러 최적화 기법을 재사용하고 모델 파artitioning을 유연하게 지원함으로써 개발 노력이 단 몇천 줄의 코드로 줄어들었으며, NVIDIA Jetson 및 Xilinx Vitis-AI와 같은 상용 스택에 성공적으로 구현되어 성능 향상이 측정되었다.

ABSTRACT

Deep neural networks (DNNs) have been ubiquitously applied in many applications, and accelerators are emerged as an enabler to support the fast and efficient inference tasks of these applications. However, to achieve high model coverage with high performance, each accelerator vendor has to develop a full compiler stack to ingest, optimize, and execute the DNNs. This poses significant challenges in the development and maintenance of the software stack. In addition, the vendors have to contiguously update their hardware and/or software to cope with the rapid evolution of the DNN model architectures and operators. To address these issues, this paper proposes an open source framework that enables users to only concentrate on the development of their proprietary code generation tools by reusing as many as possible components in the existing deep learning compilers. Our framework provides users flexible and easy-to-use interfaces to partition their models into segments that can be executed on "the best" processors to take advantage of the powerful computation capability of accelerators. Our case study shows that our framework has been deployed in multiple commercial vendors' compiler stacks with only a few thousand lines of code.

연구 동기 및 목표

  • DNN 가속기를 위한 완전한 컴파일러 스택을 개발하는 데 드는 높은 엔지니어링 비용을 해결하기 위해, 제조사 간에 반복되는 최적화 요구사항에도 불구하고 반복적으로 발생하는 문제를 해결한다.
  • 가속기 제조사가 자체적으로 고유한 코드 생성에만 집중할 수 있도록 하되, 표준 컴파일러 최적화 기법과 모델 파artitioning 기법을 재사용할 수 있도록 한다.
  • 모델 호환성 문제, 복잡한 연산자에서의 비효율적 실행, 제조사 간에 반복되는 공통 컴파일러 컴포onents의 중복 구현 문제를 해결한다.
  • 다양한 가속기를 지원하고 기존 딥러닝 컴파일러 생태계와 원활하게 통합되는 유연하고 확장 가능한 프레임워크를 제공한다.
  • 플랫폼에 관계없는 최적화를 추상화하고 가속기 고유의 코드 생성을 모듈식으로 통합할 수 있도록 함으로써 배포 시간 단축과 유지보수 오버헤드 감소를 이룬다.

제안 방법

  • 딥러닝 컴파일러를 두 부분으로 분해한다: 공통으로 사용되는 플랫폼 독립 파이프라인과 가속기 전용 코드 생성 모듈.
  • 모델 수신, 그래프 최적화, 런타임 실행을 처리하기 위해 기존 딥러닝 컴파일러 백엔드(예: ONNX Runtime, Glow)를 활용한다.
  • 연산자 지원 및 성능 특성에 기반해 DNN을 하위 그래프로 분할하는 모델 파artitioning 메커니즘을 도입한다.
  • 제조사가 자체 코드 생성 논리를 통합할 수 있도록 표준화된 인터페이스를 제공하며, 저수준 하드웨어 세부 정보를 추상화한다.
  • 공통 파이프라인 내에서 레이아웃 변환, 정밀도 변환, 공통 표현식 제거와 같은 하드웨어 인지 최적화를 지원한다.
  • 생성된 코드를 경량 런타임과 통합하여 데이터 이동 및 커널 실행을 관리함으로써 엔드 투 엔드 컴파일링과 실행을 가능하게 한다.

실험 결과

연구 질문

  • RQ1가속기 제조사는 DNN 추론을 위한 컴파일러 스택을 개발하는 데 드는 엔지니어링 부담을 어떻게 줄일 수 있는가?
  • RQ2다양한 가속기 간에 공통 컴파일러 최적화를 얼마나 효과적으로 재사용할 수 있으며, 동시에 제조사 고유의 코드 생성을 지원할 수 있는가?
  • RQ3모듈식 프레임워크는 제어 흐름과 비선형 연산자를 포함한 복잡한 DNN 모델에 대해 효율적이고 고성능으로 실행할 수 있는가?
  • RQ4이 프레임워크는 NVIDIA Jetson 및 Xilinx Vitis-AI와 같은 상용 가속기 통합을 어떻게 단순화하는가?
  • RQ5기존에 자체 컴파일러 스택을 구축하는 것과 비교해 이 프레임워크는 성능 향상과 개발 노력 감소를 얼마나 제공하는가?

주요 결과

  • 프레임워크를 통해 상용 가속기 제조사가 최신 컴파일러에 자신의 코드 생성 기능을 몇천 줄의 코드로 통합할 수 있었다.
  • 여러 제조사가 NVIDIA Jetson Xavier 및 Xilinx Vitis-AI와 같은 생산용 컴파일러 스택에 프레임워크를 성공적으로 구현했다.
  • 공통 최적화 기법과 효율적인 모델 파artitioning을 활용함으로써 기준 구현 대비 측정 가능한 성능 향상을 달성했다.
  • 코드 생성 기능을 공통 인프라에서 분리함으로써 유지보수 오버헤드를 줄이고 신제품 출시 시간을 단축시켰다.
  • 제어 흐름과 비선형 연산자를 포함한 복잡한 모델은 CPU 또는 런타임 실행으로 이관하면서, 계산 집약적인 커널은 가속기에서 가속화함으로써 기술을 지원한다.
  • 프레임워크는 FPGA, ASIC, 일반 목적 가속기 등 다양한 하드웨어 타겟에서 호환성과 재사용성을 입증했다.

더 나은 연구,지금 바로 시작하세요

논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.

카드 등록 없음 · 무료 플랜 제공

이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.