timm documentation
Sharing and Loading Models From the Hugging Face Hub
Sharing and Loading Models From the Hugging Face Hub
The timm library has a built-in integration with the Hugging Face Hub, making it easy to share and load models from the 🤗 Hub.
In this short guide, we’ll see how to:
- Share a
timmmodel on the Hub - How to load that model back from the Hub
Authenticating
First, you’ll need to make sure you have the huggingface_hub package installed.
pip install huggingface_hub
Then, you’ll need to authenticate yourself. You can do this by running the following command:
hf auth login
Or, if you’re using a notebook, you can use the notebook_login helper:
>>> from huggingface_hub import notebook_login
>>> notebook_login()Sharing a Model
>>> import timm
>>> model = timm.create_model('resnet18', pretrained=True, num_classes=4)Here is where you would normally train or fine-tune the model. We’ll skip that for the sake of this tutorial.
Let’s pretend we’ve now fine-tuned the model. The next step would be to push it to the Hub! We can do this with the timm.models.push_to_hf_hub function. The exported config describes the model as it is now (e.g. its number of classes, or input size and channels if it was changed), see adapt and export models.
>>> model_cfg = dict(label_names=['a', 'b', 'c', 'd'])
>>> timm.models.push_to_hf_hub(model, 'resnet18-random', model_config=model_cfg)Running the above would push the model to <your-username>/resnet18-random on the Hub. You can now share this model with your friends, or use it in your own code!
Loading a Model
Loading a model from the Hub is as simple as calling timm.create_model with the Hub repo name, prefixed with hf-hub:, and pretrained=True. In this case, we’ll use nateraw/resnet18-random, which is the model we just pushed to the Hub.
>>> model_reloaded = timm.create_model('hf-hub:nateraw/resnet18-random', pretrained=True)