-
-
Notifications
You must be signed in to change notification settings - Fork 606
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鈥檒l occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Bug] Multirun does not work with differing parameter sets groups #1052
Comments
Thanks for the report, this is more of a design issue than a bug. Example (here timeout originally exists only in postgresql). $ python my_app.py -m '+db={timeout:10}' db=mysql,postgresql
[2020-10-11 13:00:47,752][HYDRA] Launching 2 jobs locally
[2020-10-11 13:00:47,752][HYDRA] #0 : +db={timeout:10} db=mysql
db:
driver: mysql
user: omry
pass: secret
timeout: 10
[2020-10-11 13:00:47,860][HYDRA] #1 : +db={timeout:10} db=postgresql
db:
driver: postgresql
user: postgre_user
pass: drowssap
timeout: 10 I will keep this open to consider changing the behavior of + (or extending it) for 1.1, |
that makes sense, thanks! |
Great! |
#1440 add support for force-adding a config variable ( |
hi @goens, did you find a way to only produce 3 configurations ? |
You can define 3 experiment configs and sweep over them. |
馃悰 Bug
Description
When running multirun with two configurations, it's impossible to change a variable that is not in one of the configurations, even if it is in the other one. You might not classify this as a bug, but I believe it is, since it renders it impossible to use multirun in such a case. Perhaps it makes more sense looking at the example below.
Checklist
To reproduce
** Minimal Code/Config snippet to reproduce **
Imagine you have two database systems (like in the documentation), I'll call them, very creatively,
one
andtwo
.You could have a basic setup as follows:
This is the content of the files in such a minimal config:
main.py:
config.yaml:
db/one.yaml:
db/two.yaml:
Say you have a shared feature,
shared_feature
, and you want to run your program with both databases by iterating that shared feature. You can run something like:This works perfectly fine. Now assume I want to run one of the two databases,
two
, with a fancy exclusive feature which the other one does not have. I have two options:which could potentially add it two the first one (and hopefully not break anything, just unnecessarily run it twice with it). Or the other option:
Where it would just change it for
two
and ideally make three runs, one withdb=one
and two withdb=two
anddb.fancy_exclusive_feature=true
andfalse
.However, neither option works. Here are the corresponding error messages:
** Stack trace/error message **
and in the other case:
Obviously Hydra checks that the added option
db.fancy_exclusive_feature
works with every case ofdb
in the full "product" of configuration schemes, so in both ways one case breaks and multirun breaks.Expected Behavior
Ideally, if this item exists in one option and not in the rest, hydra would just add the options conditionally to where it makes sense, producing three configurations when running:
It is also thinkable that the other option, when adding the feature additionally, would produce four configurations:
System information
The text was updated successfully, but these errors were encountered: