Spaces:
Sleeping
Sleeping
# modeling_auto.py | |
from collections import OrderedDict | |
from transformers.configuration_utils import PretrainedConfig | |
from transformers.utils import logging | |
from ...models.camn_audio.modeling_camn_audio import CamnAudioModel | |
from ...models.camn_audio.configuration_camn_audio import CamnAudioConfig | |
logger = logging.get_logger(__name__) | |
MODEL_MAPPING = OrderedDict( | |
[ | |
(CamnAudioConfig, CamnAudioModel), | |
# Add other model mappings here if needed | |
] | |
) | |
class AutoModel: | |
r""" | |
AutoModel is a generic model class to instantiate a model from a configuration. | |
It is designed to be instantiated using the `from_pretrained` method: | |
model = AutoModel.from_pretrained("model_name_or_path") | |
""" | |
def from_pretrained(cls, pretrained_model_name_or_path, *model_args, **kwargs): | |
from transformers import PretrainedConfig | |
config = PretrainedConfig.from_pretrained(pretrained_model_name_or_path, **kwargs) | |
for config_class, model_class in MODEL_MAPPING.items(): | |
if isinstance(config, config_class): | |
return model_class.from_pretrained(pretrained_model_name_or_path, *model_args, **kwargs) | |
raise ValueError( | |
f"Unrecognized configuration class {config.__class__} for this kind of AutoModel: {cls.__name__}.\n" | |
f"Model type should be one of {', '.join(c.__name__ for c in MODEL_MAPPING.keys())}." | |
) | |