← all repositories
JasperSnoek/spearmint

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.

1.4k stars Python ML FrameworksLLMOps · Eval
spearmint
Velocity · 7d
+0.3
★ / day
Trend
steady
star history

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 (-w flag) 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.

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