JuliaDiff/DifferentiationInterface.jl

An interface to various automatic differentiation backends in Julia.

何を解決するか

Juliaで自動微分(AD)を使用する際、バックエンド固有のコードを書く必要がなくなります。各ADライブラリの異なるAPIを学び、実装するのではなく、単一の統一された構文で、さまざまなバックエンド間で微分を計算できます。

動作方法

これは、サポートされているADバックエンドの特定のAPIに共通のコマンドをマッピングする抽象化レイヤー(インターフェース)として機能します。1次および2次オペレータ(勾配、ヤコビアン、ヘッセ行列など)をサポートし、インプレースおよびアウトオブプレースの微分を処理し、パフォーマンス最適化のためのキャッシュの事前割り当てやテープの記録のメカニズムを含みます。また、スパース微分の処理を組み込み、異なるバックエンド間で一貫した出力を保証する検証ツールも提供します。

対象ユーザー

自動微分を実行し、Zygote、ForwardDiff、Enzymeなどの異なるADバックエンド間で切り替えたいJuliaエコシステムの研究者や開発者。

主な特徴

  • 統一された構文: Zygote、ForwardDiff、Enzymeを含む複数のADバックエンド用の1つのAPI。
  • 包括的なオペレータ: 勾配、ヤコビアン、ヘッセ行列をサポート。
  • パフォーマンス最適化: キャッシュやテープの事前割り当てのための準備メカニズムを含む。
  • スパース対応: スパース微分の組み込み処理。
  • 検証ツール: DifferentiationInterfaceTest を通じたテストおよびベンチマークユーティリティを提供。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト