Skip to content

Making your benchmark of optimization algorithms simple and open

License

Notifications You must be signed in to change notification settings

inria-thoth/benchopt

 
 

Repository files navigation

Benchmark repository for optimization

Test Status Python 3.6+ codecov

BenchOpt is a benchmarking suite for optimization algorithms. It is built for simplicity, transparency, and reproducibility.

Benchopt is implemented in Python, and can run algorithms written in many programming languages (example). So far, Benchopt has been tested with Python, R, Julia and C/C++ (compiled binaries with a command line interface). Programs available via conda should be compatible.

BenchOpt is run through a command line interface as described in the API Documentation. Replicating an optimization benchmark should be as simple as doing:

conda create -n benchopt python
conda activate benchopt
pip install benchopt
git clone https://github.com/benchopt/benchmark_logreg_l2
cd benchmark_logreg_l2
benchopt install -e . -s lightning -s sklearn
benchopt run -e . --config ./config_example.yml

Running this command will give you a benchmark plot on l2-regularized logistic regression:

https://benchopt.github.io/_images/sphx_glr_plot_run_benchmark_001.png

See the Available optimization problems below.

Learn how to create a new benchmark using the benchmark template.

Install

The command line tool to run the benchmarks can be installed through pip. In order to allow benchopt to automatically install solvers dependencies, the install needs to be done in a conda environment.

conda create -n benchopt python
conda activate benchopt

To get the latest release, use:

pip install benchopt

To get the latest development version, use:

pip install -U -i https://test.pypi.org/simple/ benchopt

Then, existing benchmarks can be retrieved from git or created locally. For instance, the benchmark for Lasso can be retrieved with:

git clone https://github.com/benchopt/benchmark_lasso

Command line interface

The preferred way to run the benchmarks is through the command line interface. To run the Lasso benchmark on all datasets and with all solvers, run:

benchopt run --env ./benchmark_lasso

To get more details about the different options, run:

benchopt run -h

or read the CLI documentation.

Benchopt also provides a Python API described in the API documentation.

Available optimization problems

Problem Results Build Status
Ordinary Least Squares (OLS) Results Build Status OLS
Non-Negative Least Squares (NNLS) Results Build Status NNLS
LASSO: L1-Regularized Least Squares Results Build Status Lasso
LASSO Path Results Build Status Lasso Path
Elastic Net   Build Status ElasticNet
MCP Results Build Status MCP
L2-Regularized Logistic Regression Results Build Status LogRegL2
L1-Regularized Logistic Regression Results Build Status LogRegL1
L2-regularized Huber regression   Build Status HuberL2
L1-Regularized Quantile Regression Results Build Status QuantileRegL1
Linear SVM for Binary Classification   Build Status LinearSVM
Linear ICA   Build Status LinearICA
Approximate Joint Diagonalization (AJD)   Build Status JointDiag
1D Total Variation Denoising   Build Status TV1D
2D Total Variation Denoising   Build Status TV2D
ResNet Classification Results Build Status ResNetClassif

Citing Benchopt

If you use Benchopt in a scientific publication, please cite the following paper

@article{benchopt,
   author = {Moreau, Thomas and Massias, Mathurin and Gramfort, Alexandre and Ablin, Pierre
             and Bannier, Pierre-Antoine and Charlier, Benjamin and Dagréou, Mathieu and Dupré la Tour, Tom
             and Durif, Ghislain and F. Dantas, Cassio and Klopfenstein, Quentin
             and Larsson, Johan and Lai, En and Lefort, Tanguy and Malézieux, Benoit
             and Moufad, Badr and T. Nguyen, Binh and Rakotomamonjy, Alain and Ramzi, Zaccharie
             and Salmon, Joseph and Vaiter, Samuel},
   title  = {Benchopt: Reproducible, efficient and collaborative optimization benchmarks},
   year   = {2022},
   url    = {https://arxiv.org/abs/2206.13424}
}

About

Making your benchmark of optimization algorithms simple and open

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 73.8%
  • JavaScript 9.2%
  • CSS 8.1%
  • HTML 8.0%
  • Shell 0.6%
  • R 0.2%
  • Other 0.1%