L'API `push_to_hub`.
Jetons un coup d'œil à l'API `push_to_hub`.
Vous devrez être connecté avec votre compte Hugging Face, ce que vous pouvez faire en exécutant
cette première cellule ou en tapant `huggingface-cli login` dans un terminal.
Entrez simplement votre nom d'utilisateur et votre mot de passe et cliquez sur connexion. Cela stockera un
jeton d'authentification dans le cache de la machine que vous utilisez.
Maintenant, lançons le finetuning d'un modèle BERT sur le jeu de données GLUE COLA.
Nous n'aborderons pas le code du finetuning car vous pouvez le trouver dans n'importe quel tutoriel sur Transformers
ou en regardant les vidéos liées ci-dessous.
Ce qui nous intéresse ici, c'est comment nous pouvons tirer parti du Hub de modèles pendant l'entraînement.
Cela se fait avec le `push_to_hub=True` passé dans vos `TrainingArguments`. Cela
téléchargera automatiquement votre modèle sur le Hub chaque fois qu'il est enregistré (donc à chaque époque dans notre cas), ce
qui vous permet de reprendre l'entraînement à partir d'une machine différente si la machine actuelle est interrompue.
Le modèle sera téléchargé dans votre espace, avec le nom du dépôt de sortie comme
nom de dépôt.
Vous pouvez choisir un autre nom en le transmettant à l'argument `hub_model_id` et vous pouvez aussi
pousser à l'intérieur d'une organisation dont vous êtes membre en transmettant un nom de dépôt complet.
Ceci fait, nous pouvons simplement lancer l'entraînement et attendre un peu.
Notez que le modèle est poussé de manière asynchrone, ce qui signifie que l'entraînement se poursuit pendant que
votre modèle est téléchargé sur le Hub.
Lorsque votre premier commit est terminé, vous pouvez aller inspecter votre modèle sur le Hub et même
commencer à jouer avec son widget d'inférence pendant qu'il s'entraîne !
Il y a quelque chose qui ne va pas avec les étiquettes, mais nous corrigerons cela plus tard dans cette vidéo.
Lorsque l'entraînement est terminé, nous devrions faire un dernier push avec `trainer.push_to_hub` pour
deux raisons.
Cela garantira que nous téléchargeons la version finale de nos modèles si nous ne l'avons pas déjà fait
(par exemple, si nous avons enregistré toutes les n étapes au lieu de toutes les époques).
Deuxièmement, cela rédigera une carte de modèle qui sera la page de destination de votre dépôt de modèles.
Quand le commit est fait, revenons à la page du modèle et rafraichissons. Vous pouvez voir le brouillon d'une carte de modèle qui inclus des informations sur quel modèle pré-entraîné nous avons finetuné,
Les hyperparamètres utilisés, les résultats intermédiaires de l'entraînement et les versions des frameworks utilisés pour que les autres personnes puissent reproduirent facilement les résultats.
En haut de toutes ces informations, le `Trainer` fournit aussi des métadonnées qui sont interprétées par le site web d'Hugging Face dans la carte du modèle.
On obtient les valeurs des métriques affichées automatiquement dans un petit widget, et un lien vers
un classement dans Paper with Code.
Les exécutions de Tensorboard ont aussi été poussées vers ce dépôt et nous pouvons les consulter directement depuis le Hub.
Si vous n'utilisiez pas l'API `Trainer` pour finetuner votre modèle, vous pouvez utiliser la méthode
`push_to_hub` directement sur le modèle et le tokenizer.
Testons cela pour corriger nos étiquettes dans le widget d'inférence !
Le widget d'inférence utilisait des noms par défaut pour les étiquettes car nous n'indiquions pas la
correspondance entre les entiers et les noms d'étiquettes.
Nous pouvons corriger la configuration en définissant les champs `label2id` et `id2label` à leur
valeur appropriée, puis nous pouvons pousser la configuration fixe vers notre dépôt en utilisant la méthode `push_to_hub`.
Une fois que cela est fait et que nous pouvons vérifier sur le site web, le modèle affiche maintenant les bonnes étiquettes !
Maintenant que le modèle est sur le Hub, nous pouvons l'utiliser de n'importe où avec la méthode `from_pretrained` ou la fonction `pipeline`.
Nous n'avons qu'à utiliser l'identifiant du Hub et nous pouvons voir que la configuration et les poids du modèle sont automatiquement téléchargés.
Essayez l'API `push_to_hub` lors de votre prochain entraînement pour partager facilement votre modèle avec le reste du monde !