  PARyOpt is a python based implementation of the Bayesian optimization routine
designed for remote and asynchronous function evaluations. Bayesian
optimization is especially attractive for computational optimization due to its
low cost function footprint as well as the ability to account for uncertainties
in data. A key challenge to efficiently deploy any optimization strategy on
distributed computing systems is the synchronization step, where data from
multiple function calls is assimilated to identify the next campaign of
function calls. Bayesian optimization provides an elegant approach to overcome
this issue via asynchronous updates. We formulate, develop and implement a
parallel, asynchronous variant of Bayesian optimization. The framework is
robust and resilient to external failures. We show how such asynchronous
evaluations help reduce the total optimization wall clock time for a suite of
test problems. Additionally, we show how the software design of the framework
allows easy extension to response surface reconstruction (Kriging), providing a
high performance software for autonomous exploration. The software is available
on PyPI, with examples and documentation.
