What’s new#
Version 1.7 - in development#
Major change#
Benchopt is now supported on Windows!! \o/ By Wassim Mazouz, Mathurin Massias and Thomas Moreau (#717)
Imports in the benchmark are now done without the
safe_import_context, while keeping the possibility to list solvers and datasets even when a package is not installed. The helper is deprecated and will be removed in benchopt1.8. By Mathurin Massias and Thomas Moreau (#788)
CLI#
Add
--no-cacheoption tobenchopt run, to disable caching. By Thomas Moreau (#800)Add
--gpuflag tobenchopt install, to handle different requirements for GPU and CPU. By Mathurin Massias (#793)Make it possible to run
benchoptaspython -m benchopt, to ease running in various environment and debugging. By Rémi Flamary (#685)
API#
Add
slurm_paramsattribute toSolverto allow overriding the default SLURM config. By `Pierre-Louis Barbarant`_ (#805)Support
requirementsbeing a dictionary with keys"gpu"and"cpu", for classes whose install differ on GPU and CPU. By Mathurin Massias (#793)Change channel specification in requirements, replacing the split format with
::instead of:. This allow specifying URL channels. By Thomas Moreau (#758)Add
Objective,SolverandDatasetparameters as columns in the result DataFrame. The parameters’ names are respectively prefixed withp_obj_|p_solver_|p_dataset_to avoid collapse between the different components. By Melvine Nargeot and Thomas Moreau (#703).Objectivecan now return multiple evaluation at once, to store non-aggregated metrics. See Producing multiple evaluations at once. By Thomas Moreau (#778).
FIX#
Display for boxplot in the
result.jswas broken. By Thomas Moreau (#757)Default value for
data_homewas incorrect. By Thomas Moreau (#758)Fix the
skipAPI for objectives that was leading to a display error. By Thomas Moreau (#763)Fix the
infocommand. By Pierre-Antoine Comby (#768)Fix ignored
--minimaloption inbenchopt install. By Lionel Kusch (#786)Fix cache miss when order of the solver changes. By Thomas Moreau (#806)
Fix
get_data_pathnot working with parallel runs. By Thomas Moreau (#815)Fix
UnboundedLocalErrorwhen RuntimeError onwarm_up. By Johan Larsson (#809)Fix error when solver finishes before callback. By Thomas Moreau (#817)
Version 1.6 - 15/07/2024#
API#
Add a
save_final_resultsmethod to Objective. If implemented it is run after the last solver iteration, to get desired outputs to be saved to file system. By Pierre-Antoine Comby (#722)Add native way to do cross-validation in a benchmark with
Objective.cvattribute that change split for each repetition. By Christopher Marouani and Thomas Moreau (#623).Run-config files now support having parameters as nested dict, with potentially non-trivial structures (like dictionaries). By Thomas Moreau (#706).
Raise error when an invalid install_cmd is provided. By Jad Yehya (#714).
Add boxplot option to plot the benchmark results. By Melvine Nargeot (#714).
CLI#
Add
--collectoption to allow gathering results which are already in cache in a single parquet file. By Thomas Moreau (#710)Add
--downloadoption inbenchopt installto allow downloading the data when installing the benchmark. By Thomas Moreau (#718)Add
--no-timeoutoption inbenchopt runto allow solvers to bypass timeout. By Célestin Eve (#725)Remove support for deprecated
.iniconfig files. All config files should now use theyamlformat. By Thomas Moreau (#699)
FIX#
Disable caching of diverged/errored runs. By Julie Alberge and Virginie Loison (#735)
Fix pickling of dynamic modules to allow for nested parallelism in distributed runs. By Thomas Moreau (#713)
DOC#
Add documentation for the
run_oncesampling strategy. By Mathieu Dagréou (#700).
Version 1.5.1 - 22/09/2023#
Bugfix release.
FIX#
Fix benchopt dependency specification to install benchopt in child env with extra
[test]. By Thomas Moreau (#662).
Version 1.5 - 18/09/2023#
API#
Add a
Objective.urlattribute to specify the original repo of the benchmark. By Thomas Moreau (#621).Deprecate passing in arguments to callback of when
sampling_strategy='callback'. Now on, the results from theSolverare collected usingget_result. By Thomas Moreau (#631).Deprecate
Objective.get_one_solutionin favor ofObjective.get_one_resultfor consistency withObjective.evaluate_result. By Thomas Moreau (#631).Deprecate
Objective.computein favor ofObjective.evaluate_result, for consistency withSolver.get_result. LikeDataset.get_data,Solver.get_resultmust now return a dictionary, which is unpacked as arguments toObjective.evaluate_result. By Mathurin Massias (#576).Solver.support_sparseattribute is deprecated in favor of the use ofSolver.skip, by Mathurin Massias (#614).stopping_strategyattribute is replaced bysampling_strategyto clarify the concept, by Mathurin Massias (#585).Add
Solver.warm_upfunction for explicit warmup instructions, such as empty run for jitting. This function is called only once per solver. By Pierre Ablin (#602).
PLOT#
Add the possibility to save views of the plot in the HTML. These views can be created in the HTML interface and saved in config files, linked to output parquet files, by Amélie Vernay, Tanguy Lefort, Melvine Nargeot and Thomas Moreau (#552).
DOC#
Reformatting and enriching the documentation for easy onboarding. By Badr Moufad and Mathurin Massias (#619, #629).
Tutorial on adding a new solver to a benchmark. By Badr MOUFAD and Mathurin Massias (#635).
Internals#
Add helper to store and retrieve metadata in parquet files. This will allow storing per-run plotting information. By Thomas Moreau (#637).
Version 1.4 - 03/07/2023#
CLI#
Add support for minute and hour unit suffix in timeout limit through the syntax
--timeout 10mor--timeout 1h. By Mathurin Massias (#535).Remove deprecated
-o/--objective-filteroption inbenchopt run. By Thomas Moreau (#569)Deprecate
.iniconfig file and use.ymlfiles instead. A conversion should be performed automatically. By Tanguy Lefort, Amélie Vernay and Thomas Moreau (#552).
API#
The
get_nextmethod ofBaseSolveris no longer static. By Badr Moufad (#566)Add
SingleRunCriterionto run a solver only once. This can be used for benchmarking methods where we are interested in objective value at convergence. By Thomas Moreau (#511)Add
run_once()helper to easily warmup solvers with callback. By Thomas Moreau (#511)Add
pre_run_hook()hook to ignore cost that cannot be cached globally for a solver. By Thomas Moreau (#525)Remove deprecated
Objective.to_dict,safe_import_context.import_from. Force implementation ofget_one_solution(). By Thomas Moreau (#569)
PLOT#
Add a tooltip beside to show description of objective. Description is provided as docstring of the
BaseObjectiveclass. By Badr Moufad (#556)Show solver description when hovering over solvers. Description is provided as docstring of the
BaseSolverclass. By Badr Moufad (#543)Enable visualizing the objective as function of
stopping_criterion: time, iteration, or tolerance. By Badr Moufad (#479)Add button to share and set specific views on the plot. For now, the view needs to be defined manually in the benchmark config file but an export button will be added in follow up PRs. By Tanguy Lefort, Amélie Vernay and Thomas Moreau (#552).
FIX#
Do not fail and raise a warning when
safe_import_contextis not namedimport_ctx. By Mathurin Massias (#524)
Version 1.3.1 - 01/12/2022#
Bug fix release
FIX#
Typo in README and doc
Barchart solver color to be the same as the other plots.
Warning for deprecation not using the right class
Plot quantile incorrect display
Version 1.3 - 21/11/2022#
CLI#
Add support for custom parameters in CLI for objectives, datasets, and solvers, through the syntax
-s solver_name[parameter=value]. See the CLI documentation for more details on the syntax. By Tom Dupré la Tour (#362).Add
--slurmoption inbenchopt runto allow running the benchmark on a SLURM cluster. See the Running the benchmark on a SLURM cluster for more details on the config. By Thomas Moreau (#407)Add
benchopt archiveto create atar.gzarchive with the benchmark’s files for sharing with others or as supplementary materials for papers. By Thomas Moreau (#408).Now the result data are saved in the Parquet format. The use of CSV files is deprecated. By Melvine Nargeot (#433).
Change the default number of repetitions to
1. By Benoît Malézieux (#457).
API#
Allow changing tracked metric in
StoppingCriterion. By Amélie Vernay and Thomas Moreau (#461).Add latest git tag via
benchmark-git-tagkey inbenchopt.utils.sys_info.get_sys_info(). By Mathurin Massias (#421).Deprecate
Objective.to_dictin favor ofget_objective(). By Mathurin Massias (#489).Deprecate
import_fromin favor of abenchmark_utilsmodule dynamically installed when running a benchmark. By Mathurin Massias and Thomas Moreau (#472).Allow specifying channels for conda requirements with syntax
chan:deps. By Thomas Moreau (#483).Allow for template
SolverandDatasetindatasets/solversdirectory. By Thomas Moreau (#473).
Version 1.2 - 06/05/2022#
Changelog#
New
benchopt infocommand to display information about solvers and datasets of a benchmark, by Ghislain Durif (#140).New
--profileoption to theruncommand in order to profile with the line-profiler package all functions decorated withbenchopt.utils.profile(), by Alexandre Gramfort (#186).Replace
SufficientDescentCriterionbySufficientProgressCriterion, which measures progress relative to the best attained value instead of the previous one, by Thomas Moreau (#176)Now all values returned by
Objective.computeare included in reports, by Thomas Moreau and Alexandre Gramfort (#200).New
--n-jobs, -joption to run the benchmark in parallel withjoblib, by Thomas Moreau (#265).
API#
When returning a dictionary,
Objective.computeshould at least includevaluekey instead ofobjective_value, by Thomas Moreau and Alexandre Gramfort (#200).stop_strategyattribute is replaced bystopping_strategyto harmonize withstopping_criterion, by Benoît Malézieux (#274).Add
import_frommethod insafe_import_contextto allow importing common files and packages without installation from BENCHMARK_DIR/utils, by Thomas Moreau (#286).Add
X_densityargument todatasets.make_correlated_datato simulate sparse design matrices, by Mathurin Massias (#289).Dataset.get_datashould now return a dictionary and not a tuple. A point for testing should be returned by a dedicated methodObjective.get_one_solution, by Thomas Moreau (#345).
CLI#
Replace
-pflag by-ofor Objective, by Mathurin Massias (#281).Add
--configoption to support passing argument with ayamlconfig file, by Mathurin Massias (#325).
Version 1.1 - 22-04-2021#
Changelog#
New plotting functions with different optimality criteria, by Nidham Gazagnadou (#96).
Support Plotly for plotting functions, by Thomas Moreau, Tanguy Lefort and Joseph Salmon (#110, #111, #112).
Change envrionment variable for config from
BENCHO_*toBENCHOPT_*, by Thomas Moreau (#128).Add autocompletion support in the
benchoptcommand, by Alexandre Gramfort, Tanguy Lefort and Thomas Moreau (#133, #135).Move most CI to GitHub action, with auto-release on PyPi, by Thomas Moreau (#150, #154).
Remove
BENCHOPT_ALLOW_INSTALLand always install to requested env as the user now must request explicitly the install, by Thomas Moreau (#155).
API#
Objective.computecan now return a dictionary with multiple outputs to monitor several metrics at once, by Thomas Moreau (#84).Solver.skipcan now be used to skip objectives that are incompatible for the Solver, by Thomas Moreau (#113).Solvercan now usestop_strategy='callback'to allow for single call curve construction, by Tanguy Lefort and Thomas Moreau (#137).Add
StoppingCriterionto reliably and flexibly assess a solver convergence (cvg). For now, onlySufficientDescentCriterionis implemented but better API to set criterion per benchmark should be implemented in a future release, by Thomas Moreau (#151)
CLI#
Add
--versionoption forbenchopt, by Thomas Moreau (#83).Add
--pdboption forbenchopt runto open debugger on error and help benchmark debugging, by Thomas Moreau (#86).Change default run to local mode. Can call a run in a dedicated env with option
--envor--env-name ENV_NAMEto specify the env, by Thomas Moreau (#94).Add
benchopt publishcommand to push benchmark results to GitHub, by Thomas Moreau (#110).Add
benchopt cleancommand to remove cached files and output files locally, by Thomas Moreau (#128).Add
benchopt configcommand to allow easy configuration ofbenchoptusing the CLI, by Thomas Moreau (#128).Add
benchopt installcommand to install benchmark requirements (not done inbenchopt runanymore) by Ghislain Durif (#135).Add
benchopt infocommand to print information about a benchmark (including solvers, datasets, dependencies, etc.) by Ghislain Durif (#140).
BUG#
Throw a warning when benchopt version in conda env does not match the one of calling
benchopt, by Thomas Moreau (#83).Fix Lapack issue with R code, by Tanguy Lefort (#97).
DOC#
Improve how-to narrative documentation, by Alexandre Gramfort (#93).
Add what’s new page, by Alexandre Gramfort (#114).
Add documentation on how to publish results, by Alexandre Gramfort (#118).
The committer list for this release is the following:
Version 1.0 - 2020-09-25#
Release highlights#
Provide a command line interface for benchmarking optimisation algorithm implementations:
benchopt runto run the benchmarksbenchopt plotto display the resultsbenchopt testto test that a benchmark folder is correctly structured.
The committer list for this release is the following: