← all repositories
SMTorg/smt

Surrogate models that actually know calculus

A Python toolbox for cheap approximations of expensive simulations, with an unusual obsession over derivatives.

890 stars Jupyter Notebook ML FrameworksOther AI
smt
Velocity · 7d
+0.3
★ / day
Trend
steady
collecting data…
star history

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.

heatdrop uses Google Analytics to see which pages get read — nothing else. Your call. How we handle data.