beanmachine.ppl.inference.hmc_inference module
- class beanmachine.ppl.inference.hmc_inference.GlobalHamiltonianMonteCarlo(trajectory_length: float, initial_step_size: float = 1.0, adapt_step_size: bool = True, adapt_mass_matrix: bool = True, full_mass_matrix: bool = False, target_accept_prob: float = 0.8, nnc_compile: bool = False, experimental_inductor_compile: bool = False)
Bases:
beanmachine.ppl.inference.base_inference.BaseInference
Global (multi-site) Hamiltonian Monte Carlo [1] sampler. This global sampler blocks all of the target random_variables in the World together and proposes them jointly.
[1] Neal, Radford. MCMC Using Hamiltonian Dynamics.
- Parameters
trajectory_length (float) – Length of single trajectory.
initial_step_size (float) – Defaults to 1.0.
adapt_step_size (bool) – Whether to adapt the step size, Defaults to True,
adapt_mass_matrix (bool) – Whether to adapt the mass matrix. Defaults to True,
target_accept_prob (float) – Target accept prob. Increasing this value would lead to smaller step size. Defaults to 0.8.
nnc_compile – If True, NNC compiler will be used to accelerate the inference.
experimental_inductor_compile – If True, TorchInductor will be used to accelerate the inference.
- get_proposers(world: beanmachine.ppl.world.world.World, target_rvs: Set[beanmachine.ppl.model.rv_identifier.RVIdentifier], num_adaptive_sample: int) List[beanmachine.ppl.inference.proposer.base_proposer.BaseProposer]
Returns the proposer(s) corresponding to every non-observed variable in target_rvs. Should be implemented by the specific inference algorithm.
- class beanmachine.ppl.inference.hmc_inference.SingleSiteHamiltonianMonteCarlo(trajectory_length: float, initial_step_size: float = 1.0, adapt_step_size: bool = True, adapt_mass_matrix: bool = True, full_mass_matrix: bool = False, target_accept_prob: float = 0.8, nnc_compile: bool = True, experimental_inductor_compile: bool = False)
Bases:
beanmachine.ppl.inference.base_inference.BaseInference
Single site Hamiltonian Monte Carlo [1] sampler. During inference, each random variable is proposed through its own leapfrog trajectory while fixing the rest of World as constant.
[1] Neal, Radford. MCMC Using Hamiltonian Dynamics.
- Parameters
trajectory_length (float) – Length of single trajectory.
initial_step_size (float) – Defaults to 1.0.
adapt_step_size (bool) – Whether to adapt the step size, Defaults to True,
adapt_mass_matrix (bool) – Whether to adapt the mass matrix. Defaults to True,
target_accept_prob (float) – Target accept prob. Increasing this value would lead to smaller step size. Defaults to 0.8.
nnc_compile – If True, NNC compiler will be used to accelerate the inference.
experimental_inductor_compile – If True, TorchInductor will be used to accelerate the inference.
- get_proposers(world: beanmachine.ppl.world.world.World, target_rvs: Set[beanmachine.ppl.model.rv_identifier.RVIdentifier], num_adaptive_sample: int) List[beanmachine.ppl.inference.proposer.base_proposer.BaseProposer]
Returns the proposer(s) corresponding to every non-observed variable in target_rvs. Should be implemented by the specific inference algorithm.