Hub documentation

Téléchargement de modèles

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Téléchargement de modèles

Pour téléverser des modèles sur le Hub, vous devez créer un compte sur Hugging Face. Les modèles du Hub sont des dépôts basés sur Git, qui offrent la gestion des versions, les branches, la découvrabilité et le partage, l’intégration avec des dizaines de bibliothèques, et bien plus encore ! Vous contrôlez ce que vous souhaitez téléverser dans votre dépôt, ce qui peut inclure des points de contrôle, des configurations et tout autre fichier.

Vous pouvez lier des dépôts à un utilisateur individuel, comme osanseviero/fashion_brands_patterns, ou à une organisation, comme facebook/bart-large-xsum. Les organisations peuvent regrouper des modèles liés à une entreprise, une communauté ou une bibliothèque ! Si vous choisissez une organisation, le modèle sera mis en avant sur la page de l’organisation, et chaque membre de l’organisation aura la possibilité de contribuer au dépôt. Vous pouvez créer une nouvelle organisation ici.

REMARQUE : Les modèles n'ont PAS besoin d'être compatibles avec les bibliothèques Transformers/Diffusers pour obtenir des métriques de téléchargement. Tout modèle personnalisé est pris en charge. En savoir plus ci-dessous !

Il existe plusieurs façons de téléverser des modèles afin qu’ils soient bien intégrés au Hub et bénéficient des métriques de téléchargement, décrites ci-dessous.

  • Si votre modèle est conçu pour une bibliothèque disposant d'un support intégré, vous pouvez utiliser les méthodes fournies par cette bibliothèque. Les modèles personnalisés qui utilisent trust_remote_code=True peuvent également tirer parti de ces méthodes.
  • Si votre modèle est un modèle PyTorch personnalisé, vous pouvez utiliser la classe PyTorchModelHubMixin, car elle permet d’ajouter from_pretrained et push_to_hub à n’importe quelle classe nn.Module, tout comme pour les modèles des bibliothèques Transformers, Diffusers et Timm.
  • En plus des téléversements programmés, vous pouvez toujours utiliser l'interface web ou la ligne de commande git.

Une fois votre modèle téléversé, nous vous suggérons d’ajouter une Model Card à votre dépôt afin de documenter votre modèle et de le rendre plus facile à trouver.

