Skip to main content
QUICK REVIEW

[논문 리뷰] DLVM: A modern compiler infrastructure for deep learning systems

Richard Wei, Lane Schwartz|arXiv (Cornell University)|2017. 11. 08.
Parallel Computing and Optimization Techniques참고 문헌 4인용 수 34
한 줄 요약

DLVM는 딥러닝을 위한 현대적이고 LLVM를 영감으로 삼은 컴파일러 인프라로, 텐서 DSL에 대해 타입 안정성, 모듈성, 최적화 가능성의 기반을 제공한다. 선형 대수 IR, 부가 코드 생성을 통한 원칙적인 알고리즘 미분, 그리고 LLVM를 통한 GPU 대상 코드 생성을 통해 고성능, 안정성, 조합 가능한 딥러닝 시스템을 가능하게 하며, Swift로 작성된 프로토타입 DSL을 통해 엔드 투 엔드 최적화와 JIT 컴파일을 입증한다.

ABSTRACT

Deep learning software demands reliability and performance. However, many of the existing deep learning frameworks are software libraries that act as an unsafe DSL in Python and a computation graph interpreter. We present DLVM, a design and implementation of a compiler infrastructure with a linear algebra intermediate representation, algorithmic differentiation by adjoint code generation, domain-specific optimizations and a code generator targeting GPU via LLVM. Designed as a modern compiler infrastructure inspired by LLVM, DLVM is more modular and more generic than existing deep learning compiler frameworks, and supports tensor DSLs with high expressivity. With our prototypical staged DSL embedded in Swift, we argue that the DLVM system enables a form of modular, safe and performant frameworks for deep learning.

연구 동기 및 목표

  • 기존 딥러닝 프레임워크의 한계를 해결하기 위해, 파이썬 기반의 불안정하고 동적 타입을 사용하는 DSL에 의존하며, 모듈성과 조합 가능성을 결여한 설계를 개선한다.
  • 완전 기능을 갖춘 정적 타입을 지원하는, 원칙적이고 모듈적이며 확장 가능한 컴파일러 인프라를 제공함으로써 딥러닝을 위한 정적 타입의 도메인 특화 언어(DSL)를 지원한다.
  • 핵심 최적화 기법인 커널 융합, 대수적 단순화, AD 체크포인팅을 포함한 고급 최적화를 통해 고성능 실행을 가능하게 한다.
  • 알고리즘 미분을 컴파일러 파이프라인 내에서 일등급 변환 단계로 통합함으로써 정확성과 성능을 동시에 향상시킨다.
  • LLVM 통합을 통해 다양한 하드웨어 타겟에 대해 이식 가능하고 효율적인 코드 생성을 지원한다.

제안 방법

  • SSA 형식의 제어 흐름을 포함한 텐서 계산을 위한 도메인 특화 중간 표현(IR) 설계 및 구현으로, 표준 컴파일러 최적화를 가능하게 한다.
  • 알고리즘 미분을 위한 소스 코드 변환 기법을 사용하여, 연산자 오버로딩에 의존하지 않고 부가 코드를 첫 번째 컴파일러 단계로 생성한다.
  • LLVM 통합을 통한 저수준 코드 생성으로, CPU 및 GPU(특히 NVIDIA GPU의 NVPTX를 통한) 타겟에 대한 투명한 지원을 제공한다.
  • 스테이징된 DSL인 Swift에서 개발된 NNKit를 통해 Rep<T> 래퍼를 사용하여 정적 분석, 타입 안정성, 지연 평가를 가능하게 하여 텐서 계산을 지원한다.
  • 사전 단계 JIT 컴파일 파이프라인: 식 스테이징, 형태 전용 특수화, DLVM IR로 내림표현, 함수 재구성으로 Swift에서 컴파일된 함수를 노출한다.
  • 모듈적이고 확장 가능한 컴파일러 프레임워크 내에서 인lines, 루프 최적화, 계산 커널 융합 등의 일반적이고 도메인 특화된 최적화를 적용한다.

실험 결과

연구 질문

  • RQ1기존 컴파일러 기법을 기반으로 한 현대적이고 모듈적인 컴파일러 인프라는 딥러닝 프레임워크의 신뢰성과 성능을 상당히 향상시킬 수 있는가?
  • RQ2알고리즘 미분을 라이브러리 기능이 아닌 컴파일러 내부의 일등급 변환 단계로 통합할 수 있는가?
  • RQ3시스템 언어인 Swift와 같은 언어에서 정적 타입을 갖춘 스테이징된 DSL이 딥러닝에서 안전한 프로토타이핑과 고성능 실행을 동시에 가능하게 할 수 있는가?
  • RQ4통합된 IR 및 최적화 파이프라인은 다양한 하드웨어 타겟에서 고수준 신경망 계산과 저수준 커널 생성을 효과적으로 지원할 수 있는가?
  • RQ5IR에서 SSA 형식과 제어 흐름 그래프를 사용할 경우, 그래프 기반 표현 방식에 비해 딥러닝 IR의 표현력과 최적화 가능성을 어떻게 향상시킬 수 있는가?

주요 결과

  • DLVM는 LLVM를 영감으로 삼은 원칙적인 컴파일러 인프라 덕분에 모듈성, 안정성, 고성능을 확보한 딥러닝 프레임워크를 성공적으로 제공한다.
  • 알고리즘 미분을 라이브러리 기능이 아닌 컴파일러 단계로 통합함으로써 기울기 계산의 보다 적극적이고 정확한 최적화가 가능해졌다.
  • Swift에서 개발된 스테이징된 DSL(NNKit)는 정적 분석과 타입 안정성을 완전히 확보하면서도 DLVM를 통한 효율적인 JIT 컴파일링과 코드 생성을 실현했다.
  • DLVM의 IR은 커널 융합, 대수적 단순화, AD 체크포인팅과 같은 고급 최적화를 지원하여 커널 생성 오버헤드를 감소시키고 성능을 향상시켰다.
  • LLVM를 사용하여 고수준 텐서 식에서 최적화된 GPU 커널로의 엔드 투 엔드 컴파일링을 구현했으며, NVIDIA GPU 지원과 HPVM와 같은 다른 백엔드로의 확장성도 확보했다.
  • 프로토타입 구현은 컴파일러 기반 접근 방식이 딥러닝 시스템 개발을 통합하고 단순화할 수 있음을 보여주었으며, 기존 프레임워크의 복잡성과 취약성을 줄였다.

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

연구 설계부터 논문 작성까지, 연구 시간을 획기적으로 줄여보세요.

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

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