-
Notifications
You must be signed in to change notification settings - Fork 562
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
Beginning infrastructure for Vecchia GP's #2311
base: main
Are you sure you want to change the base?
Conversation
…pproximated MVN distribution, a Vecchia MLL wrapper to apply any MLL to small blocks of data with the VeccMVN distribution, and a Block class to perform the data blocking functionality, keep track of block order, neighbors, and constructing testing data blocks and neighbors.
…om Block to Vecc.
…gn with variational module style.
…ing strategies and enable reordering.
…tion, add new ordering strategies.
@alexpeters1208 sorry for the very slow reply on this PR! I'm a fan of the various indexing strategies that you've built out here. It would also be good if we could get Finally, I would rename |
Finally as a timeline I'll be offline for the next month or so, so it's probably best to pick this PR up later this summer. |
@gpleiss I am also sorry to get back so late, many things have come up lately and this project has been on the back burner. As far as getting this work merged (which I would still really love to do), are you asking that I implement |
@alexpeters1208 sorry for the slow reply! Here's some thoughts: I like the idea of adding more Vecchia machinery to GPyTorch. Here's some requirements that I'd like to see though:
Ultimately, it would be great to use the Vecchia machinary you have as part of VNNGP. I want to be careful though that we are using faiss/scikit-learn and the batch conditional computation strategy, because we've put in a bit of work into ensuring that these mechanisms are quite efficient and fast ;) Also, I can't see the notebook you've created because the docs won't compile. Can you solve the warnings so I can take a look? |
Thanks for the quick reply.
I believed I've solved the warnings, waiting for checks to finish. I had renamed UPDATE: My checks are now failing due to |
@gpleiss The failing checks are due to a "No module named |
@gpleiss Poking you on this |
Sorry for the slow reply - you would need to add |
Thank you Geoff - the docs are now rendered and you can view the notebook. I still have not gotten around to re-implementing VNNGP with this framework, but I plan to sometime soon. Hopefully the notebook will help clarify what this contribution is about - it is a unified framework for doing nearest-neighbor computations, not a re-implementation of any specific clustering algorithm. Any clustering algorithm available in Python can be utilized in a custom |
@gpleiss I also have another notebook that details how this new feature actually gets used in training GP's, but there may be data in there that I'm unsure I should share publically. I would be happy to send you this notebook via email or something, so you can see how this feature is intended to be used in practice. |
This PR is for a new feature that will make training Vecchia GP's much easier with GPyTorch. This PR introduces an
Index
, which provides an interface for partitioning datasets with different clustering algorithms, measuring distances between partitions with different distance metrics viaDistanceMetrics
, and reordering datasets with different ordering strategies viaOrderingStrategies
. TheIndex
ensures that the neighborhood structure in the data adheres to the Vecchia ordering constraints that ensure joint densities, and provides an easy way to access blocks of observations and neighboring sets for both training and testing data. These things are needed to compute block mean and covariance estimates for Vecchia models, and we provide a function to do this with an index in the init.py file, though this function can certainly be improved and almost certainly belongs somewhere else.We enable custom clustering algorithms, distance metrics, and ordering strategies for testing new approaches to Vecchia GP's, and tutorials for this customization are still in progress.