import yaml
|
import argparse
|
|
def update_dct(fin_configs, root):
|
if root == {}:
|
return {}
|
for root_key, root_value in root.items():
|
if not isinstance(root[root_key],dict):
|
fin_configs[root_key] = root[root_key]
|
else:
|
result = update_dct(fin_configs[root_key], root[root_key])
|
fin_configs[root_key] = result
|
return fin_configs
|
|
if __name__ == '__main__':
|
parser = argparse.ArgumentParser(
|
description="update configs",
|
formatter_class=argparse.ArgumentDefaultsHelpFormatter,
|
)
|
parser.add_argument("--modelscope_config",
|
type=str,
|
help="modelscope config file")
|
parser.add_argument("--finetune_config",
|
type=str,
|
help="finetune config file")
|
parser.add_argument("--output_config",
|
type=str,
|
help="output config file")
|
args = parser.parse_args()
|
|
with open(args.modelscope_config) as f:
|
modelscope_configs = yaml.safe_load(f)
|
|
with open(args.finetune_config) as f:
|
finetune_configs = yaml.safe_load(f)
|
|
# update configs, e.g., lr, batch_size, ...
|
modelscope_configs = update_dct(modelscope_configs, finetune_configs)
|
|
with open(args.output_config, "w") as f:
|
yaml.dump(modelscope_configs, f, indent=4)
|