Guillaume Tauzin
02/10/2025, 4:45 PMHall
02/10/2025, 4:45 PMJuan Luis
02/10/2025, 4:52 PMJuan Luis
02/10/2025, 4:52 PMGuillaume Tauzin
02/10/2025, 5:01 PMGuillaume Tauzin
02/10/2025, 5:02 PMHugo Evers
02/12/2025, 8:00 AMGuillaume Tauzin
02/12/2025, 8:55 AMGuillaume Tauzin
02/13/2025, 10:32 AM_overrides
. (BTW, they appear when you do kedro catalog list
).
I feel it looks much neater. Is there any drawback doing it that way?
Let me give you an example:
Blog post parameter file:
study_params:
study_name: test
load_if_exists: true
direction: maximize
n_trials_per_process: 10
price_predictor:
_overrides:
study_name: price_predictor_base
study_params: ${merge:${study_params},${._overrides}}
base:
study_params: ${..study_params}
candidate1:
_overrides:
study_name: price_predictor_candidate1
study_params: ${merge:${..study_params},${._overrides}}
candidate2:
_overrides:
study_name: price_predictor_candidate2
study_params: ${merge:${..study_params},${._overrides}}
candidate3:
_overrides:
study_name: price_predictor_candidate3
study_params: ${merge:${..study_params},${._overrides}}
reviews_predictor:
_overrides:
study_name: reviews_predictor_base
study_params: ${merge:${study_params},${._overrides}}
base:
study_params: ${..study_params}
test1:
_overrides:
study_name: reviews_predictor_test1
study_params: ${merge:${..study_params},${._overrides}}
Using the native YAML inheritance:
study_params: &base_study_params
study_name: test
load_if_exists: true
direction: maximize
n_trials_per_process: 10
price_predictor:
base:
study_params: &price_predictor_base_study_params
<<: *base_study_params
study_name: price_predictor_base
candidate1:
study_params:
<<: *price_predictor_base_study_params
study_name: price_predictor_candidate1
candidate2:
study_params:
<<: *price_predictor_base_study_params
study_name: price_predictor_candidate2
candidate3:
study_params:
<<: *price_predictor_base_study_params
study_name: price_predictor_candidate3
reviews_predictor:
base:
study_params: &reviews_predictor_base_study_params
<<: *base_study_params
study_name: reviews_predictor_base
candidate1:
study_params:
<<: *reviews_predictor_base_study_params
study_name: reviews_predictor_test1
Happy to hear your thoughts on this!Juan Luis
02/13/2025, 10:35 AMIt's actually very similar to what I have been doing so far except I use native YAML inheritance instead of the OmegaConfLoader merge resolver with the customI do prefer the YAML merge keys version actually 😄 @marrrcin any thoughts?._overrides
marrrcin
02/27/2025, 8:32 AMGuillaume Tauzin
02/27/2025, 8:59 AMmarrrcin
02/27/2025, 2:44 PMstudy_params: &base_study_params
study_name: test
load_if_exists: true
direction: maximize
n_trials_per_process: 10
and then
reviews_predictor:
base:
study_params: &reviews_predictor_base_study_params
<<: *base_study_params
study_name: reviews_predictor_base
Is study_name
correctly overwritten? If so, then it's super cool!Guillaume Tauzin
02/27/2025, 2:57 PMyaml.safe_load(open("./test.yml"))
Out[5]:
{'study_params': {'study_name': 'test',
'load_if_exists': True,
'direction': 'maximize',
'n_trials_per_process': 10},
'reviews_predictor': {'base': {'study_params': {'study_name': 'reviews_predictor_base',
'load_if_exists': True,
'direction': 'maximize',
'n_trials_per_process': 10}}}}
Guillaume Tauzin
02/27/2025, 4:12 PMtest.tml
study_params: &base_study_params
study_name: test
load_if_exists: true
direction: maximize
n_trials_per_process: 10
reviews_predictor:
base:
study_params:
<<: *base_study_params
study_name: reviews_predictor_base
Guillaume Tauzin
02/27/2025, 4:13 PM