JuliaDiff/DifferentiationInterface.jl

An interface to various automatic differentiation backends in Julia.

解決的問題

在 Julia 中使用自動微分(AD)時,無需撰寫特定後端的程式碼。開發者無需學習並實作每個 AD 庫的不同 API,而是可以使用單一、統一的語法,在各種後端之間計算微分。

作用方式

它作為一個抽象層(介面),將一組共通指令對應到支援的 AD 後端的特定 API。支援一階與二階運算子(如梯度、雅可比矩陣與海森矩陣),處理就地與非就地微分,並包含預先配置快取或記錄計算圖的機制,以優化效能。它也整合稀疏性處理,並提供驗證工具,確保不同後端之間輸出的一致性。

適用對象

需要執行自動微分,並希望在不同 AD 後端(例如 Zygote、ForwardDiff、Enzyme)之間靈活切換,而無需重寫核心邏輯的 Julia 生態系統中的研究人員與開發者。

主要特色

  • 統一語法:支援 Zygote、ForwardDiff 和 Enzyme 等多個 AD 後端的單一 API。
  • 全面的運算子支援:支援梯度、雅可比矩陣與海森矩陣。
  • 效能最佳化:包含預先配置快取或記錄計算圖的準備機制。
  • 稀疏性支援:內建稀疏微分處理。
  • 驗證工具:透過 DifferentiationInterfaceTest 提供測試與基準測試工具。

相關

  • 專案
  • 專案
  • 專案
  • 專案
  • 專案