Welcome to Markovflow

Markovflow is a research toolbox dedicated to Markovian Gaussian processes.

Markovflow uses the mathematical building blocks from GPflow [vdWDJ+20] and marries these with the powerful linear algebra routine for banded matrices provided by banded_matrices. This combination leads to a framework that can be used for:

  • researching Markovian Gaussian process models (e.g., [AEA+20, DAB+19, WSA21]), and

  • building, training, evaluating and deploying Gaussian processes in a modern way, making use of the tools developed by the deep learning community.

Getting started

We have provided multiple Tutorials showing the basic functionality of the toolbox, and have a comprehensive API Reference.

As a quick teaser, here’s a snippet that demonstrates how to perform classic GP regression for a simple one-dimensional dataset:

# Create a GPR model
kernel = Matern32(lengthscale=8.0, variance=1.0)
observation_covariance = tf.constant([[0.0001]], dtype=FLOAT_TYPE)
input_data = (tf.constant(time_points), tf.constant(norm_observations))
gpr = GaussianProcessRegression(input_data=input_data, kernel=kernel,
                            chol_obs_covariance=tf.linalg.cholesky(observation_covariance))

# Compile and fit
opt = tf.optimizers.Adam()
for _ in range(100):
    opt.minimize(gpr.loss, gpr.trainable_variables)
print(gpr.log_likelihood())

Installation

Latest release from PyPI

To install Markovflow using the latest release from PyPI, run

$ pip install markovflow

The library supports Python 3.7 onwards, and uses semantic versioning.

Latest development release from GitHub

In a check-out of the develop branch of the Markovflow GitHub repository, run

$ pip install -e .

Join the community

Markovflow is an open source project. We welcome contributions. To submit a pull request, file a bug report, or make a feature request, see the contribution guidelines.

We have a public Slack workspace. Please use this invite link if you’d like to join, whether to ask short informal questions or to be involved in the discussion and future development of Markovflow.

Bibliography

AEA+20

Vincent Adam, Stefanos Eleftheriadis, Artem Artemev, Nicolas Durrande, and James Hensman. Doubly sparse variational gaussian processes. In International Conference on Artificial Intelligence and Statistics, 2874–2884. PMLR, 2020.

DAB+19

Nicolas Durrande, Vincent Adam, Lucas Bordeaux, Stefanos Eleftheriadis, and James Hensman. Banded matrix operators for gaussian markov models in the automatic differentiation era. In The 22nd International Conference on Artificial Intelligence and Statistics, 2780–2789. PMLR, 2019.

vdWDJ+20

Mark van der Wilk, Vincent Dutordoir, ST John, Artem Artemev, Vincent Adam, and James Hensman. A framework for interdomain and multioutput Gaussian processes. arXiv preprint arXiv:2003.01115, 2020.

WSA21

William Wilkinson, Arno Solin, and Vincent Adam. Sparse algorithms for markovian gaussian processes. In International Conference on Artificial Intelligence and Statistics, 1747–1755. PMLR, 2021.