AdvancedVI v0.7.0
Changelog
Removal of special treatment to Bijectors.TransformedDistribution
Previously, KLMinRepGradDescent, KLMinRepGradProxDescent, KLMinScoreGradDescent only required the support of the target log-density problem to match that of q.
This was implemented by giving a special treatment to q <: Bijectors.TransformedDistribution through the Bijectors extension.
This, however, resulted in a multiplicative complexity in maintaining the relevant bits.
Since this is not the only way to deal with constrained supports, Bijectors extension is now removed.
In addition, KLMinRepGradDescent, KLMinRepGradProxDescent, KLMinScoreGradDescent now expect an unconstrained target log-density problem.
Instead, a tutorial has been added to the documentation on how to deal with a target log-density problem with constrained support.
Migration to the AbstractPPL evaluator interface
AdvancedVI no longer depends on DifferentiationInterface. Automatic differentiation is now routed through AbstractPPL's evaluator interface (AbstractPPL.prepare / AbstractPPL.value_and_gradient!!), introduced in AbstractPPL 0.15.
For users, the consequence is that the AD backend package must be loaded so that its AbstractPPL.prepare method is available:
AutoForwardDiffworks withusing ForwardDiff.AutoMooncakeworks withusing Mooncake.- Other backends routed through DifferentiationInterface (for example
AutoReverseDiffandAutoEnzyme) additionally requireusing DifferentiationInterfacealongside the concrete backend package.
AutoReverseDiff(; compile=true) is now rejected with an ArgumentError. Compiled tapes freeze captured values at preparation time, so reusing a prepared evaluator across optimization iterations would differentiate against stale data and silently produce incorrect gradients. Use AutoReverseDiff(; compile=false), or a reverse-mode backend such as AutoMooncake or AutoEnzyme, instead.
Compatibility bounds
AbstractPPLis now a dependency, bounded to0.15.DynamicPPLis bumped from0.40, 0.41to0.42.Mooncakeis bumped from0.4, 0.5to0.5.31.DifferentiationInterfaceis removed from the dependencies.
Merged pull requests:
- Automatic subsampling of
DynamicPPLmodels (#240) (@Red-Portal) - Interface fixes for DPPL 0.39 (#241) (@penelopeysm)
- Bump
DynamicPPL@0.40(#246) (@Red-Portal) - bump DynamicPLL@0.41 (#253) (@Red-Portal)
- Decrement patch version 0.7 (#254) (@Red-Portal)
- Use AbstractPPL evaluator interface (#255) (@yebai)
- Simplify CI scope to Ubuntu and remove Zygote integration/test support (#257) (@Copilot)
- Set CI to Julia 1 and trim verbose job names (#260) (@yebai)
- Bulk-format with JuliaFormatter v1 (#261) (@yebai)
- CompatHelper: bump compat for StatsFuns to 2 for package docs, (keep existing compat) (#265) (@github-actions[bot])
- Update HISTORY.md for 0.7.0 release (#268) (@shravanngoswamii)
- Replace CompatHelper with Dependabot (#269) (@shravangoswami-bot)
Closed issues: