Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement automatic selection of dense/diag metric at warmup #2814

Open
bbbales2 opened this issue Sep 11, 2019 · 2 comments
Open

Implement automatic selection of dense/diag metric at warmup #2814

bbbales2 opened this issue Sep 11, 2019 · 2 comments
Milestone

Comments

@bbbales2
Copy link
Member

Summary:

Implement the automatic selection between metric=dense_e and metric=diag_e as described in: https://arxiv.org/abs/1905.11916

Description

It's not always obvious when the diagonal or dense metrics are the best. Or even if it's obvious that a dense metric will be good eventually, early in warmup the proposed metrics might not be so great.

This change will, at the end of each warmup stage where the metric is recomputed, decide whether to use a dense or diagonal metric for the next warmup stage (or for the sampling) automatically.

Current Version:

v2.20.0

@bob-carpenter
Copy link
Member

bob-carpenter commented Sep 12, 2019

Is this issue for the sampler and a services function?

Could you explain where the sampler functionality will go and how the new services function will differ from our existing dense and diagonal service functions.

@bbbales2
Copy link
Member Author

Is this issue for the sampler and a services function?

Both and also whatever needs to happen with cmdstan.

Could you explain where the sampler functionality will go and how the new services function will differ from our existing dense and diagonal service functions.

I made a third metric option in cmdstan ('auto'). I made a new service function here: https://github.com/stan-dev/stan/blob/88225d08e30636073a310e9cc4eefc97e5212dbf/src/stan/services/sample/hmc_nuts_auto_e_adapt.hpp

To give some idea of what changed, the changed file list is:

src/stan/mcmc/auto_adaptation.hpp 
src/stan/mcmc/hmc/hamiltonians/auto_e_metric.hpp 
src/stan/mcmc/hmc/hamiltonians/auto_e_point.hpp 
src/stan/mcmc/hmc/nuts/adapt_auto_e_nuts.hpp 
src/stan/mcmc/hmc/nuts/auto_e_nuts.hpp 
src/stan/mcmc/stepsize_auto_adapter.hpp
src/stan/services/sample/hmc_nuts_auto_e_adapt.hpp 

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants