-
-
Notifications
You must be signed in to change notification settings - Fork 68
Description
Describe the bug
When loading the pretrained model from HuggingFace as per the instructions in README.md I get a KeyError: 'config' exception. The issue is that when following the instructions **model_kwargs will be empty in NowcastingModelHubMixin._from_pretrained, but it then attempts to pass **model_kwargs['config'] to the class constructor in
skillful_nowcasting/dgmr/hub.py
Line 154 in 8c40296
| model = cls(**model_kwargs["config"]) |
To Reproduce
>>> from dgmr import DGMR
>>> model = DGMR.from_pretrained("openclimatefix/dgmr")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/me/venv/dgmr/lib/python3.11/site-packages/huggingface_hub/utils/_validators.py", line 119, in _inner_fn
return fn(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^
File "/home/me/venv/dgmr/lib/python3.11/site-packages/huggingface_hub/hub_mixin.py", line 420, in from_pretrained
instance = cls._from_pretrained(
^^^^^^^^^^^^^^^^^^^^^
File "/home/me/venv/dgmr/git/skillful_nowcasting/dgmr/hub.py", line 154, in _from_pretrained
model = cls(**model_kwargs["config"])
~~~~~~~~~~~~^^^^^^^^^^
KeyError: 'config'
Expected behavior
I expect to have a variable model with the pretrained DGMR model.
Additional context
One can trivially work around the problem by passing an empty config argument when loading the pretrained model:
model = DGMR.from_pretrained("openclimatefix/dgmr", config={})
so maybe this is just a matter of updating README.md.
Still, I'd argue that the cleaner fix would be to pass the entire **model_kwargs to the class constructor, thus
model = cls(**model_kwargs)
That would also coincide with how HuggingFace themselves do it in https://github.com/huggingface/huggingface_hub/blob/855ee997202e003b80bafd3c02dac65146c89cc4/src/huggingface_hub/hub_mixin.py#L633.