The 2012 hyperparameter tuner that won't stop running
A legacy Bayesian optimization package that still works if you can stomach Python 2.7 and Protocol Buffers.

What it does
Spearmint automatically tunes parameters to minimize some expensive objective function in as few evaluations as possible. You wrap your experiment in a Python or Matlab function, hand Spearmint a config file with parameter bounds, and it iteratively proposes new configurations using Gaussian process expected improvement. It can run locally, across multiple cores, or on a Sun Grid Engine cluster.
The interesting bit
The package ships two distinct personalities: “Spearmint” for fully automated experiment management with Protocol Buffers, and “Spearmint-lite” for flat-file JSON operation when you want to stay in the loop. The authors also built in resumability—kill the process mid-run and restart without losing progress, which matters when your experiments take hours each.
Key highlights
- Implements the algorithms from the NIPS 2012 paper “Practical Bayesian Optimization of Machine Learning Algorithms”
- Supports continuous, integer, and categorical (ENUM) variables
- Parallel execution via local processes or SGE cluster queues
- Includes a local web status page (
-wflag) for monitoring runs - Matlab wrappers supported alongside Python
Caveats
- Requires Python 2.7, which reached end-of-life in 2020
- The README explicitly states this repo is in maintenance-only mode; active development moved to a new repository with a non-commercial license
- Protocol Buffers dependency for the full version adds setup friction
Verdict
Worth a look if you need the original reference implementation under a permissive license, or if you’re reproducing 2012-era ML experiments. Everyone else should probably evaluate the newer HIPS/Spearmint fork or modern alternatives like Optuna.