beanmachine.ppl.inference.nuts_inference module
- class beanmachine.ppl.inference.nuts_inference.GlobalNoUTurnSampler(max_tree_depth: int = 10, max_delta_energy: float = 1000.0, initial_step_size: float = 1.0, adapt_step_size: bool = True, adapt_mass_matrix: bool = True, full_mass_matrix: bool = False, multinomial_sampling: bool = True, target_accept_prob: float = 0.8, nnc_compile: bool = True, experimental_inductor_compile: bool = False)
Bases:
beanmachine.ppl.inference.base_inference.BaseInference
Global No U-turn sampler [1]. This sampler blocks multiple variables together in the World and samples them jointly. This sampler adaptively sets the hyperparameters of the HMC kernel.
[1] Hoffman and Gelman. The No-U-turn sampler: adaptively setting path lengths in Hamiltonian Monte Carlo. [2] Betancourt, Michael. A Conceptual Introduction to Hamiltonian Monte Carlo.
- Parameters
max_tree_depth (int) – Maximum tree depth, defaults to 10.
max_delta_energy (float) – Maximum delta energy (for numerical stability), defaults to 1000.
initial_step_size (float) – Defaults to 1.0.
adapt_step_size (bool) – Whether to adapt step size with Dual averaging as suggested in [1], defaults to True.
adapt_mass_matrix (bool) – defaults to True.
multinomial_sampling (bool) – Whether to use multinomial sampling as in [2], defaults to True.
target_accept_prob (float) – Target accept probability. Increasing this 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.nuts_inference.SingleSiteNoUTurnSampler(max_tree_depth: int = 10, max_delta_energy: float = 1000.0, initial_step_size: float = 1.0, adapt_step_size: bool = True, adapt_mass_matrix: bool = True, full_mass_matrix: bool = False, multinomial_sampling: bool = True, target_accept_prob: float = 0.8, nnc_compile: bool = False, experimental_inductor_compile: bool = False)
Bases:
beanmachine.ppl.inference.base_inference.BaseInference
Single site No U-turn sampler [1]. This sampler proposes value for each random variable in the World one at a time. This sampler adaptively sets the hyperparameters of the HMC kernel.
[1] Hoffman and Gelman. The No-U-turn sampler: adaptively setting path lengths in Hamiltonian Monte Carlo. [2] Betancourt, Michael. A Conceptual Introduction to Hamiltonian Monte Carlo.
- Parameters
max_tree_depth (int) – Maximum tree depth, defaults to 10.
max_delta_energy (float) – Maximum delta energy (for numerical stability), defaults to 1000.
initial_step_size (float) – Defaults to 1.0.
adapt_step_size (bool) – Whether to adapt step size with Dual averaging as suggested in [1], defaults to True.
adapt_mass_matrix (bool) – defaults to True.
multinomial_sampling (bool) – Whether to use multinomial sampling as in [2], defaults to True.
target_accept_prob (float) – Target accept probability. Increasing this 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.