Utilisation de modèles pré-entraînés
Le Hub rend simple la sélection d’un modèle et permet alors que celui-ci puisse être utilisé dans toute bibliothèque en aval en seulement quelques lignes de code. Voyons comment utiliser concrètement l’un de ces modèles et comment contribuer au développement de la communauté.
Supposons que nous recherchions un modèle basé sur le français, capable de remplir des masques.
Nous choisissons le checkpoint camembert-base
pour essayer. L’identifiant camembert-base
est tout ce dont nous avons besoin pour commencer à utiliser le modèle ! Comme vous l’avez vu dans les chapitres précédents, nous pouvons l’instancier en utilisant la fonction pipeline()
:
from transformers import pipeline
camembert_fill_mask = pipeline("fill-mask", model="camembert-base")
results = camembert_fill_mask("Le camembert est <mask> :)")
[
{'sequence': 'Le camembert est délicieux :)', 'score': 0.49091005325317383, 'token': 7200, 'token_str': 'délicieux'},
{'sequence': 'Le camembert est excellent :)', 'score': 0.1055697426199913, 'token': 2183, 'token_str': 'excellent'},
{'sequence': 'Le camembert est succulent :)', 'score': 0.03453313186764717, 'token': 26202, 'token_str': 'succulent'},
{'sequence': 'Le camembert est meilleur :)', 'score': 0.0330314114689827, 'token': 528, 'token_str': 'meilleur'},
{'sequence': 'Le camembert est parfait :)', 'score': 0.03007650189101696, 'token': 1654, 'token_str': 'parfait'}
]
Comme vous pouvez le constater, le chargement d’un modèle dans un pipeline est extrêmement simple. La seule chose à laquelle vous devez faire attention est que le checkpoint choisi soit adapté à la tâche pour laquelle il va être utilisé. Par exemple, ici nous chargeons le checkpoint camembert-base
dans le pipeline fill-mask
, ce qui est tout à fait correct. Mais si nous chargerions ce checkpoint dans le pipeline text-classification
, les résultats n’auraient aucun sens car la tête de camembert-base
n’est pas adaptée à cette tâche ! Nous recommandons d’utiliser le sélecteur de tâche dans l’interface du Hub afin de sélectionner les checkpoints appropriés :
Vous pouvez également instancier le checkpoint en utilisant directement l’architecture du modèle :
from transformers import CamembertTokenizer, CamembertForMaskedLM
tokenizer = CamembertTokenizer.from_pretrained("camembert-base")
model = CamembertForMaskedLM.from_pretrained("camembert-base")
Cependant, nous recommandons d’utiliser les classes Auto*
à la place, car elles sont par conception indépendantes de l’architecture. Alors que l’exemple de code précédent limite les utilisateurs aux checkpoints chargeables dans l’architecture CamemBERT, l’utilisation des classes Auto*
facilite le changement de checkpoint :
from transformers import AutoTokenizer, AutoModelForMaskedLM
tokenizer = AutoTokenizer.from_pretrained("camembert-base")
model = AutoModelForMaskedLM.from_pretrained("camembert-base")