V0.4.2 - Maintenance Release
Key things:
- Update to BoTorch 0.12.0 – which included some major updates to underlying modeling, please see BoTorch release for detailed description
- Fix for a sql storage bug related to an import trying to import a deleted file
Compatibility
- BoTorch 0.12.0 -- which included some major updates to underlying modeling, please see BoTorch release for detailed description
- pin numpy to < 2.0 until tensorboard cuts a release (#2641)
- Make SQLAlchemy==1.4.17 a required dependency (#2690)
New Features
- AnalysisCard refactor (#2589)
- New parallel coordinates plot (#2590)
- Add an optimal_value to mixed-integer problems (#2596)
- Add AutoTransitionAfterGenCriterion to storage (#2614)
- Storage support for RBFKernel & LogNormalPrior (#2616)
- Add storage support for SobolQMCNormalSampler (#2622)
- AuxiliaryExperiment (#2632)
- Add auxiliary_experiments to Experiment (#2634)
- Create Scheduler.generate_candidates() function (#2640)
- AnalysisCard load/save methods (#2645)
- Healthcheck analysis class (#2646)
- add auxiliary experiments to SQAExperiment (#2658)
- Add Scheduler.compute_analyses method (#2660)
- Change time limit for unit tests to 60 seconds and introduce a decorator for long running tests (#2661)
- Add utility methods to Analysis (#2663)
- Introduce ParamBasedTestProblem for benchmarking (#2675)
- Run ModelLauncher with a BenchmarkRunner and BenchmarkMetric (#2681)
- Add init_position argument to UniformGenerator (#2686)
- Run Torchvision problems with Benchmark[Problem/Runner/Metric]; consolidate PyTorchCNN problems (#2688)
- allow more candidate trials than max_trials in Scheduler (#2689)
- create utility for trying to load GS (#2694)
- Implement Data/MapData.clone and use it in Experiment.clone_with (#2703)
- Compute ground-truth optimization trace on BenchmarkProblem (#2704)
- Add evaluate_oracle method to BenchmarkRunner (#2705)
- Merge create_single_objective_problem_from_botorch and create_multi_objective_problem_from_botorch; support constrained MOO (#2722)
- Add an option to override ModelSpec.model_key (#2726)
- Update test_generation_strategy to utilize MBM models (#2734)
- Refactor computation of optimization trace (#2747)
- Update the remaining models to use new default covar & likelihood modules (#2742)
- Add qLogNParEGO to ACQUISITION_FUNCTION_REGISTRY (#2749)
- Transform batch to new sq (#2755)
Bug Fixes
- Disable long test timeouts when using a debugger (#2745)
- Require all problems to have an optimal_value; simplify Problem inheritance (#2601)
- Update the default SingleTaskGP prior (#2610)
- Remove reference_point from multi-objective benchmark problems (#2619)
- More precise type annotations for MultiObjectiveOptimizationConfig (#2620)
- Change blob type to str (#2624)
- Revert D60472381 (#2627)
- Check for Nans and Infs in TensorboardMetric (#2628)
- Add warning to SerializationMixin, to prevent usage that will result in circular deps (#2629)
- Use Standardize by default for SingleTaskGP (#2630)
- Modify get_data to error out on nan/inf (#2633)
- fix bug in UnitX when transforming new search space (#2639)
- Add _maybe_clear_multiplexer method to deal with memory leaks (#2642)
- Fix Surrogate.best_out_of_sample_point (#2652)
- Fix clear_multiplexer (#2656)
- Fix Pyre errors in sqa_classes (#2659)
- Relax type hints on compute() (#2662)
- Fix type error in validate_sphinx script (#2665)
- Make sure random seed persists beyond storage (#2671)
- Log an exception rather than erroring out when data is found for metrics that are not attached to the experiment (#2680)
- fix input args for target-aware model in TLMB (#2685)
- Stop calling float() on single element Series (#2691)
- Serialize data classes based on their fields only (#2697)
- [Website] Use mathjax svg renderer (#2707)
- Take out error about HSS not being supported with batch trials (#2709)
- Make sure is_ax_equal returns a boolean (#2714)
- Remove internal type shed for plotly (#2715)
- Bring back ax/benchmark/init.py (#2719)
- BUG FIX: Only construct surrogate once in SurrogateRunner (#2720)
- Mock out downloading data from internet in torchvision unit test (#2725)
- robustify PL test (#2729)
- Require unique model_key in GenerationNode, clean up model selection errors (#2730)
- Add longtest decorator to pairwise model tests (#2731)
- Ensure new arm names do not match a different name on the experiment (#2732)
- Ignore fixed parameters for search space dimensionality computation (#2765)
- In ‘best_point’ don’t require GeneratorRun to have best_arm_predictions to predict from model (#2767)
- Fix Scheduler test_run_trials_and_yield_results_with_early_stopper that was timing out the CI (#2770)
- Make Acquisition.optimize work with discrete optimizer regardless of whether raw_samples is in optimizer_options (#2772)
Other Changes
- Document setup_import_mocks (#2736)
- Rename maximum_hypervolume to optimal_value in MOO Benchmark Problems (#2598)
- Make all benchmark problems take an observe_noise_stds argument (#2600)
- Move lazy construction of a surrogate from problem to runner (#2603)
- Update BestModelSelector to return a ModelSpec rather than the index (#2609)
- Add STATUSES_EXPECTING_DATA to trials consts (#2621)
- Drop critertion from AutoTransitionAfterGenCriterion name (#2625)
- Expanded testing get_pbo_experiment testing stub (#2631)
- Use reduced state for axolotl (#2637)
- AnalysisCard encoder/decoder refactor (#2643)
- SQAAnalysisCard refactor (#2644)
- codemod pep585_imports (#2648)
- Add Sphinx doc to Healthcheck analysis (#2649)
- Pass botorch_model_class to Surrogate._set_formatted_inputs (#2653)
- Move model input constructor helper functions off of Surrogate, to standalone functions (#2655)
- Reapply pep585_imports codemod (#2657)
- Migrate Jenatton to use BenchmarkRunner and BenchmarkMetric (#2676)
- Move Jenatton test function to appropriate file (#2679)
- Create ax/analysis/plotly/parallel_coordinates/init.py (#2683)
- Simplify ax/analysis/plotly directory structure (#2684)
- Add storage tutorial to registry-related errors (#2687)
- Added documentation for ax.utils.common.deprecation module to address GitHub Actions Test Failure (#2700)
- Update import paths for base multi-objective acquisition functions (#2708)
- Consolidate BenchmarkMetric functionality in one file (#2710)
- Move benchmark/metrics/benchmark.py to benchmark_metric.py (#2712)
- Provide more informative warning messages in InputDataWarning (#2713)
- Move execute_with_timeout to core ax (#2717)
- Do not override metric name by default (#2718)
- Updating failure rate message and accounting (#2723)
- Evaluate oracle at target task and fidelity (#2727)
- Don't test with a test stub when there's a function that does the same thing (#2735)
- Update docstrings and t ype annotations (#2746)
- Drop duplicates when obtaining status quo mean and sem in relativize data (#2741)
- Type annotation: Scheduler.get_pareto_optimal_parameters never returns None (#2740)
- Silence input data warnings in tests (#2739)
- Move get_model_state_from_last_generator_run from GS to GNode (#2738)
- Make debugging easier by saying which constraint is bad (#2737)
- Update comment on validate sphinx to be more helpful (#2751)
- Load aux experiments with skip_runners_and_metrics=True (#2768)
- Always use default metric definitions (#2771)
Deprecations
- Move ax/analysis to ax/analysis/old (#2588)
- Remove (legacy) Models.BoTorch (#2597)
- Remove BenchmarkProblemWithKnownOptimum type annotation (#2602)
- Get rid of benchmark problem class constructors(#2605)
- Get rid of SingleObjectiveBenchmarkProblem (#2606)
- Remove special logic for BenchmarkProblems in JSON serialization (#2611)
- Delete ListSurrogate (#2612)
- Delete legacy get posterior mean (#2613)
- **Remove status quo weight override from COPY_DB_IDS_ATTRS_TO_SKIP **(#2615)
- Reap old parallel coordinates plot (#2617)
- Remove unused imports from tensorboard test (#2626)
- Update early stopping tutorial to use TensorboardMetric instead of TensorboardCurveMetric (#2635)
- Remove unused imports from scheduler_test_utils.py (#2654)
- Remove validate_kwarg_typing and typeguard dependence (#2673)
- Remove functionality for BenchmarkRunner without ground truth (#2674)
- Remove unused ModelBridge._extend_training_data (#2678)
- Reap DictLookupMetric (#2682)
- Deprecate no_bayesian_optimization argument in favor of force_random_search (#2693)
- Remove tracking metrics setup for noisy benchmarks (#2706)
- Get rid of MultiObjectiveBenchmarkProblem (#2721)
- remove unused metrics (#2728)
- Replace Models.GPEI usage with Models.BoTorchModular (#2733)
- Remove legacy MES model (#2756)
- Delete some unneeded tests (#2766)
- Account for BoTorch removal of deprecated models (#2769)