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 で完全に実装されており、言語エコシステムとのより良い統合を実現します。
  • ミューテーションサポート: ミューテーションを直接サポートし、ほとんどの数値コードで手動でルールを書く必要を減らします。
  • キャッシュ戦略: キャッシュの準備と評価を分離することで、高速な繰り返し計算を可能にします。
  • 厳格な正しさ: 機能拡張の自由度よりも正しさと安定性を優先し、導関数を健全に構築できない場合には明示的なルールを必要とします。

関連

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