chalk-lab/Mooncake.jl

Implementation of a language-level autograd compiler

解決的問題

Mooncake.jl 提供了一個完全以 Julia 寫成的高性能自動微分(AD)套件。它旨在改善現有的工具(如 ForwardDiff.jl、ReverseDiff.jl 和 Zygote.jl),為涉及變異的數值 Julia 程式碼提供更穩定、更正確的梯度與海森矩陣計算方法。

工作原理

該套件使用快取機制來優化重複計算。使用者首先呼叫準備函數(如 prepare_gradient_cache)來設定與特定輸入類型和大小相關的快取。一旦快取準備完成,後續呼叫 value_and_gradient!! 等函數計算值、梯度或海森矩陣時,將快速且高效。

適用對象

專為需要可靠、快速且可重複的梯度與海森矩陣評估的數值 Julia 程式碼研究者與開發者設計,尤其適用於需要直接支援變異的場景。

主要亮點

  • 完全以 Julia 實作:完全以 Julia 寫成,與語言生態系統整合更佳。
  • 支援變異:直接支援變異,大多數數值程式碼中無需手動撰寫規則。
  • 快取策略:將快取準備與評估分離,實現快速重複計算。
  • 嚴格正確性:優先考慮正確性與穩定性,而非無限制的功能擴展;在無法穩健建構導數時,要求顯式規則。

相關

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