-
-
Notifications
You must be signed in to change notification settings - Fork 223
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Do not get stuck due to adaptive capping #749
Conversation
If the incumbent has all the instance-seed pairs covered and the challenger is ruled out due to adaptive capping, we cancel all the runs on the current challenger to proceed to the next challenger.
Thanks for your contribution! We'll look into this shortly. |
Hi, this looks good and the change makes sense in principle. However, I still don't fully see why the bug happens. @franchuterivera do you have any comment on this? I think this bug was introduced because of the new IntensifierStage, which I'm not super familiar with. |
I ran @filipbartek code on both the old and the new code and got the same results. However, we should investigate why this problem happens in the first place. Since more time is required to find the bugs, we can't solve it by the upcoming release. |
Discard a challenger that is ruled out due to adaptive capping immediately. Do not wait for the incumbent to be saturated. Once a challenger is ruled out due to adaptive capping, it would always fail the adaptive cap test in the future.
@franchuterivera @mfeurer could you please comment on this? |
@filipbartek please redirect your PR to |
# We prevent this challenger from running again so that a new challenger is targeted in the next iteration. | ||
# Otherwise, the current challenger would be ruled out by adaptive capping again. | ||
self.continue_challenger = False | ||
self.to_run = [] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Simply setting self.to_run = []
should suffice,
'self.continue_challenger' will be modified anyway under Intensification._process_racer_results
(line 422)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Having tested this on an example that I attached to issue #748, I agree that setting self.to_run
suffices.
I have simplified the PR accordingly.
So if I understand this correctly, the function Why the stage change wasn't sufficient is something I currently don't understand myself either :( |
adding an argument to
Intensifier will skip the 4th line of |
Simplify the fix to issue automl#748. Follows a suggestion by @dengdifan: https://github.com/automl/SMAC3/pull/749/files#r691892051
Codecov Report
@@ Coverage Diff @@
## development #749 +/- ##
===============================================
- Coverage 87.02% 87.01% -0.02%
===============================================
Files 68 68
Lines 6221 6222 +1
===============================================
Hits 5414 5414
- Misses 807 808 +1
Continue to review full report at Codecov.
|
Follow a suggestion by @dengdifan: automl#749 (comment)
* Documentation was updated thoroughly. A new theme with a new structure is provided and all pages have been updated. Also, the examples revised and up-to-date. * Option to use an own stopping strategy using `IncorporateRunResultCallback`. * Changed `scripts/smac` to `scripts/smac.py`. * `README.md` updated. * `CITATION.cff` added. * Made `smac-validate.py` consistent with runhistory and tae. (#762) * `minR`, `maxR` and `use_ta_time` can now be initialized by the scenario. (#775) * `ConfigSpace.util.get_one_exchange_neighborhood`'s invalid configurations are ignored. (#773) * Fixed an incorrect adaptive capping behaviour. (#749) * Avoid the potential `ValueError` raised by `LocalSearch._do_search`. (#773) Co-authored-by: dengdifan <33290713+dengdifan@users.noreply.github.com> Co-authored-by: Filip Bártek <Filip.Bartek@hotmail.com> Co-authored-by: Thomas Holvoet <tholvoet@telenet.be> Co-authored-by: benjamc <75323339+benjamc@users.noreply.github.com> Co-authored-by: Carolin Benjamins <benjamins@tnt.uni-hannover.de> Co-authored-by: Marius Lindauer <marius.rks@googlemail.com> Co-authored-by: eddiebergman <eddiebergmanhs@gmail.com> Co-authored-by: Difan Deng <deng@dengster.tnt.uni-hannover.de> Co-authored-by: dengdifan <difandeng@gmail.com> Co-authored-by: Tim Ruhkopf <timruhkopf@gmail.com>
If the incumbent has all the instance-seed pairs covered
and the challenger is ruled out due to adaptive capping,
we cancel all the runs on the current challenger
to proceed to the next challenger.
This is a possibly dirty quick fix.
I am not well acquainted with the code.
I welcome suggestions for improvements of the fix.
Resolves #748