Surrogate models that actually know calculus
A Python toolbox for cheap approximations of expensive simulations, with an unusual obsession over derivatives.

What it does SMT is a Python library for building surrogate models — fast statistical stand-ins for slow physics simulations or costly experiments. It bundles sampling methods, benchmark functions, and a small zoo of modeling techniques: kriging, radial basis functions, neural networks, and mixtures of experts. The API is deliberately plain; the goal is to let researchers plug in new methods without wrestling with boilerplate.
The interesting bit Most surrogate libraries treat gradients as an afterthought. SMT makes them first-class: training derivatives for gradient-enhanced modeling, prediction derivatives, and even derivatives with respect to the training data itself. It also ships models you won’t find elsewhere, including kriging via partial-least-squares reduction and energy-minimizing spline interpolation.
Key highlights
- First-class derivative support: gradient-enhanced training, prediction Jacobians, and sensitivity to training data
- Hierarchical and mixed-variable Gaussian processes (new in 2.0)
- Multi-fidelity modeling for combining cheap and expensive data sources
- Sparse Gaussian process and co-kriging variants for high-dimensional or multi-fidelity problems
- Documentation auto-generated from tested code with embedded plots
- BSD-licensed, depends on standard scientific Python stack
Caveats
- The README is thin on performance claims; no benchmarks against comparable libraries are shown
- Some advanced features (hierarchical spaces, mixed variables) appear to be recent additions with limited real-world battle scars visible in the docs
Verdict Worth a look if you’re doing gradient-enhanced surrogate modeling, multi-fidelity optimization, or architecture design with mixed variable types. Skip it if you just need a quick random forest or vanilla Gaussian process — scikit-learn or GPyTorch will be less to think about.