NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #4668 most downloaded on PyPI
An implementation of Gaussian Processes in Pytorch
Last release 7 months ago
28 Feb 2026
Release timing varies
gaps range from 3 weeks to 13 months
Most releases are documented
notes for 33 of 41 stable releases
Nothing withdrawn
no release was ever pulled
8 years old
47 releases · first in 2018
Deprecating length_safe_zip in favor of zip(..., strict=True) by @SebastianAment in https://github.com/cornellius-gp/gpytorch/pull/2718
length_safe_zip in favor of zip(..., strict=True) by @SebastianAment in https://github.com/cornellius-gp/gpytorch/pull/2718ConstantKernel broadcast properly by @kayween in https://github.com/cornellius-gp/gpytorch/pull/2720Full Changelog: https://github.com/cornellius-gp/gpytorch/compare/v1.15.1...v1.15.2
One column per quarter.
LargeBatchVariationalStrategy caches triangular solves for test time by @jacobrgardner in https://github.com/cornellius-gp/gpytorch/pull/2698
Full Changelog: https://github.com/cornellius-gp/gpytorch/compare/v1.15...v1.15.1
Speed Up Variational Strategy by @kayween in https://github.com/cornellius-gp/gpytorch/pull/2692
Full Changelog: https://github.com/cornellius-gp/gpytorch/compare/v1.14.3...v1.15
Remove unused eps parameter from relevant kernels by @Thomas-Christie in https://github.com/cornellius-gp/gpytorch/pull/2675
MultitaskMultivariateNormal by @kayween in https://github.com/cornellius-gp/gpytorch/pull/2680Iterable[Kernel] -> Kernel by @kayween in https://github.com/cornellius-gp/gpytorch/pull/2678Full Changelog: https://github.com/cornellius-gp/gpytorch/compare/v1.14.2...v1.14.3
This bugfix reverts a breaking change introduced by #2671.
Full Changelog: https://github.com/cornellius-gp/gpytorch/compare/v1.14.1...v1.14.2
This bugfix reverts a breaking change introduced by #2671.
Replace deprecated np.Inf with np.inf by @saitcakmak in https://github.com/cornellius-gp/gpytorch/pull/2663
HadamardGaussianLikelihood by @sdaulton in https://github.com/cornellius-gp/gpytorch/pull/2664Full Changelog: https://github.com/cornellius-gp/gpytorch/compare/v1.14...v1.14.1
Remove deprecated lazy tensor by @saitcakmak in https://github.com/cornellius-gp/gpytorch/pull/2615
new_covar_cache to enable JIT tracing of models after fantasization by @SaiAakash in https://github.com/cornellius-gp/gpytorch/pull/2605.diagonal() calls for keops kernel matrices. by @gpleiss in https://github.com/cornellius-gp/gpytorch/pull/2590Full Changelog: https://github.com/cornellius-gp/gpytorch/compare/v1.13...v1.14
fix: replace deprecated scipy.integrate.cumtrapz with cumulative_trapezoid by @natsukium in https://github.com/cornellius-gp/gpytorch/pull/2545
main and develop branches by @gpleiss in https://github.com/cornellius-gp/gpytorch/pull/2542Full Changelog: https://github.com/cornellius-gp/gpytorch/compare/v1.12...v1.13
Minor patch to Matern covariances by @j-wilson in https://github.com/cornellius-gp/gpytorch/pull/2378
HeteroskedasticNoise after exceptions by @fjzzq2002 in https://github.com/cornellius-gp/gpytorch/pull/2382gpytorch.lazy.__getattr__ if name starts with _ by @saitcakmak in https://github.com/cornellius-gp/gpytorch/pull/2423python should also be a runtime dependency by @jaimergp in https://github.com/cornellius-gp/gpytorch/pull/2457ConstantKernel by @SebastianAment in https://github.com/cornellius-gp/gpytorch/pull/2511kwargs to ExactMarginalLogLikelihood call by @rafaol in https://github.com/cornellius-gp/gpytorch/pull/2522exclude statements in pre-commit configuration by @JonathanWenger in https://github.com/cornellius-gp/gpytorch/pull/2541Full Changelog: https://github.com/cornellius-gp/gpytorch/compare/v1.11...v1.12
Clean up deprecation warnings by @saitcakmak in https://github.com/cornellius-gp/gpytorch/pull/2348
dist by @esantorella in https://github.com/cornellius-gp/gpytorch/pull/2336Full Changelog: https://github.com/cornellius-gp/gpytorch/compare/v1.10...v1.11
Use raw strings to avoid "DeprecationWarning: invalid escape sequence" by @saitcakmak in https://github.com/cornellius-gp/gpytorch/pull/2282
Full Changelog: https://github.com/cornellius-gp/gpytorch/compare/v1.9.1...v1.10
Retiring deprecated versions ofpsd_safe_cholesky, NotPSDError, and assert_allclose by @SebastianAment in https://github.com/cornellius-gp/gpytorch/pul…
step by @dannyfriar in https://github.com/cornellius-gp/gpytorch/pull/2118psd_safe_cholesky, NotPSDError, and assert_allclose by @SebastianAment in https://github.com/cornellius-gp/gpytorch/pull/2130Kernel.covar_dist by @Balandat in https://github.com/cornellius-gp/gpytorch/pull/2138_sq_dist when x1_eq_x2 by @SebastianAment in https://github.com/cornellius-gp/gpytorch/pull/2204expand_batch by @dannyfriar in https://github.com/cornellius-gp/gpytorch/pull/2185postprocess by @SebastianAment in https://github.com/cornellius-gp/gpytorch/pull/2205LazyEvaluatedKernelTensor recall the grad state at instantiation by @SebastianAment in https://github.com/cornellius-gp/gpytorch/pull/2229device property to Kernels, add unit tests by @Balandat in https://github.com/cornellius-gp/gpytorch/pull/2234Full Changelog: https://github.com/cornellius-gp/gpytorch/compare/v1.9.0...v1.9.1
…However, you'll see a lot of annoying deprecation warnings 😄
Starting with this release, the LazyTensor functionality of GPyTorch has been pulled out into its own separate Python package, called linear_operator. Most users won't notice the difference (at the moment), but power users will notice a few changes.
If you have your own custom LazyTensor code, don't worry: this release is backwards compatible! However, you'll see a lot of annoying deprecation warnings 😄
gpytorch.lazy.*LazyTensor classes now live in the linear_operator repo, and are now called linear_operator.operator.*LinearOperator.
gpytorch.lazy.DiagLazyTensor is now linear_operator.operators.DiagLinearOperatorNonLazyTensor is now DenseLinearOperatorgpytorch.lazify and gpytorch.delazify are now linear_operator.to_linear_operator and linear_operator.to_dense, respectively._quad_form_derivative method has been renamed to _bilinear_derivative (a more accurate name!)LinearOperator method names now reflect their corresponding PyTorch names. This includes:
add_diag -> add_diagonaldiag -> diagonalinv_matmul -> solvesymeig -> eigh and eigvalshLinearOperator now has the mT propertyLinearOperators are now compatible with the torch api! For example, the following code works:
diag_linear_op = linear_operator.operators.DiagLinearOperator(torch.randn(10))
torch.matmul(diag_linear_op, torch.randn(10, 2)) # returns a torch.Tensor!
gpytorch.functions - all of the core functions used by LazyTensors now live in the LinearOperator repo. This includes: diagonalization, dsmm, inv_quad, inv_quad_logdet, matmul, pivoted_cholesky, root_decomposition, solve (formally inv_matmul), and sqrt_inv_matmulgpytorch.utils - a few have moved to the LinearOperator repo. This includes: broadcasting, cholesky, contour_intergral_quad, getitem, interpolation, lanczos, linear_cg, minres, permutation, stable_pinverse, qr, sparse, SothcasticLQ, and toeplitz.Full Changelog: https://github.com/cornellius-gp/gpytorch/compare/v1.8.1...v1.9.0
MultitaskMultivariateNormal: fix tensor reshape issue by @adamjstewart in https://github.com/cornellius-gp/gpytorch/pull/2081
Full Changelog: https://github.com/cornellius-gp/gpytorch/compare/v1.8.0...v1.8.1
add variational nearest neighbor GP by @LuhuanWu in https://github.com/cornellius-gp/gpytorch/pull/2026
Full Changelog: https://github.com/cornellius-gp/gpytorch/compare/v1.7.0...v1.8.0
Important: This release requires Python 3.7 (up from 3.6) and PyTorch 1.10 (up from 1.9)
Important: This release requires Python 3.7 (up from 3.6) and PyTorch 1.10 (up from 1.9)
This release contains several bug fixes and performance improvements.
This release contains several bug fixes and performance improvements.
Add gpytorch.kernels.PiecewisePolynomialKernel
gpytorch.kernels.PiecewisePolynomialKernel (#1738)fast_computations flags are turned off (#1709)stable_qr function (#1714)num_classes in gpytorch.likelihoods.DirichletLikelihood should be an integer (#1728)This release adds 2 new model classes, as well as a number of bug fixes:
This release adds 2 new model classes, as well as a number of bug fixes:
Use current PyTorch functionality (#1611, #1586)
Various bug fixes, including
Simplify interface for 3+ layer DSPP models
latent_dim value for LMC variational models (#1512)gpytorch.utils.grid.ScaleToBounds utility to replace gpytorch.utils.grid.scale_to_bounds method (#1566)MultitaskGaussianLikelihoodKronecker (deprecated) is fully incorporated in MultitaskGaussianLikelihood
This release includes many major speed improvements, especially to Kronecker-factorized multi-output models.
base_sample_shape attribute for low-rank/degenerate distributions (#1502)gpytorch.settings.verbose_linalg context manager for seeing what linalg routines are run (#1489)inverse_transform is applied to the initial values of constraints (#1482)psd_safe_cholesky obeys cholesky_jitter settings (#1476)MultitaskGaussianLikelihoodKronecker (deprecated) is fully incorporated in MultitaskGaussianLikelihood (#1471)Spectral mixture kernels work with SKI
arg_constraints attribute (#1422)This release primarily focuses on performance improvements, and adds contour integral quadrature based variational models.
This release primarily focuses on performance improvements, and adds contour integral quadrature based variational models.
KroneckerProductLazyTensor symeig method (#1338)SpectralMixtureKernel accepts arbitrary batch shapes (#1350)**kwargs to the forward method (#1339)gpytorch.settings context managers keep track of their default value (#1347)requires_grad checks in gpytorch.inv_matmul (#1322)ZeroMean accepts a batch_shape argument (#1371)This release includes the following fixes:
This release includes the following fixes:
eigenvectors=False in LazyTensor#symeig (#1283)This release features a number of new and added features for approximate GP models:
This release features a number of new and added features for approximate GP models:
We have just added a number of new specialty kernels:
gpytorch.kernels.GaussianSymmetrizedKLKernel for performing regression with uncertain inputs (#1186)gpytorch.kernels.RFFKernel (random Fourier features kernel) (#1172, #1233)gpytorch.kernels.SpectralDeltaKernel (a parametric kernel for patterns/extrapolation) (#1231)gpytorch.kernels.SpectralMixtureKernel (#1171)GPyTorch is compatible with PyTorch 1.5 (latest release)
gpytorch.priors.MultivariateNormalPrior has an expand method (#1018)LazyTensor repeating works with rectangular matrices (#1068)gpytorch.kernels.ScaleKernel inherits the active_dims property from its base kernel (#1072)gpytorch.kernels.PeriodicKernel is batch-mode compatible (#1012)gpytorch.priors.MultivariateNormalPrior expand method (#1018)LazyTensors (#1029)gpytorch.mlls.GammaRobustVariationalELBO (#1038, #1053)gpytorch.kernels.SpectralMixtureKernel (#1052)gpytorch.variational.DeltaVariationalStrategyNothing published for this version
Nothing published for this version
…objects should still function, but many are deprecated. (#903).
Each feature in this section comes with a new example notebook and documentation for how to use them -- check the new docs!
gpytorch.kernels.SomeKernel with gpytorch.kernels.keops.SomeKernel with KeOps installed, and run exact GPs on 100000+ data points (#812).GridKernel and GridInterpolationKernel now support rectangular grids (#888).get_fantasy_model now supports batched models (#693).prior_mode context manager that causes GP models to evaluate in prior mode (#707).torch.cholesky_solve and torch.logdet now that they support batch mode / backwards (#880)IndexKernel (#912).__getitem__, which allows slicing batch dimensions (#782).AddedDiagLazyTensor (#930).is_stationary attribute (#925).deterministic_probes setting that causes our MLL computation to be fully deterministic when using CG+Lanczos, which improves L-BFGS convergence (#929).backward on gpytorch.functions.logdet (#711).skip_posterior_variances context is active (#741).diag mode for PeriodicKernel (#761).inv_softplus and inv_sigmoid (#776).InterpolatedLazyTensor for rectangular matrices (#906)IndexKernel for batch mode (#911).psd_safe_cholesky in prediction strategies rather than torch.cholesky (#956).A full list of bug fixes and features will be out with the 0.4 release.
A full list of bug fixes and features will be out with the 0.4 release.
This release addresses breaking changes in the recent PyTorch 1.2 release. Currently, GPyTorch will run on either PyTorch 1.1 or PyTorch 1.2.
This release addresses breaking changes in the recent PyTorch 1.2 release. Currently, GPyTorch will run on either PyTorch 1.1 or PyTorch 1.2.
A full list of new features and bug fixes will be coming soon in a GPyTorch 0.4 release.
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
FixedNoiseGaussianLikelihood offers a better interface for dealing with known observation noise values. WhiteNoiseKernel is now hard deprecated
Module (#596)b GPs simultaneously, you can now train a b1 x b2 matrix of GPs simultaneously if you so choose (#492, #589, #627)RBFKernelGrad now supports ARD (#602)FixedNoiseGaussianLikelihood offers a better interface for dealing with known observation noise values. WhiteNoiseKernel is now hard deprecated (#593)InvMatmul, InvQuadLogDet and InvQuad are now twice differentiable (#603)Likelihood has been redesigned. See the new documentation for details if you are creating custom likelihoods (#591)p(y|f, z) where f is a GP and z are arbitrary latent variables learned by Pyro (#591).model.initialize(**{"covar_module.base_kernel.lengthscale": 1., "covar_module.outputscale": 1.}) (#484)ModelList and LikelihoodList for training multiple GPs when batch mode can't be used -- see example notebooks (#471)GaussianLikelihood now has a default lower bound, similar to sklearn (#596)psd_safe_cholesky now adds successively increasing amounts of jitter rather than only once (#610)psd_safe_cholesky rather than torch.cholesky to initialize with the prior (#610)torch.cdist when on PyTorch 1.1.0 in the non-batch setting (#642)MultiDeviceKernel is now much faster (#491)active_dims in kernels was being applied twice (#576)MultiDeviceKernel (#560)fast_pred_var was failing for single training inputs (#574)prior_dist was being cached for VI, which was problematic for pyro models (#599)LinearKernel, including one where the variance could go negative (#584)set_train_data if they are currently None (#565)MultitaskMultivariateNormal (#545, #553)batch_symeig (#547)MultitaskMultivariateNormal wasn't interleaving rows correctly (#540)lengthscale is now torch.Size([1]) rather than torch.Size([1, 1]) (#605)setup.py now includes optional dependents, reads requirements from requirements.txt, does not require torch if pytorch-nightly is installed (#495)You can install GPyTorch via Anaconda
You can install GPyTorch via Anaconda (#463)
@ sign for matrix multiplication with LazyTensorsgpytorch.settings.fast_computations feature to (optionally) use Cholesky-based inference (#456)noise in GaussianLikelihood (#479)Nothing published for this version
Batch GPs, which previously were a feature, are now well-documented and much more stable (see docs)
gpytorch.settings.fast_computations)Nothing published for this version
Old models that were trained with log parameters will still work, but this is deprecated.
log(1 + e^x)) rather than through the log functionlog parameters will still work, but this is deprecated.GridKernel can be used for data that lies on a perfect grid.Implement diagonal correction for basic variational inference, improving predictive variance estimates. This is on by default.
LazyTensor._quad_form_derivative now has a default implementation! While custom implementations are likely to still be faster in many cases, this means that it is no longer required to implement a custom _quad_form_derivative when implementing a new LazyTensor subclass.Easier to experiment with different variational approximations
(Too many to name, but everything should be better 😬)
Nothing published for this version
GPyTorch is now available on pip! pip install gpytorch.
GPyTorch is now available on pip! pip install gpytorch.
Important! This release requires the preview build of PyTorch (>= 1.0). You should either build from source or install pytorch-nightly. See the PyTorch docs for specific installation instructions.
If you were previously using GPyTorch, see the migration guide to help you move over.
gpytorch.random_variables have been replaced by gpytorch.distributions. These build upon PyTorch distributions.
gpytorch.random_variables.GaussianRandomVariable -> gpytorch.distributions.MultivariateNormal.gpytorch.random_variables.MultitaskGaussianRandomVariable -> gpytorch.distributions.MultitaskMultivariateNormal.gpytorch.utils.scale_to_bounds is now gpytorch.utils.grid.scale_to_boundsGridInterpolationKernel, GridKernel, InducingPointKernel - the attribute base_kernel_module has become base_kernel (for consistency)AdditiveGridInterpolationKernel no longer exists. Now use `AdditiveStructureKernel(GridInterpolationKernel(...))MultiplicativeGridInterpolationKernel no longer exists. Now use ProductStructureKernel(GridInterpolationKernel(...))`.n_* -> num_*)Your coding agent can read these notes before it upgrades. Set up the MCP server →