[논문 리뷰] Automatic differentiation in ML: Where we are and where we should be going
이 논문은 기계 학습에서 자동 미분(AD)을 위한 새로운 그래프 기반 중간 표현(IR)을 제안하며, 고차 함수, 재귀, 클로처를 완전히 지원함으로써 기존 프레임워크에서 자주 누락되는 기능들을 보완한다. 소스 변환을 통해 Myia는 파이썬 코드를 최적화된 테입리스 AD 파이프라인으로 컴파일하여 사전 최적화와 고차 도함수를 가능하게 하며, 텐서플로우 수준의 성능을 달성하면서도 파이토치의 유연성을 유지한다.
We review the current state of automatic differentiation (AD) for array programming in machine learning (ML), including the different approaches such as operator overloading (OO) and source transformation (ST) used for AD, graph-based intermediate representations for programs, and source languages. Based on these insights, we introduce a new graph-based intermediate representation (IR) which specifically aims to efficiently support fully-general AD for array programming. Unlike existing dataflow programming representations in ML frameworks, our IR naturally supports function calls, higher-order functions and recursion, making ML models easier to implement. The ability to represent closures allows us to perform AD using ST without a tape, making the resulting derivative (adjoint) program amenable to ahead-of-time optimization using tools from functional language compilers, and enabling higher-order derivatives. Lastly, we introduce a proof of concept compiler toolchain called Myia which uses a subset of Python as a front end.
연구 동기 및 목표
- 배열 프로그래밍 프레임워크에서 고차 함수 및 재귀를 포함한 일반적인 AD를 지원하는 데에 있어 기존 프레임워크의 한계를 해결하기 위해.
- 클로저와 함수 조합을 천연적으로 지원하는 그래프 기반 중간 표현(IR)을 설계하여 더 표현력 있고 조합 가능한 머신러닝 모델을 가능하게 하기 위해.
- 테입리스, 소스 변환 기반 AD를 통해 고차 도함수를 지원하고 기능적 언어 컴파일러 기법을 활용한 최적화에 적합한 시스템을 설계하기 위해.
- 파이썬의 일부를 컴파일하여 효율적이고 최적화된 도함수 코드를 생성하며, 전체 타입 및 형태 추론을 지원하는 프로토타입 컴파일러 툴체인(Myia)을 구축하기 위해.
- 머신러닝 프레임워크와 기능적 언어 컴파일러 연구 간 격차를 메우기 위해 고급 최적화 및 타입 추론 기법을 AD 파이프라인에 통합하기 위해.
제안 방법
- 프로그램을 일급 값으로 표현하는 그래프 기반 중간 표현(IR)을 설계하여, 함수 호출, 클로저, 재귀를 지원한다.
- 소스 변환(ST)을 사용하여 IR에서 도함수 프로그램을 생성함으로써 런타임 테입이 필요 없도록 하며, 클로저 표현을 활용한다.
- 코루틴을 사용한 타입 및 형태 추론 시스템을 구현하여 타입 애너테이션을 요구하지 않고도 타입, 값, 형태를 추론한다.
- 기능적 언어 컴파일러 툴체인의 도구를 활용하여 도함수 프로그램에 표준 기능적 언어 최적화(예: 인lines, 상수 폴딩)를 적용한다.
- 가상 머신과 GPU 백엔드를 사용하여 최적화된 도함수 코드를 효율적인 기계어로 컴파일하며, 입력 타입에 따라 특수화한다.
- 파이썬 함수를 추상구문트리(_AST_)로 파싱하고, IR로 변환하며, 소스 변환을 통해 AD를 적용하고 최적화된 도함수 그래프를 생성한다.
실험 결과
연구 질문
- RQ1고차 함수 및 재귀를 지원하는 배열 프로그래밍 프레임워크에서 자동 미분을 효율적이고 일반적으로 지원할 수 있는 방법은 무엇인가?
- RQ2클로저와 함수 조합을 천연적으로 표현할 수 있는 그래프 기반 중간 표현을 설계할 수 있는가? 이는 런타임 테입 오버헤드 없이 전체 AD를 가능하게 하는가?
- RQ3기능적 언어 컴파일러 최적화(예: A-정규형, 지속적 데이터 구조)가 머신러닝 프레임워크의 도함수 프로그램에 얼마나 적용될 수 있는가?
- RQ4소스 변환 기반 AD 시스템이 텐서플로우와 같은 컴파일 기반 프레임워크 수준의 성능을 달성하면서도 파이토치와 같은 동적 프레임워크의 유연성을 유지할 수 있는가?
- RQ5타입 애너테이션이 없는 동적 타입 언어인 파이썬에서 타입 및 형태 추론을 어떻게 효율적으로 수행할 수 있는가?
주요 결과
- 제안된 그래프 기반 IR는 고차 함수, 재귀, 클로저를 천연적으로 지원하여 현재의 프레임워크보다 더 표현력 있고 조합 가능한 머신러닝 모델 구현을 가능하게 한다.
- 클로저 표현을 활용한 소스 변환을 통해 런타임 테입이 필요 없어지며, 이는 효율적이고 최적화된 도함수 코드 생성을 가능하게 한다.
- Myia가 생성하는 도함수 프로그램은 기능적 언어 컴파일러 기법을 활용한 사전 최적화에 적합하여 성능을 향상시키고 오버헤드를 감소시킨다.
- Myia의 타입 및 형태 추론은 타입 애너테이션을 요구하지 않으며, 사용자가 동적 파이썬 코드를 작성해도 효율적으로 컴파일되고 타입 체크가 가능하다.
- Myia 프로토타입은 텐서플로우 수준의 성능를 달성할 수 있음을 보여주며, 정적 계산 그래프 프레임워크에서 부재한 재귀 및 고차 함수 기능을 지원한다.
- 깨끗하고 조합 가능한 표현 방식을 통해 고차 도함수를 지원하여, 기존 프레임워크가 일阶 도함수 또는 조합 불가능한 형태로 제한하는 한계를 극복한다.
더 나은 연구,지금 바로 시작하세요
연구 설계부터 논문 작성까지, 연구 시간을 획기적으로 줄여보세요.
카드 등록 없음 · 무료 플랜 제공
이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.