drawing Example [repository](https://huggingface.co/LiheYoung/depth_anything_vitl14) that leverages [PyTorchModelHubMixin](#upload-a-pytorch-model-using-huggingfacehub). Downloads are shown on the right.

Utilisation de l'interface web

Pour créer un nouveau dépôt de modèle, visitez huggingface.co/new. Suivez ensuite ces étapes :

  1. Dans l’onglet « Files and versions », sélectionnez « Add File » et spécifiez « Upload File » :
  1. À partir de là, sélectionnez un fichier sur votre ordinateur à téléverser et laissez un message de commit utile pour savoir ce que vous téléversez :
  1. Ensuite, cliquez sur Commit changes pour téléverser votre modèle sur le Hub !

  2. Inspecter les fichiers et l’historique

Vous pouvez consulter votre dépôt avec tous les fichiers récemment ajoutés !

L’interface utilisateur vous permet d’explorer les fichiers du modèle et les commits, et de visualiser le diff introduit par chaque commit :

  1. Ajouter des métadonnées

Vous pouvez ajouter des métadonnées à votre carte de modèle. Vous pouvez spécifier :

  • le type de tâche pour laquelle ce modèle est conçu, permettant les widgets et les fournisseurs d'inférence.
  • la bibliothèque utilisée (transformers, spaCy, etc.)
  • la langue
  • le jeu de données
  • métriques
  • license
  • bien plus encore !

En savoir plus sur les étiquettes de modèle ici.

  1. Ajouter des traces TensorBoard

Tout dépôt contenant des traces TensorBoard (noms de fichiers contenant tfevents) est catégorisé avec le tag TensorBoard. Par convention, nous vous suggérons d’enregistrer les traces dans le sous-dossier runs/. L’onglet « Training metrics » permet alors de consulter facilement les graphiques des variables journalisées, comme la perte ou la précision.

Les modèles entraînés avec 🤗 Transformers génèrent des traces TensorBoard par défaut si tensorboard est installé.

Téléverser depuis une bibliothèque avec prise en charge intégrée

Vérifiez d'abord si votre modèle provient d'une bibliothèque prenant en charge nativement la publication et le chargement depuis le Hub, comme Transformers, Diffusers, Timm, Asteroid, etc. : https://huggingface.co/docs/hub/models-libraries. Ci-dessous, nous montrons à quel point c'est simple pour une bibliothèque comme Transformers :

from transformers import BertConfig, BertModel

config = BertConfig()
model = BertModel(config)

model.push_to_hub("nielsr/my-awesome-bert-model")

# reload
model = BertModel.from_pretrained("nielsr/my-awesome-bert-model")

Certain bibliothèques, comme Transformers, prennent en charge le chargement de code depuis le Hub. Il s’agit d’une manière de faire fonctionner votre modèle avec Transformers à l’aide du drapeau trust_remote_code=True. Vous pouvez envisager cette option plutôt qu’une intégration complète dans une bibliothèque.

Téléverser un modèle PyTorch à l'aide de huggingface_hub

Si votre modèle est un modèle PyTorch (personnalisé), vous pouvez utiliser la classe PyTorchModelHubMixin disponible dans la bibliothèque Python huggingface_hub. Il s’agit d’une classe minimale qui ajoute les capacités from_pretrained et push_to_hub à n’importe quel nn.Module, ainsi que des métriques de téléchargement.

Voici comment l'utiliser (en supposant que vous avez exécuté pip install huggingface_hub) :

import torch
import torch.nn as nn
from huggingface_hub import PyTorchModelHubMixin


class MyModel(
    nn.Module,
    PyTorchModelHubMixin, 
    # optionally, you can add metadata which gets pushed to the model card
    repo_url="your-repo-url",
    pipeline_tag="text-to-image",
    license="mit",
):
    def __init__(self, num_channels: int, hidden_size: int, num_classes: int):
        super().__init__()
        self.param = nn.Parameter(torch.rand(num_channels, hidden_size))
        self.linear = nn.Linear(hidden_size, num_classes)

    def forward(self, x):
        return self.linear(x + self.param)

# create model
config = {"num_channels": 3, "hidden_size": 32, "num_classes": 10}
model = MyModel(**config)

# save locally
model.save_pretrained("my-awesome-model")

# push to the hub
model.push_to_hub("your-hf-username/my-awesome-model")

# reload
model = MyModel.from_pretrained("your-hf-username/my-awesome-model")

Comme vous pouvez le constater, la seule exigence est que votre modèle hérite de PyTorchModelHubMixin. Tous les attributs d'instance seront automatiquement sérialisés dans un fichier config.json. Notez que la méthode init ne peut accepter que des arguments sérialisables en JSON. Les dataclasses Python sont prises en charge.

Cela s’accompagne de métriques de téléchargement automatisées, ce qui vous permettra de voir combien de fois le modèle est téléchargé, de la même manière que pour les modèles intégrés nativement dans les bibliothèques Transformers, Diffusers ou Timm. Avec cette classe mixin, chaque point de contrôle distinct est stocké sur le Hub dans un dépôt unique composé de 2 fichiers :

  • un fichier pytorch_model.bin ou model.safetensors contenant les poids
  • un fichier config.json qui est une version sérialisée de la configuration du modèle. Cette classe est utilisée pour compter les métriques de téléchargement : chaque fois qu’un utilisateur appelle from_pretrained pour charger un config.json, le compteur augmente de un. Consultez ce guide concernant les métriques de téléchargement automatisées.

Il est recommandé d’ajouter une carte de modèle à chaque point de contrôle afin que les utilisateurs puissent en savoir plus sur le modèle, accéder au lien vers l’article, etc.

Consultez la documentation de huggingface_hub pour en savoir plus.

Sinon, il est également possible de téléverser des fichiers ou des dossiers sur le hub de manière programmatique : https://huggingface.co/docs/huggingface_hub/guides/upload.

Utiliser Git

Enfin, comme les dépôts de modèles ne sont que des dépôts Git, vous pouvez également utiliser Git pour envoyer vos fichiers de modèle vers le Hub. Suivez le guide Prise en main des dépôts pour apprendre à utiliser l’interface en ligne de commande git pour committer et envoyer vos modèles.

Update on GitHub