diff --git a/src/transformers/configuration_utils.py b/src/transformers/configuration_utils.py index 3f177ba19fd9..00f9b5610e6b 100755 --- a/src/transformers/configuration_utils.py +++ b/src/transformers/configuration_utils.py @@ -762,6 +762,10 @@ def from_dict(cls, config_dict: Dict[str, Any], **kwargs) -> "PretrainedConfig": to_remove = [] for key, value in kwargs.items(): if hasattr(config, key): + current_attr = getattr(config, key) + # To authorize passing a custom subconfig as kwarg in models that have nested configs. + if isinstance(current_attr, PretrainedConfig) and isinstance(value, dict): + value = current_attr.__class__(**value) setattr(config, key, value) if key != "torch_dtype": to_remove.append(key) @@ -823,6 +827,18 @@ def to_diff_dict(self) -> Dict[str, Any]: # only serialize values that differ from the default config for key, value in config_dict.items(): if ( + isinstance(getattr(self, key, None), PretrainedConfig) + and key in class_config_dict + and isinstance(class_config_dict[key], dict) + ): + # For nested configs we need to clean the diff recursively + diff = recursive_diff_dict(value, class_config_dict[key], config_obj=getattr(self, key, None)) + if "model_type" in value: + # Needs to be set even if it's not in the diff + diff["model_type"] = value["model_type"] + if len(diff) > 0: + serializable_config_dict[key] = diff + elif ( key not in default_config_dict or key == "transformers_version" or value != default_config_dict[key] @@ -859,6 +875,14 @@ def to_dict(self) -> Dict[str, Any]: # Transformers version when serializing the model output["transformers_version"] = __version__ + for key, value in output.items(): + # Deal with nested configs like CLIP + if isinstance(value, PretrainedConfig): + value = value.to_dict() + del value["transformers_version"] + + output[key] = value + if hasattr(self, "quantization_config"): output["quantization_config"] = ( self.quantization_config.to_dict() @@ -1020,6 +1044,24 @@ def get_configuration_file(configuration_files: List[str]) -> str: return configuration_file +def recursive_diff_dict(dict_a, dict_b, config_obj=None): + """ + Helper function to recursively take the diff between two nested dictionaries. The resulting diff only contains the + values from `dict_a` that are different from values in `dict_b`. + """ + diff = {} + default = config_obj.__class__().to_dict() if config_obj is not None else {} + for key, value in dict_a.items(): + obj_value = getattr(config_obj, str(key), None) + if isinstance(obj_value, PretrainedConfig) and key in dict_b and isinstance(dict_b[key], dict): + diff_value = recursive_diff_dict(value, dict_b[key], config_obj=obj_value) + if len(diff_value) > 0: + diff[key] = diff_value + elif key not in dict_b or value != dict_b[key] or key not in default or value != default[key]: + diff[key] = value + return diff + + PretrainedConfig.push_to_hub = copy_func(PretrainedConfig.push_to_hub) if PretrainedConfig.push_to_hub.__doc__ is not None: PretrainedConfig.push_to_hub.__doc__ = PretrainedConfig.push_to_hub.__doc__.format( diff --git a/src/transformers/models/align/configuration_align.py b/src/transformers/models/align/configuration_align.py index 787ed4b69720..818a4f7c4a2f 100644 --- a/src/transformers/models/align/configuration_align.py +++ b/src/transformers/models/align/configuration_align.py @@ -14,7 +14,6 @@ # limitations under the License. """ ALIGN model configuration""" -import copy import os from typing import TYPE_CHECKING, List, Union @@ -344,7 +343,6 @@ class AlignConfig(PretrainedConfig): ```""" model_type = "align" - is_composition = True def __init__( self, @@ -383,16 +381,3 @@ def from_text_vision_configs(cls, text_config: AlignTextConfig, vision_config: A """ return cls(text_config=text_config.to_dict(), vision_config=vision_config.to_dict(), **kwargs) - - def to_dict(self): - """ - Serializes this instance to a Python dictionary. Override the default [`~PretrainedConfig.to_dict`]. - - Returns: - `Dict[str, any]`: Dictionary of all the attributes that make up this configuration instance, - """ - output = copy.deepcopy(self.__dict__) - output["text_config"] = self.text_config.to_dict() - output["vision_config"] = self.vision_config.to_dict() - output["model_type"] = self.__class__.model_type - return output diff --git a/src/transformers/models/altclip/configuration_altclip.py b/src/transformers/models/altclip/configuration_altclip.py index ddf22a8a526f..c944345e8663 100755 --- a/src/transformers/models/altclip/configuration_altclip.py +++ b/src/transformers/models/altclip/configuration_altclip.py @@ -13,7 +13,6 @@ # See the License for the specific language governing permissions and # limitations under the License. """ AltCLIP model configuration""" -import copy import os from typing import Union @@ -291,7 +290,6 @@ class AltCLIPConfig(PretrainedConfig): ```""" model_type = "altclip" - is_composition = True def __init__( self, text_config=None, vision_config=None, projection_dim=768, logit_scale_init_value=2.6592, **kwargs @@ -392,16 +390,3 @@ def from_text_vision_configs(cls, text_config: AltCLIPTextConfig, vision_config: """ return cls(text_config=text_config.to_dict(), vision_config=vision_config.to_dict(), **kwargs) - - def to_dict(self): - """ - Serializes this instance to a Python dictionary. Override the default [`~PretrainedConfig.to_dict`]. - - Returns: - `Dict[str, any]`: Dictionary of all the attributes that make up this configuration instance, - """ - output = copy.deepcopy(self.__dict__) - output["text_config"] = self.text_config.to_dict() - output["vision_config"] = self.vision_config.to_dict() - output["model_type"] = self.__class__.model_type - return output diff --git a/src/transformers/models/bark/configuration_bark.py b/src/transformers/models/bark/configuration_bark.py index 4d7c3bc94d84..635cb0aa1a94 100644 --- a/src/transformers/models/bark/configuration_bark.py +++ b/src/transformers/models/bark/configuration_bark.py @@ -14,7 +14,6 @@ # limitations under the License. """ BARK model configuration""" -import copy import os from typing import Dict, Optional, Union @@ -271,7 +270,6 @@ class BarkConfig(PretrainedConfig): """ model_type = "bark" - is_composition = True def __init__( self, @@ -329,20 +327,3 @@ def from_sub_model_configs( codec_config=codec_config.to_dict(), **kwargs, ) - - def to_dict(self): - """ - Serializes this instance to a Python dictionary. Override the default [`~PretrainedConfig.to_dict`]. - - Returns: - `Dict[str, any]`: Dictionary of all the attributes that make up this configuration instance, - """ - output = copy.deepcopy(self.__dict__) - - output["semantic_config"] = self.semantic_config.to_dict() - output["coarse_acoustics_config"] = self.coarse_acoustics_config.to_dict() - output["fine_acoustics_config"] = self.fine_acoustics_config.to_dict() - output["codec_config"] = self.codec_config.to_dict() - - output["model_type"] = self.__class__.model_type - return output diff --git a/src/transformers/models/blip/configuration_blip.py b/src/transformers/models/blip/configuration_blip.py index a1e2ff37ef4a..a0f2e397b22b 100644 --- a/src/transformers/models/blip/configuration_blip.py +++ b/src/transformers/models/blip/configuration_blip.py @@ -14,7 +14,6 @@ # limitations under the License. """ Blip model configuration""" -import copy import os from typing import Union @@ -325,7 +324,6 @@ class BlipConfig(PretrainedConfig): ```""" model_type = "blip" - is_composition = True def __init__( self, @@ -368,16 +366,3 @@ def from_text_vision_configs(cls, text_config: BlipTextConfig, vision_config: Bl """ return cls(text_config=text_config.to_dict(), vision_config=vision_config.to_dict(), **kwargs) - - def to_dict(self): - """ - Serializes this instance to a Python dictionary. Override the default [`~PretrainedConfig.to_dict`]. - - Returns: - `Dict[str, any]`: Dictionary of all the attributes that make up this configuration instance, - """ - output = copy.deepcopy(self.__dict__) - output["text_config"] = self.text_config.to_dict() - output["vision_config"] = self.vision_config.to_dict() - output["model_type"] = self.__class__.model_type - return output diff --git a/src/transformers/models/blip_2/configuration_blip_2.py b/src/transformers/models/blip_2/configuration_blip_2.py index 650ce264ac99..1f09044cc71c 100644 --- a/src/transformers/models/blip_2/configuration_blip_2.py +++ b/src/transformers/models/blip_2/configuration_blip_2.py @@ -14,7 +14,6 @@ # limitations under the License. """ BLIP-2 model configuration""" -import copy import os from typing import Union @@ -302,7 +301,6 @@ class Blip2Config(PretrainedConfig): ```""" model_type = "blip-2" - is_composition = True def __init__(self, vision_config=None, qformer_config=None, text_config=None, num_query_tokens=32, **kwargs): super().__init__(**kwargs) @@ -355,17 +353,3 @@ def from_vision_qformer_text_configs( text_config=text_config.to_dict(), **kwargs, ) - - def to_dict(self): - """ - Serializes this instance to a Python dictionary. Override the default [`~PretrainedConfig.to_dict`]. - - Returns: - `Dict[str, any]`: Dictionary of all the attributes that make up this configuration instance, - """ - output = copy.deepcopy(self.__dict__) - output["vision_config"] = self.vision_config.to_dict() - output["qformer_config"] = self.qformer_config.to_dict() - output["text_config"] = self.text_config.to_dict() - output["model_type"] = self.__class__.model_type - return output diff --git a/src/transformers/models/bridgetower/configuration_bridgetower.py b/src/transformers/models/bridgetower/configuration_bridgetower.py index 17c9cadaf838..30b6bf28795a 100644 --- a/src/transformers/models/bridgetower/configuration_bridgetower.py +++ b/src/transformers/models/bridgetower/configuration_bridgetower.py @@ -14,7 +14,6 @@ # limitations under the License. """ BridgeTower model configuration""" -import copy import os from typing import Union @@ -349,16 +348,3 @@ def from_text_vision_configs( """ return cls(text_config=text_config.to_dict(), vision_config=vision_config.to_dict(), **kwargs) - - def to_dict(self): - """ - Serializes this instance to a Python dictionary. Override the default [`~PretrainedConfig.to_dict`]. - - Returns: - `Dict[str, any]`: Dictionary of all the attributes that make up this configuration instance, - """ - output = copy.deepcopy(self.__dict__) - output["text_config"] = self.text_config.to_dict() - output["vision_config"] = self.vision_config.to_dict() - output["model_type"] = self.__class__.model_type - return output diff --git a/src/transformers/models/chinese_clip/configuration_chinese_clip.py b/src/transformers/models/chinese_clip/configuration_chinese_clip.py index 941b76969644..cbbf429e1bd5 100644 --- a/src/transformers/models/chinese_clip/configuration_chinese_clip.py +++ b/src/transformers/models/chinese_clip/configuration_chinese_clip.py @@ -14,7 +14,6 @@ # limitations under the License. """ Chinese-CLIP model configuration""" -import copy import os from collections import OrderedDict from typing import TYPE_CHECKING, Any, Mapping, Optional, Union @@ -314,7 +313,6 @@ class ChineseCLIPConfig(PretrainedConfig): ```""" model_type = "chinese_clip" - is_composition = True def __init__( self, text_config=None, vision_config=None, projection_dim=512, logit_scale_init_value=2.6592, **kwargs @@ -417,19 +415,6 @@ def from_text_vision_configs( return cls(text_config=text_config.to_dict(), vision_config=vision_config.to_dict(), **kwargs) - def to_dict(self): - """ - Serializes this instance to a Python dictionary. Override the default [`~PretrainedConfig.to_dict`]. - - Returns: - `Dict[str, any]`: Dictionary of all the attributes that make up this configuration instance, - """ - output = copy.deepcopy(self.__dict__) - output["text_config"] = self.text_config.to_dict() - output["vision_config"] = self.vision_config.to_dict() - output["model_type"] = self.__class__.model_type - return output - class ChineseCLIPOnnxConfig(OnnxConfig): @property diff --git a/src/transformers/models/clap/configuration_clap.py b/src/transformers/models/clap/configuration_clap.py index 32d06813777e..7a198b40160f 100644 --- a/src/transformers/models/clap/configuration_clap.py +++ b/src/transformers/models/clap/configuration_clap.py @@ -14,7 +14,6 @@ # limitations under the License. """ CLAP model configuration""" -import copy import os from typing import Union @@ -382,7 +381,6 @@ class ClapConfig(PretrainedConfig): ```""" model_type = "clap" - is_composition = True def __init__( self, @@ -431,16 +429,3 @@ def from_text_audio_configs(cls, text_config: ClapTextConfig, audio_config: Clap """ return cls(text_config=text_config.to_dict(), audio_config=audio_config.to_dict(), **kwargs) - - def to_dict(self): - """ - Serializes this instance to a Python dictionary. Override the default [`~PretrainedConfig.to_dict`]. - - Returns: - `Dict[str, any]`: Dictionary of all the attributes that make up this configuration instance, - """ - output = copy.deepcopy(self.__dict__) - output["text_config"] = self.text_config.to_dict() - output["audio_config"] = self.audio_config.to_dict() - output["model_type"] = self.__class__.model_type - return output diff --git a/src/transformers/models/clip/configuration_clip.py b/src/transformers/models/clip/configuration_clip.py index 01fc5a3ea178..7462ee065b65 100644 --- a/src/transformers/models/clip/configuration_clip.py +++ b/src/transformers/models/clip/configuration_clip.py @@ -14,7 +14,6 @@ # limitations under the License. """ CLIP model configuration""" -import copy import os from collections import OrderedDict from typing import TYPE_CHECKING, Any, Mapping, Optional, Union @@ -298,7 +297,6 @@ class CLIPConfig(PretrainedConfig): ```""" model_type = "clip" - is_composition = True def __init__( self, text_config=None, vision_config=None, projection_dim=512, logit_scale_init_value=2.6592, **kwargs @@ -400,19 +398,6 @@ def from_text_vision_configs(cls, text_config: CLIPTextConfig, vision_config: CL return cls(text_config=text_config.to_dict(), vision_config=vision_config.to_dict(), **kwargs) - def to_dict(self): - """ - Serializes this instance to a Python dictionary. Override the default [`~PretrainedConfig.to_dict`]. - - Returns: - `Dict[str, any]`: Dictionary of all the attributes that make up this configuration instance, - """ - output = copy.deepcopy(self.__dict__) - output["text_config"] = self.text_config.to_dict() - output["vision_config"] = self.vision_config.to_dict() - output["model_type"] = self.__class__.model_type - return output - class CLIPOnnxConfig(OnnxConfig): @property diff --git a/src/transformers/models/clipseg/configuration_clipseg.py b/src/transformers/models/clipseg/configuration_clipseg.py index 6d4147f82065..e53229840b66 100644 --- a/src/transformers/models/clipseg/configuration_clipseg.py +++ b/src/transformers/models/clipseg/configuration_clipseg.py @@ -14,7 +14,6 @@ # limitations under the License. """ CLIPSeg model configuration""" -import copy import os from typing import Union @@ -302,7 +301,6 @@ class CLIPSegConfig(PretrainedConfig): ```""" model_type = "clipseg" - is_composition = True def __init__( self, @@ -424,16 +422,3 @@ def from_text_vision_configs(cls, text_config: CLIPSegTextConfig, vision_config: """ return cls(text_config=text_config.to_dict(), vision_config=vision_config.to_dict(), **kwargs) - - def to_dict(self): - """ - Serializes this instance to a Python dictionary. Override the default [`~PretrainedConfig.to_dict`]. - - Returns: - `Dict[str, any]`: Dictionary of all the attributes that make up this configuration instance, - """ - output = copy.deepcopy(self.__dict__) - output["text_config"] = self.text_config.to_dict() - output["vision_config"] = self.vision_config.to_dict() - output["model_type"] = self.__class__.model_type - return output diff --git a/src/transformers/models/conditional_detr/configuration_conditional_detr.py b/src/transformers/models/conditional_detr/configuration_conditional_detr.py index 9ce6179a19b1..356e5c0a574b 100644 --- a/src/transformers/models/conditional_detr/configuration_conditional_detr.py +++ b/src/transformers/models/conditional_detr/configuration_conditional_detr.py @@ -13,7 +13,6 @@ # See the License for the specific language governing permissions and # limitations under the License. """ Conditional DETR model configuration""" -import copy from collections import OrderedDict from typing import Mapping @@ -238,19 +237,6 @@ def num_attention_heads(self) -> int: def hidden_size(self) -> int: return self.d_model - def to_dict(self): - """ - Serializes this instance to a Python dictionary. Override the default [`~PretrainedConfig.to_dict`]. - - Returns: - `Dict[str, any]`: Dictionary of all the attributes that make up this configuration instance, - """ - output = copy.deepcopy(self.__dict__) - if self.backbone_config is not None: - output["backbone_config"] = self.backbone_config.to_dict() - output["model_type"] = self.__class__.model_type - return output - class ConditionalDetrOnnxConfig(OnnxConfig): torch_onnx_minimum_version = version.parse("1.11") diff --git a/src/transformers/models/deformable_detr/configuration_deformable_detr.py b/src/transformers/models/deformable_detr/configuration_deformable_detr.py index be4634477d14..dbe5fd7f0a78 100644 --- a/src/transformers/models/deformable_detr/configuration_deformable_detr.py +++ b/src/transformers/models/deformable_detr/configuration_deformable_detr.py @@ -13,7 +13,6 @@ # See the License for the specific language governing permissions and # limitations under the License. """ Deformable DETR model configuration""" -import copy from ...configuration_utils import PretrainedConfig from ...utils import logging @@ -261,16 +260,3 @@ def num_attention_heads(self) -> int: @property def hidden_size(self) -> int: return self.d_model - - def to_dict(self): - """ - Serializes this instance to a Python dictionary. Override the default [`~PretrainedConfig.to_dict`]. - - Returns: - `Dict[str, any]`: Dictionary of all the attributes that make up this configuration instance, - """ - output = copy.deepcopy(self.__dict__) - if self.backbone_config is not None: - output["backbone_config"] = self.backbone_config.to_dict() - output["model_type"] = self.__class__.model_type - return output diff --git a/src/transformers/models/deta/configuration_deta.py b/src/transformers/models/deta/configuration_deta.py index dc85ea91df36..8abe077ae126 100644 --- a/src/transformers/models/deta/configuration_deta.py +++ b/src/transformers/models/deta/configuration_deta.py @@ -14,7 +14,6 @@ # limitations under the License. """ DETA model configuration""" -import copy from ...configuration_utils import PretrainedConfig from ...utils import logging @@ -230,13 +229,3 @@ def num_attention_heads(self) -> int: @property def hidden_size(self) -> int: return self.d_model - - def to_dict(self): - """ - Serializes this instance to a Python dictionary. Override the default [`~PretrainedConfig.to_dict`]. Returns: - `Dict[str, any]`: Dictionary of all the attributes that make up this configuration instance, - """ - output = copy.deepcopy(self.__dict__) - output["backbone_config"] = self.backbone_config.to_dict() - output["model_type"] = self.__class__.model_type - return output diff --git a/src/transformers/models/detr/configuration_detr.py b/src/transformers/models/detr/configuration_detr.py index 955b71de1ec5..3b6ac3624f10 100644 --- a/src/transformers/models/detr/configuration_detr.py +++ b/src/transformers/models/detr/configuration_detr.py @@ -14,9 +14,8 @@ # limitations under the License. """ DETR model configuration""" -import copy from collections import OrderedDict -from typing import Dict, Mapping +from typing import Mapping from packaging import version @@ -248,17 +247,6 @@ def from_backbone_config(cls, backbone_config: PretrainedConfig, **kwargs): """ return cls(backbone_config=backbone_config, **kwargs) - def to_dict(self) -> Dict[str, any]: - """ - Serializes this instance to a Python dictionary. Override the default [`~PretrainedConfig.to_dict`]. Returns: - `Dict[str, any]`: Dictionary of all the attributes that make up this configuration instance, - """ - output = copy.deepcopy(self.__dict__) - if output["backbone_config"] is not None: - output["backbone_config"] = self.backbone_config.to_dict() - output["model_type"] = self.__class__.model_type - return output - class DetrOnnxConfig(OnnxConfig): torch_onnx_minimum_version = version.parse("1.11") diff --git a/src/transformers/models/encoder_decoder/configuration_encoder_decoder.py b/src/transformers/models/encoder_decoder/configuration_encoder_decoder.py index 1fca8a10f78d..f7eda78e5c05 100644 --- a/src/transformers/models/encoder_decoder/configuration_encoder_decoder.py +++ b/src/transformers/models/encoder_decoder/configuration_encoder_decoder.py @@ -14,7 +14,6 @@ # See the License for the specific language governing permissions and # limitations under the License. -import copy from ...configuration_utils import PretrainedConfig from ...utils import logging @@ -104,16 +103,3 @@ def from_encoder_decoder_configs( decoder_config.add_cross_attention = True return cls(encoder=encoder_config.to_dict(), decoder=decoder_config.to_dict(), **kwargs) - - def to_dict(self): - """ - Serializes this instance to a Python dictionary. Override the default *to_dict()* from *PretrainedConfig*. - - Returns: - `Dict[str, any]`: Dictionary of all the attributes that make up this configuration instance, - """ - output = copy.deepcopy(self.__dict__) - output["encoder"] = self.encoder.to_dict() - output["decoder"] = self.decoder.to_dict() - output["model_type"] = self.__class__.model_type - return output diff --git a/src/transformers/models/flava/configuration_flava.py b/src/transformers/models/flava/configuration_flava.py index 8e899ad0f6f6..2dd00618c5a2 100644 --- a/src/transformers/models/flava/configuration_flava.py +++ b/src/transformers/models/flava/configuration_flava.py @@ -14,7 +14,6 @@ # limitations under the License. """ FLAVA model configurations""" -import copy import os from typing import Any, Dict, Union @@ -536,7 +535,6 @@ class FlavaConfig(PretrainedConfig): """ model_type = "flava" - is_composition = True def __init__( self, @@ -764,18 +762,3 @@ def from_configs( image_codebook_config=image_codebook_config.to_dict(), **kwargs, ) - - def to_dict(self): - """ - Serializes this instance to a Python dictionary. Override the default [`~PretrainedConfig.to_dict`]. - - Returns: - `Dict[str, any]`: Dictionary of all the attributes that make up this configuration instance, - """ - output = copy.deepcopy(self.__dict__) - output["image_config"] = self.image_config.to_dict() - output["text_config"] = self.text_config.to_dict() - output["multimodal_config"] = self.multimodal_config.to_dict() - output["image_codebook_config"] = self.image_codebook_config.to_dict() - output["model_type"] = self.__class__.model_type - return output diff --git a/src/transformers/models/fsmt/configuration_fsmt.py b/src/transformers/models/fsmt/configuration_fsmt.py index decfb1b90f9c..afd97f137dc3 100644 --- a/src/transformers/models/fsmt/configuration_fsmt.py +++ b/src/transformers/models/fsmt/configuration_fsmt.py @@ -15,8 +15,6 @@ """ FSMT configuration""" -import copy - from ...configuration_utils import PretrainedConfig from ...utils import logging @@ -216,15 +214,3 @@ def __init__( early_stopping=early_stopping, **common_kwargs, ) - - def to_dict(self): - """ - Serializes this instance to a Python dictionary. Override the default *to_dict()* from *PretrainedConfig*. - - Returns: - `Dict[str, any]`: Dictionary of all the attributes that make up this configuration instance, - """ - output = copy.deepcopy(self.__dict__) - output["decoder"] = self.decoder.to_dict() - output["model_type"] = self.__class__.model_type - return output diff --git a/src/transformers/models/git/configuration_git.py b/src/transformers/models/git/configuration_git.py index 8e1a7cf2e362..41f54612afdb 100644 --- a/src/transformers/models/git/configuration_git.py +++ b/src/transformers/models/git/configuration_git.py @@ -13,7 +13,6 @@ # See the License for the specific language governing permissions and # limitations under the License. -import copy import os from typing import Union @@ -239,13 +238,3 @@ def __init__( self.bos_token_id = bos_token_id self.eos_token_id = eos_token_id - - def to_dict(self): - """ - Serializes this instance to a Python dictionary. Override the default [`~PretrainedConfig.to_dict`]. Returns: - `Dict[str, any]`: Dictionary of all the attributes that make up this configuration instance, - """ - output = copy.deepcopy(self.__dict__) - output["vision_config"] = self.vision_config.to_dict() - output["model_type"] = self.__class__.model_type - return output diff --git a/src/transformers/models/groupvit/configuration_groupvit.py b/src/transformers/models/groupvit/configuration_groupvit.py index 4d10a2dbb501..8acf0d1c4e3b 100644 --- a/src/transformers/models/groupvit/configuration_groupvit.py +++ b/src/transformers/models/groupvit/configuration_groupvit.py @@ -14,7 +14,6 @@ # limitations under the License. """ GroupViT model configuration""" -import copy import os from collections import OrderedDict from typing import TYPE_CHECKING, Any, Mapping, Optional, Union @@ -296,7 +295,6 @@ class GroupViTConfig(PretrainedConfig): """ model_type = "groupvit" - is_composition = True def __init__( self, @@ -407,19 +405,6 @@ def from_text_vision_configs(cls, text_config: GroupViTTextConfig, vision_config return cls(text_config=text_config.to_dict(), vision_config=vision_config.to_dict(), **kwargs) - def to_dict(self): - """ - Serializes this instance to a Python dictionary. Override the default [`~PretrainedConfig.to_dict`]. - - Returns: - `Dict[str, any]`: Dictionary of all the attributes that make up this configuration instance, - """ - output = copy.deepcopy(self.__dict__) - output["text_config"] = self.text_config.to_dict() - output["vision_config"] = self.vision_config.to_dict() - output["model_type"] = self.__class__.model_type - return output - class GroupViTOnnxConfig(OnnxConfig): @property diff --git a/src/transformers/models/instructblip/configuration_instructblip.py b/src/transformers/models/instructblip/configuration_instructblip.py index 417f8538909e..0500e1cbeb13 100644 --- a/src/transformers/models/instructblip/configuration_instructblip.py +++ b/src/transformers/models/instructblip/configuration_instructblip.py @@ -14,7 +14,6 @@ # limitations under the License. """ InstructBLIP model configuration""" -import copy import os from typing import Union @@ -305,7 +304,6 @@ class InstructBlipConfig(PretrainedConfig): ```""" model_type = "instructblip" - is_composition = True def __init__(self, vision_config=None, qformer_config=None, text_config=None, num_query_tokens=32, **kwargs): super().__init__(**kwargs) @@ -358,17 +356,3 @@ def from_vision_qformer_text_configs( text_config=text_config.to_dict(), **kwargs, ) - - def to_dict(self): - """ - Serializes this instance to a Python dictionary. Override the default [`~PretrainedConfig.to_dict`]. - - Returns: - `Dict[str, any]`: Dictionary of all the attributes that make up this configuration instance, - """ - output = copy.deepcopy(self.__dict__) - output["vision_config"] = self.vision_config.to_dict() - output["qformer_config"] = self.qformer_config.to_dict() - output["text_config"] = self.text_config.to_dict() - output["model_type"] = self.__class__.model_type - return output diff --git a/src/transformers/models/jukebox/configuration_jukebox.py b/src/transformers/models/jukebox/configuration_jukebox.py index 2cd0c53dc93b..265bbfbfe3fd 100644 --- a/src/transformers/models/jukebox/configuration_jukebox.py +++ b/src/transformers/models/jukebox/configuration_jukebox.py @@ -14,7 +14,6 @@ # limitations under the License. """ Jukebox configuration""" -import copy import os from typing import List, Union @@ -369,18 +368,6 @@ def from_pretrained( return cls.from_dict(config_dict, **kwargs) - def to_dict(self): - """ - Serializes this instance to a Python dictionary. Override the default [`~PretrainedConfig.to_dict`]. - - Returns: - `Dict[str, any]`: Dictionary of all the attributes that make up this configuration instance, - """ - output = copy.deepcopy(self.__dict__) - output["encoder_config"] = self.encoder_config.to_dict() if self.encoder_config is not None else None - output["model_type"] = self.__class__.model_type - return output - class JukeboxVQVAEConfig(PretrainedConfig): """ @@ -561,7 +548,6 @@ class JukeboxConfig(PretrainedConfig): """ model_type = "jukebox" - is_composition = True def __init__( self, @@ -620,18 +606,3 @@ def from_configs(cls, prior_configs: List[JukeboxPriorConfig], vqvae_config: Juk """ prior_config_list = [config.to_dict() for config in prior_configs] return cls(prior_config_list=prior_config_list, vqvae_config_dict=vqvae_config.to_dict(), **kwargs) - - def to_dict(self): - """ - Serializes this instance to a Python dictionary. Override the default [`~PretrainedConfig.to_dict`]. - - Returns: - `Dict[str, any]`: Dictionary of all the attributes that make up this configuration instance, - """ - output = copy.deepcopy(self.__dict__) - for i, config in enumerate(output.pop("prior_configs")): - output[f"prior_{i}"] = config.to_dict() - - output["vqvae_config"] = self.vqvae_config.to_dict() - output["model_type"] = self.__class__.model_type - return output diff --git a/src/transformers/models/mask2former/configuration_mask2former.py b/src/transformers/models/mask2former/configuration_mask2former.py index 6711904b7015..ccc1c9c2cffc 100644 --- a/src/transformers/models/mask2former/configuration_mask2former.py +++ b/src/transformers/models/mask2former/configuration_mask2former.py @@ -13,7 +13,6 @@ # See the License for the specific language governing permissions and # limitations under the License. """ Mask2Former model configuration""" -import copy from typing import Dict, List, Optional from ...configuration_utils import PretrainedConfig @@ -230,15 +229,3 @@ def from_backbone_config(cls, backbone_config: PretrainedConfig, **kwargs): backbone_config=backbone_config, **kwargs, ) - - def to_dict(self) -> Dict[str, any]: - """ - Serializes this instance to a Python dictionary. Override the default [`~PretrainedConfig.to_dict`]. - - Returns: - `Dict[str, any]`: Dictionary of all the attributes that make up this configuration instance, - """ - output = copy.deepcopy(self.__dict__) - output["backbone_config"] = self.backbone_config.to_dict() - output["model_type"] = self.__class__.model_type - return output diff --git a/src/transformers/models/maskformer/configuration_maskformer.py b/src/transformers/models/maskformer/configuration_maskformer.py index 25deef2f2062..baf907ee53c0 100644 --- a/src/transformers/models/maskformer/configuration_maskformer.py +++ b/src/transformers/models/maskformer/configuration_maskformer.py @@ -13,7 +13,6 @@ # See the License for the specific language governing permissions and # limitations under the License. """ MaskFormer model configuration""" -import copy from typing import Dict, Optional from ...configuration_utils import PretrainedConfig @@ -200,16 +199,3 @@ def from_backbone_and_decoder_configs( decoder_config=decoder_config, **kwargs, ) - - def to_dict(self) -> Dict[str, any]: - """ - Serializes this instance to a Python dictionary. Override the default [`~PretrainedConfig.to_dict`]. - - Returns: - `Dict[str, any]`: Dictionary of all the attributes that make up this configuration instance, - """ - output = copy.deepcopy(self.__dict__) - output["backbone_config"] = self.backbone_config.to_dict() - output["decoder_config"] = self.decoder_config.to_dict() - output["model_type"] = self.__class__.model_type - return output diff --git a/src/transformers/models/mpt/configuration_mpt.py b/src/transformers/models/mpt/configuration_mpt.py index fced045f71e1..f1a140aacbcf 100644 --- a/src/transformers/models/mpt/configuration_mpt.py +++ b/src/transformers/models/mpt/configuration_mpt.py @@ -13,7 +13,6 @@ # See the License for the specific language governing permissions and # limitations under the License. """ Mpt configuration""" -import copy from typing import TYPE_CHECKING, Optional, Union @@ -197,7 +196,6 @@ class MptConfig(PretrainedConfig): "hidden_size": "d_model", "num_hidden_layers": "n_layers", } - is_composition = True def __init__( self, @@ -222,7 +220,12 @@ def __init__( initializer_range=0.02, **kwargs, ): - self.attn_config = attn_config + if attn_config is None: + self.attn_config = MptAttentionConfig() + elif isinstance(attn_config, dict): + self.attn_config = MptAttentionConfig(**attn_config) + else: + self.attn_config = attn_config self.d_model = d_model self.n_heads = n_heads self.n_layers = n_layers @@ -242,35 +245,3 @@ def __init__( self.use_cache = use_cache self.initializer_range = initializer_range super().__init__(**kwargs) - - @property - def attn_config(self): - return self._attn_config - - @attn_config.setter - def attn_config(self, attn_config): - if attn_config is None: - self._attn_config = MptAttentionConfig() - elif isinstance(attn_config, dict): - self._attn_config = MptAttentionConfig(**attn_config) - elif isinstance(attn_config, MptAttentionConfig): - self._attn_config = attn_config - else: - raise ValueError( - f"`attn_config` has to be either a `MptAttentionConfig` or a dictionary. Received: {type(attn_config)}" - ) - - def to_dict(self): - """ - Serializes this instance to a Python dictionary. Override the default [`~PretrainedConfig.to_dict`]. - - Returns: - `Dict[str, any]`: Dictionary of all the attributes that make up this configuration instance, - """ - output = copy.deepcopy(self.__dict__) - output["attn_config"] = ( - self._attn_config.to_dict() if not isinstance(self.attn_config, dict) else self.attn_config - ) - del output["_attn_config"] - output["model_type"] = self.__class__.model_type - return output diff --git a/src/transformers/models/musicgen/configuration_musicgen.py b/src/transformers/models/musicgen/configuration_musicgen.py index 2882c49f75b2..315f03811060 100644 --- a/src/transformers/models/musicgen/configuration_musicgen.py +++ b/src/transformers/models/musicgen/configuration_musicgen.py @@ -13,7 +13,6 @@ # See the License for the specific language governing permissions and # limitations under the License. """ MusicGen model configuration""" -import copy from ...configuration_utils import PretrainedConfig from ...utils import logging @@ -227,17 +226,3 @@ def from_sub_models_config( decoder=decoder_config.to_dict(), **kwargs, ) - - def to_dict(self): - """ - Serializes this instance to a Python dictionary. Override the default [`~PretrainedConfig.to_dict`]. - - Returns: - `Dict[str, any]`: Dictionary of all the attributes that make up this configuration instance, - """ - output = copy.deepcopy(self.__dict__) - output["text_encoder"] = self.text_encoder.to_dict() - output["audio_encoder"] = self.audio_encoder.to_dict() - output["decoder"] = self.decoder.to_dict() - output["model_type"] = self.__class__.model_type - return output diff --git a/src/transformers/models/oneformer/configuration_oneformer.py b/src/transformers/models/oneformer/configuration_oneformer.py index 0a0465e437e5..c990deed2343 100644 --- a/src/transformers/models/oneformer/configuration_oneformer.py +++ b/src/transformers/models/oneformer/configuration_oneformer.py @@ -13,7 +13,6 @@ # See the License for the specific language governing permissions and # limitations under the License. """OneFormer model configuration""" -import copy from typing import Dict, Optional from ...configuration_utils import PretrainedConfig @@ -250,13 +249,3 @@ def __init__( self.num_hidden_layers = decoder_layers super().__init__(**kwargs) - - def to_dict(self) -> Dict[str, any]: - """ - Serializes this instance to a Python dictionary. Override the default [`~PretrainedConfig.to_dict`]. Returns: - `Dict[str, any]`: Dictionary of all the attributes that make up this configuration instance, - """ - output = copy.deepcopy(self.__dict__) - output["backbone_config"] = self.backbone_config.to_dict() - output["model_type"] = self.__class__.model_type - return output diff --git a/src/transformers/models/owlvit/configuration_owlvit.py b/src/transformers/models/owlvit/configuration_owlvit.py index 2403937b89eb..a03120a46e5a 100644 --- a/src/transformers/models/owlvit/configuration_owlvit.py +++ b/src/transformers/models/owlvit/configuration_owlvit.py @@ -14,7 +14,6 @@ # limitations under the License. """ OWL-ViT model configuration""" -import copy import os from collections import OrderedDict from typing import TYPE_CHECKING, Any, Dict, Mapping, Optional, Union @@ -274,7 +273,6 @@ class OwlViTConfig(PretrainedConfig): """ model_type = "owlvit" - is_composition = True def __init__( self, @@ -332,19 +330,6 @@ def from_text_vision_configs(cls, text_config: Dict, vision_config: Dict, **kwar return cls.from_dict(config_dict, **kwargs) - def to_dict(self): - """ - Serializes this instance to a Python dictionary. Override the default [`~PretrainedConfig.to_dict`]. - - Returns: - `Dict[str, any]`: Dictionary of all the attributes that make up this configuration instance, - """ - output = copy.deepcopy(self.__dict__) - output["text_config"] = self.text_config.to_dict() - output["vision_config"] = self.vision_config.to_dict() - output["model_type"] = self.__class__.model_type - return output - class OwlViTOnnxConfig(OnnxConfig): @property diff --git a/src/transformers/models/pix2struct/configuration_pix2struct.py b/src/transformers/models/pix2struct/configuration_pix2struct.py index a86abae07391..23268c217b34 100644 --- a/src/transformers/models/pix2struct/configuration_pix2struct.py +++ b/src/transformers/models/pix2struct/configuration_pix2struct.py @@ -14,7 +14,6 @@ # limitations under the License. """ Pix2Struct model configuration""" -import copy import os from typing import Union @@ -338,7 +337,6 @@ class Pix2StructConfig(PretrainedConfig): ```""" model_type = "pix2struct" - is_composition = True def __init__( self, @@ -389,16 +387,3 @@ def from_text_vision_configs( """ return cls(text_config=text_config.to_dict(), vision_config=vision_config.to_dict(), **kwargs) - - def to_dict(self): - """ - Serializes this instance to a Python dictionary. Override the default [`~PretrainedConfig.to_dict`]. - - Returns: - `Dict[str, any]`: Dictionary of all the attributes that make up this configuration instance, - """ - output = copy.deepcopy(self.__dict__) - output["text_config"] = self.text_config.to_dict() - output["vision_config"] = self.vision_config.to_dict() - output["model_type"] = self.__class__.model_type - return output diff --git a/src/transformers/models/rag/configuration_rag.py b/src/transformers/models/rag/configuration_rag.py index 59d2951deffe..60f38ee6a532 100644 --- a/src/transformers/models/rag/configuration_rag.py +++ b/src/transformers/models/rag/configuration_rag.py @@ -14,7 +14,6 @@ # limitations under the License. """ RAG model configuration""" -import copy from ...configuration_utils import PretrainedConfig from ...utils import add_start_docstrings @@ -179,16 +178,3 @@ def from_question_encoder_generator_configs( [`EncoderDecoderConfig`]: An instance of a configuration object """ return cls(question_encoder=question_encoder_config.to_dict(), generator=generator_config.to_dict(), **kwargs) - - def to_dict(self): - """ - Serializes this instance to a Python dictionary. Override the default [`~PretrainedConfig.to_dict`]. - - Returns: - `Dict[str, any]`: Dictionary of all the attributes that make up this configuration instance, - """ - output = copy.deepcopy(self.__dict__) - output["question_encoder"] = self.question_encoder.to_dict() - output["generator"] = self.generator.to_dict() - output["model_type"] = self.__class__.model_type - return output diff --git a/src/transformers/models/sam/configuration_sam.py b/src/transformers/models/sam/configuration_sam.py index 87427d457310..b184788c4e9a 100644 --- a/src/transformers/models/sam/configuration_sam.py +++ b/src/transformers/models/sam/configuration_sam.py @@ -14,7 +14,6 @@ # limitations under the License. """ SAM model configuration""" -import copy from ...configuration_utils import PretrainedConfig from ...utils import logging @@ -286,7 +285,6 @@ class SamConfig(PretrainedConfig): ```""" model_type = "sam" - is_composition = True def __init__( self, @@ -312,17 +310,3 @@ def __init__( self.prompt_encoder_config = SamPromptEncoderConfig(**prompt_encoder_config) self.mask_decoder_config = SamMaskDecoderConfig(**mask_decoder_config) self.initializer_range = initializer_range - - def to_dict(self): - """ - Serializes this instance to a Python dictionary. Override the default [`~PretrainedConfig.to_dict`]. - - Returns: - `Dict[str, any]`: Dictionary of all the attributes that make up this configuration instance, - """ - output = copy.deepcopy(self.__dict__) - output["vision_config"] = self.vision_config.to_dict() - output["prompt_encoder_config"] = self.prompt_encoder_config.to_dict() - output["mask_decoder_config"] = self.mask_decoder_config.to_dict() - output["model_type"] = self.__class__.model_type - return output diff --git a/src/transformers/models/speech_encoder_decoder/configuration_speech_encoder_decoder.py b/src/transformers/models/speech_encoder_decoder/configuration_speech_encoder_decoder.py index 8b648f8e21bc..4a144514fd3b 100644 --- a/src/transformers/models/speech_encoder_decoder/configuration_speech_encoder_decoder.py +++ b/src/transformers/models/speech_encoder_decoder/configuration_speech_encoder_decoder.py @@ -14,7 +14,6 @@ # See the License for the specific language governing permissions and # limitations under the License. -import copy from ...configuration_utils import PretrainedConfig from ...utils import logging @@ -106,16 +105,3 @@ def from_encoder_decoder_configs( decoder_config.add_cross_attention = True return cls(encoder=encoder_config.to_dict(), decoder=decoder_config.to_dict(), **kwargs) - - def to_dict(self): - """ - Serializes this instance to a Python dictionary. Override the default *to_dict()* from *PretrainedConfig*. - - Returns: - `Dict[str, any]`: Dictionary of all the attributes that make up this configuration instance, - """ - output = copy.deepcopy(self.__dict__) - output["encoder"] = self.encoder.to_dict() - output["decoder"] = self.decoder.to_dict() - output["model_type"] = self.__class__.model_type - return output diff --git a/src/transformers/models/table_transformer/configuration_table_transformer.py b/src/transformers/models/table_transformer/configuration_table_transformer.py index 250816ef4949..9cc903656a4c 100644 --- a/src/transformers/models/table_transformer/configuration_table_transformer.py +++ b/src/transformers/models/table_transformer/configuration_table_transformer.py @@ -13,9 +13,8 @@ # See the License for the specific language governing permissions and # limitations under the License. """ Table Transformer model configuration""" -import copy from collections import OrderedDict -from typing import Dict, Mapping +from typing import Mapping from packaging import version @@ -237,17 +236,6 @@ def num_attention_heads(self) -> int: def hidden_size(self) -> int: return self.d_model - def to_dict(self) -> Dict[str, any]: - """ - Serializes this instance to a Python dictionary. Override the default [`~PretrainedConfig.to_dict`]. Returns: - `Dict[str, any]`: Dictionary of all the attributes that make up this configuration instance, - """ - output = copy.deepcopy(self.__dict__) - if output["backbone_config"] is not None: - output["backbone_config"] = self.backbone_config.to_dict() - output["model_type"] = self.__class__.model_type - return output - # Copied from transformers.models.detr.configuration_detr.DetrOnnxConfig class TableTransformerOnnxConfig(OnnxConfig): diff --git a/src/transformers/models/upernet/configuration_upernet.py b/src/transformers/models/upernet/configuration_upernet.py index 593e8953a273..f7ad5d04652c 100644 --- a/src/transformers/models/upernet/configuration_upernet.py +++ b/src/transformers/models/upernet/configuration_upernet.py @@ -14,7 +14,6 @@ # limitations under the License. """ UperNet model configuration""" -import copy from ...configuration_utils import PretrainedConfig from ...utils import logging @@ -108,13 +107,3 @@ def __init__( self.auxiliary_num_convs = auxiliary_num_convs self.auxiliary_concat_input = auxiliary_concat_input self.loss_ignore_index = loss_ignore_index - - def to_dict(self): - """ - Serializes this instance to a Python dictionary. Override the default [`~PretrainedConfig.to_dict`]. Returns: - `Dict[str, any]`: Dictionary of all the attributes that make up this configuration instance, - """ - output = copy.deepcopy(self.__dict__) - output["backbone_config"] = self.backbone_config.to_dict() - output["model_type"] = self.__class__.model_type - return output diff --git a/src/transformers/models/vision_encoder_decoder/configuration_vision_encoder_decoder.py b/src/transformers/models/vision_encoder_decoder/configuration_vision_encoder_decoder.py index 693c41c74691..8a8fd2f0f631 100644 --- a/src/transformers/models/vision_encoder_decoder/configuration_vision_encoder_decoder.py +++ b/src/transformers/models/vision_encoder_decoder/configuration_vision_encoder_decoder.py @@ -14,7 +14,6 @@ # See the License for the specific language governing permissions and # limitations under the License. -import copy from typing import TYPE_CHECKING, Any, Mapping, Optional, OrderedDict from packaging import version @@ -114,19 +113,6 @@ def from_encoder_decoder_configs( return cls(encoder=encoder_config.to_dict(), decoder=decoder_config.to_dict(), **kwargs) - def to_dict(self): - """ - Serializes this instance to a Python dictionary. Override the default *to_dict()* from *PretrainedConfig*. - - Returns: - `Dict[str, any]`: Dictionary of all the attributes that make up this configuration instance, - """ - output = copy.deepcopy(self.__dict__) - output["encoder"] = self.encoder.to_dict() - output["decoder"] = self.decoder.to_dict() - output["model_type"] = self.__class__.model_type - return output - class VisionEncoderDecoderEncoderOnnxConfig(OnnxConfig): torch_onnx_minimum_version = version.parse("1.11") diff --git a/src/transformers/models/vision_text_dual_encoder/configuration_vision_text_dual_encoder.py b/src/transformers/models/vision_text_dual_encoder/configuration_vision_text_dual_encoder.py index 8c31c1ac0303..cffc58865a36 100644 --- a/src/transformers/models/vision_text_dual_encoder/configuration_vision_text_dual_encoder.py +++ b/src/transformers/models/vision_text_dual_encoder/configuration_vision_text_dual_encoder.py @@ -14,7 +14,6 @@ # limitations under the License. """ VisionTextDualEncoder model configuration""" -import copy from ...configuration_utils import PretrainedConfig from ...utils import logging @@ -113,16 +112,3 @@ def from_vision_text_configs(cls, vision_config: PretrainedConfig, text_config: """ return cls(vision_config=vision_config.to_dict(), text_config=text_config.to_dict(), **kwargs) - - def to_dict(self): - """ - Serializes this instance to a Python dictionary. Override the default [`~PretrainedConfig.to_dict`]. - - Returns: - `Dict[str, any]`: Dictionary of all the attributes that make up this configuration instance, - """ - output = copy.deepcopy(self.__dict__) - output["vision_config"] = self.vision_config.to_dict() - output["text_config"] = self.text_config.to_dict() - output["model_type"] = self.__class__.model_type - return output diff --git a/src/transformers/models/vit_hybrid/configuration_vit_hybrid.py b/src/transformers/models/vit_hybrid/configuration_vit_hybrid.py index 34b778a1f944..f06cc6c5f81d 100644 --- a/src/transformers/models/vit_hybrid/configuration_vit_hybrid.py +++ b/src/transformers/models/vit_hybrid/configuration_vit_hybrid.py @@ -14,8 +14,6 @@ # limitations under the License. """ ViT Hybrid model configuration""" -import copy -from typing import Dict from ...configuration_utils import PretrainedConfig from ...utils import logging @@ -146,13 +144,3 @@ def __init__( self.patch_size = patch_size self.num_channels = num_channels self.qkv_bias = qkv_bias - - def to_dict(self) -> Dict[str, any]: - """ - Serializes this instance to a Python dictionary. Override the default [`~PretrainedConfig.to_dict`]. Returns: - `Dict[str, any]`: Dictionary of all the attributes that make up this configuration instance, - """ - output = copy.deepcopy(self.__dict__) - output["backbone_config"] = self.backbone_config.to_dict() - output["model_type"] = self.__class__.model_type - return output diff --git a/src/transformers/models/x_clip/configuration_x_clip.py b/src/transformers/models/x_clip/configuration_x_clip.py index 17e8c1c23053..183b66439b36 100644 --- a/src/transformers/models/x_clip/configuration_x_clip.py +++ b/src/transformers/models/x_clip/configuration_x_clip.py @@ -14,7 +14,6 @@ # limitations under the License. """ X-CLIP model configuration""" -import copy import os from typing import Union @@ -299,7 +298,6 @@ class XCLIPConfig(PretrainedConfig): """ model_type = "xclip" - is_composition = True def __init__( self, @@ -417,16 +415,3 @@ def from_text_vision_configs(cls, text_config: XCLIPTextConfig, vision_config: X """ return cls(text_config=text_config.to_dict(), vision_config=vision_config.to_dict(), **kwargs) - - def to_dict(self): - """ - Serializes this instance to a Python dictionary. Override the default [`~PretrainedConfig.to_dict`]. - - Returns: - `Dict[str, any]`: Dictionary of all the attributes that make up this configuration instance, - """ - output = copy.deepcopy(self.__dict__) - output["text_config"] = self.text_config.to_dict() - output["vision_config"] = self.vision_config.to_dict() - output["model_type"] = self.__class__.model_type - return output diff --git a/tests/test_configuration_common.py b/tests/test_configuration_common.py index 18d9a76e97dc..5fb93f71eb04 100644 --- a/tests/test_configuration_common.py +++ b/tests/test_configuration_common.py @@ -118,9 +118,11 @@ def create_and_test_config_with_num_labels(self): def check_config_can_be_init_without_params(self): if self.config_class.is_composition: - return - config = self.config_class() - self.parent.assertIsNotNone(config) + with self.parent.assertRaises(ValueError): + config = self.config_class() + else: + config = self.config_class() + self.parent.assertIsNotNone(config) def check_config_arguments_init(self): kwargs = copy.deepcopy(config_common_kwargs) diff --git a/tests/test_configuration_utils.py b/tests/test_configuration_utils.py index 12a956a55eca..1b8136bfbb42 100644 --- a/tests/test_configuration_utils.py +++ b/tests/test_configuration_utils.py @@ -210,6 +210,13 @@ def test_config_common_kwargs_is_complete(self): f" {', '.join(keys_with_defaults)}." ) + def test_nested_config_load_from_dict(self): + config = AutoConfig.from_pretrained( + "hf-internal-testing/tiny-random-CLIPModel", text_config={"num_hidden_layers": 2} + ) + self.assertNotIsInstance(config.text_config, dict) + self.assertEqual(config.text_config.__class__.__name__, "CLIPTextConfig") + def test_from_pretrained_subfolder(self): with self.assertRaises(OSError): # config is in subfolder, the following should not work without specifying the subfolder