tinygp, “solvers” provide a swappable low-level interface for
implementing the linear algebra required to execute Gaussian Process models. At
tinygp includes two solvers, but new solvers can be implemented
as external packages or as pull requests to the main
tinygp GitHub project.
The two built in solvers are:
DirectSolver: A solver that uses a naive approach to solving the required linear systems. This can still be pretty fast if you have access to a GPU that can run
jaxcode. This is the default solver, and it can be used with any kernel implemented by
tinygp. Up to numerical precision, this is an exact solver.
QuasisepSolver: An experiemental scalable solver that exploits the “quasiseparable” structure found in many GP covariance matrices to make the required linear algabra possible in linear scaling with the size of the dataset. These methods were previously implemented as part of the celerite project.
Users generally won’t instantiate these solvers directly and
generally be able to figure out the best one to use. But you can use a specific
solver using the
solver argument to
gp = tinygp.GaussianProcess(..., solver=tinygp.solvers.DirectSolver)
The details for the included solvers are given below, but this is a pretty low-level feature and the details are definitely subject to change!
A direct solver that uses
A scalable solver that uses quasiseparable matrices