Skip to main content
QUICK REVIEW

[논문 리뷰] A Differentiable Programming System to Bridge Machine Learning and Scientific Computing

Mike Innes, Alan Edelman|arXiv (Cornell University)|2019. 07. 17.
Neural Networks and Applications인용 수 129
한 줄 요약

이 논문은 ∂P를 제시합니다. 이는 일반 Julia 프로그램을 미분할 수 있게 하는 Julia로 구축된 미분 가능 프로그래밍 시스템이며, ML 및 과학 계산 패키지와 통합하고 심층 학습에서부터 미분 가능한 물리학 및 금융에 이르는 다양한 응용을 보여줍니다.

ABSTRACT

Scientific computing is increasingly incorporating the advancements in machine learning and the ability to work with large amounts of data. At the same time, machine learning models are becoming increasingly sophisticated and exhibit many features often seen in scientific computing, stressing the capabilities of machine learning frameworks. Just as the disciplines of scientific computing and machine learning have shared common underlying infrastructure in the form of numerical linear algebra, we now have the opportunity to further share new computational infrastructure, and thus ideas, in the form of Differentiable Programming. We describe Zygote, a Differentiable Programming system that is able to take gradients of general program structures. We implement this system in the Julia programming language. Our system supports almost all language constructs (control flow, recursion, mutation, etc.) and compiles high-performance code without requiring any user intervention or refactoring to stage computations. This enables an expressive programming model for deep learning, but more importantly, it enables us to incorporate a large ecosystem of libraries in our models in a straightforward way. We discuss our approach to automatic differentiation, including its support for advanced techniques such as mixed-mode, complex and checkpointed differentiation, and present several examples of differentiating programs.

연구 동기 및 목표

  • ML과 과학 계산에 걸친 통합된 미분 가능 프로그래밍 접근법의 필요성을 제시한다.
  • 최소한의 사용자 개입으로 일반 프로그램을 미분할 수 있는 Julia 기반 시스템을 제공한다.
  • 레이 트레이싱, 양자 시뮬레이션, 금융 등 기존 과학 패키지와 ML을 혼합한 실용적 응용을 시연한다.
  • 커스텀 데이터 타입과 복잡한 제어 흐름으로 성능 특성과 확장성을 보여준다.

제안 방법

  • Julia 코드로부터 그래디언트를 생성하기 위해 소스-투-소스 자동 미분 방식(Zygote)을 사용한다.
  • 백프로파게이션을 위한 제이콥시안-벡터 곱으로 함수 출력을 래핑하는 일반 미분 연산자 J를 정의한다.
  • 다중 디스패치를 통한 커스텀 그래디언트를 허용하는 사용자 확장 가능한 부분 도함수 인터페이스를 제공한다.
  • 패키지의 원시 변경 없이 혼합 언어 및 복합 데이터 타입을 통과하는 미분을 시연한다.

실험 결과

연구 질문

  • RQ1제어 흐름, 돌연변이(변이), 그리고 복잡한 데이터 타입을 가진 일반 Julia 프로그램을 미분 가능 프로그래밍 시스템이 미분할 수 있는가?
  • RQ2미분 가능 프로그래밍 접근법이 Julia의 기존 ML 및 과학 컴퓨팅 생태계와 얼마나 잘 통합되는가?
  • RQ3CPU, GPU, TPU에서 대규모 실제 Julia 프로그램을 미분할 때의 성능 영향은 무엇인가?
  • RQ4미분 가능한 레이 트레이싱, 양자 머신 러닝, 신경 SDEs와 같은 응용을 가능하게 하면서 생태계 구성 가능성을 보존할 수 있는가?

주요 결과

레이어총 오버헤드연산 수연산당 오버헤드
1147.0 us255576.3 ns
2280.5 us491571.3 ns
3406.1 us727558.6 ns
  • Zygote는 순방향 및 역방향 패스 간 정보 재사용으로 소스-투-소스 변환을 통한 낮은 오버헤드 자동 미분을 가능하게 한다.
  • 스택형 LSTM의 경우 어노이트 연산당 오버헤드는 평균 약 568.8 ns로 PyTorch의 오버헤드와 경쟁력 있다.
  • 다양한 도메인(레이 트레이싱, 양자 시뮬레이션, 신경 SDE, 금융)을 통해 미분 가능성 있는 Julia의 ∂P를 사용한 미분이 가능하고 생산적이다.
  • 새로운 타입에 대한 커스텀 그래디언트는 기본 AD 시스템을 수정하지 않고 부분 도함수 인터페이스를 통해 쉽게 정의할 수 있다.
  • 이 접근법은 CPU, GPU, TPU로의 학습을 지원하여 딥 러닝 작업에서 기존 ML 프레임워크의 성능과 일치한다.

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

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

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

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