greta relies on, and was inspired by some pretty incredible pieces of software which deserve recognition.
greta wouldn’t be possible without TensorFlow, Googles computation engine for large-scale machine learning. TensorFlow runs all of greta’s calculations, enables distributed computations on multi-core and GPU systems, and carries out automatic differentiation efficiently, enabling greta to use efficient inference algorithms like Hamiltonian Monte Carlo.
TensorFlow is implemented in C++ and Python. RStudio’s reticulate and tensorflow packages provide the magic that bring TensorFlow and all things python to R. Under the hood, greta also uses Winston Chang’s R6 object system, and greta’s model plotting functionality is made possible by DiagrammeR.
The design and scope of greta was inspired by other general-purpose MCMC software like BUGS and JAGS that have enabled researchers to focus on modelling, rather than writing code. Stan’s approach of using automatic differentiation to enable efficient MCMC was a particularly big influence on greta, and the quality and quantity of Stan’s documentation and examples are something greta aspires to.
The python package Edward also uses TensorFlow as a backend for general-purpose statistical modelling, in a very elegant and pythonic way. GPflow uses a similar approach for the more specialised area of Gaussian process modelling, and was a strong influence on how greta is implemented.