From 39c3c0a72af6fbda5614dde02ff236069bb79827 Mon Sep 17 00:00:00 2001 From: Zhenwei <964730078@qq.com> Date: Wed, 24 Jan 2024 01:48:38 +0800 Subject: [PATCH] fix a hidden bug of `GenerationConfig`, now the `generation_config.json` can be loaded successfully (#28604) * fix a hidden bug of GenerationConfig * keep `sort_keys=True` to maintain visibility * Update src/transformers/generation/configuration_utils.py Co-authored-by: amyeroberts <22614925+amyeroberts@users.noreply.github.com> * Update configuration_utils.py in case `obj` is a list, check the items in the list --------- Co-authored-by: amyeroberts <22614925+amyeroberts@users.noreply.github.com> --- src/transformers/generation/configuration_utils.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/transformers/generation/configuration_utils.py b/src/transformers/generation/configuration_utils.py index abc118aa8c..17b8875a40 100644 --- a/src/transformers/generation/configuration_utils.py +++ b/src/transformers/generation/configuration_utils.py @@ -909,6 +909,16 @@ class GenerationConfig(PushToHubMixin): for metadata_field in METADATA_FIELDS: config_dict.pop(metadata_field, None) + def convert_keys_to_string(obj): + if isinstance(obj, dict): + return {str(key): convert_keys_to_string(value) for key, value in obj.items()} + elif isinstance(obj, list): + return [convert_keys_to_string(item) for item in obj] + else: + return obj + + config_dict = convert_keys_to_string(config_dict) + return json.dumps(config_dict, indent=2, sort_keys=True) + "\n" def to_json_file(self, json_file_path: Union[str, os.PathLike], use_diff: bool = True):