Skip to main content
QUICK REVIEW

[논문 리뷰] DiffSharp: An AD Library for .NET Languages

Atılım Güneş Baydin, Barak A. Pearlmutter|arXiv (Cornell University)|2016. 11. 10.
Parallel Computing and Optimization Techniques참고 문헌 6인용 수 11
한 줄 요약

DiffSharp는 .NET 언어를 대상으로 한 고성능 기반의 기계학습 워크로드를 위한 알고리즘 미분(AD) 라이브러리로, F#로 구현되어 있으며 기능형 프로그래밍 기반이다. 이는 전진 및 역방향 AD를 지원하는 중첩된 고계수 기능 API, BLAS/LAPACK 기반의 효율적인 선형 대수 연산, 연산자 오버로딩 및 향후 소스 변환 및 GPU 백엔드를 통한 확장성을 제공한다.

ABSTRACT

DiffSharp is an algorithmic differentiation or automatic differentiation (AD) library for the .NET ecosystem, which is targeted by the C# and F# languages, among others. The library has been designed with machine learning applications in mind, allowing very succinct implementations of models and optimization routines. DiffSharp is implemented in F# and exposes forward and reverse AD operators as general nestable higher-order functions, usable by any .NET language. It provides high-performance linear algebra primitives---scalars, vectors, and matrices, with a generalization to tensors underway---that are fully supported by all the AD operators, and which use a BLAS/LAPACK backend via the highly optimized OpenBLAS library. DiffSharp currently uses operator overloading, but we are developing a transformation-based version of the library using F#'s "code quotation" metaprogramming facility. Work on a CUDA-based GPU backend is also underway.

연구 동기 및 목표

  • 기계학습 워크로드에 특화된 고성능이고 조합 가능한 .NET 생태계용 AD 라이브러리를 제공하는 것.
  • 기계학습 워크로드에 특화된 고성능이고 조합 가능한 .NET 생태계용 AD 라이브러리를 제공하는 것.
  • 전진 및 역방향 방식을 모두 사용하여 기울기, 야코비안, 헤시안을 효율적으로 계산할 수 있도록 하는 것.
  • 향후 GPU 및 텐서 확장 기능을 지원하는 모듈식이고 확장 가능한 AD 인프라를 개발하는 것.

제안 방법

  • F#에서 고계수 기능형 프로그래밍을 사용하여 AD를 일급, 조합 가능한 함수로 노출한다.
  • 벡터와 행렬에 대해 배열의 구조 구조를 사용하여 BLAS/LAPACK 백엔드를 활용한 효율적인 벡터화된 AD를 가능하게 한다.
  • 전진 및 역방향 AD를 커리드되고 중첩 가능한 연산자(예: jacobianTv’’ 및 hessian)를 통해 모듈식 도함수 계산을 구현한다.
  • 즉각적인 사용성을 위해 연산자 오버로딩을 지원하며, 성능 향상을 위해 향후 F# 코드 문장표기법을 사용한 소스 변환으로 전환할 계획이다.
  • 최적화된 백엔드 통합을 허용하는 백엔드 추상화를 제공하며, OpenBLAS 및 개발 중인 CUDA 기반 백엔드를 포함한다.
  • 중첩된 AD 연산에서의 편향 혼동을 방지하기 위해 값 태깅을 사용한다.

실험 결과

연구 질문

  • RQ1어떻게 .NET 언어에서 알고리즘 미분을 조합 가능하고 기능형 API로 효과적이고 효율적으로 노출시킬 수 있는가?
  • RQ2특히 편향 혼동이 발생할 경우에 중첩된 AD 계산에서 어떤 성능 및 정확성 보장을 달성할 수 있는가?
  • RQ3최적화된 선형 대수 백엔드와 벡터화된 연산을 통해 AD 성능을 얼마나 향상시킬 수 있는가?
  • RQ4기능형 고계수 AD 라이브러리가 기능형 및 명령형 .NET 언어 모두에서 사용자 친화적이고 성능이 뛰어나게 설계될 수 있는가?
  • RQ5AD 인프라는 현대적인 기계학습 워크로드, 특히 딥러닝과 GPU 가속을 지원하도록 어떻게 확장될 수 있는가?

주요 결과

  • DiffSharp는 중첩 도함수 계산에서 값 태깅을 통해 편향 혼동을 방지하는 정확하고 고성능의 AD를 제공한다.
  • 벡터와 행렬에 대한 배열의 구조 표현은 AD의 효율적 벡터화를 가능하게 하며, 성능은 외부 BLAS/LAPACK 호출에 의해 주로 결정된다.
  • 커리 및 중첩 가능한 AD 연산자 지원을 통해 기능형 고계수 API를 통해 높은 사용성과 모듈성을 달성한다.
  • 벤치마킹 결과, AD 런타임 오버헤드가 낮으며, 성능은 OpenBLAS와 같은 최적화된 백엔드에 크게 의존한다.
  • 향후 F# 코드 문장표기법을 통한 소스 변환으로의 이행은 성능 향상과 API 단순화를 기대할 수 있다.
  • CUDA 및 cuDNN 기반 GPU 백엔드 개발이 진행 중이며, GPU에서 고성능 딥러닝 워크로드를 지원할 목적으로 개발 중이다.

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

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

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

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