Skip to content

Improve vector field adaptors to not require caching #1783

Description

@manuelgloeckler

Refactor vector field potential to allow estimating hyperparameters once.

By now we have quite a few methods to post-hoc adapt the score/vf to allow iid observations or in #1446 #1482 to allow post-hoc prior/likelihood modifications. All of this will wrap the original estimator, modify its output, and return a modified score.

Yet for some methods like Gauss or PriorGuide we have to do some "nontrivial" preprocessing/hyperparameter optimization before one can start to sample. This is currently made possible via caching i.e. such that only the first call is delayed.

This works, but it is brittle:

  • it hides expensive initialization behind the first evaluation,
  • it makes execution order matter in subtle ways,
  • and it couples correctness to correct cache behavior.

Additionally the sample method/params as keyword now becomes quite overloaded so it might make sense to introduce an new improved API i.e. as suggested in #1482 via posterior.with_iid("$METHOD",...).sample or posterior.with_guidance("$METHOD",...).sample

Goals

  • Design an interface that separates setup / fitting from score evaluation (i.e. a init method for the potential before sampling)
  • Allow wrapped estimators to run one-time preprocessing before sampling

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementImprovement planned or wanted by the maintainersinferenceTrainers and potentials in sbi/inferencescore-flow-matchingScore matching and flow matching methods, for example NPSE and FMPE

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions