Introduction
Comme vous l’avez vu dans le chapitre 1, les transformers sont généralement très grands. Pouvant aller de plusieurs millions à des dizaines de milliards de paramètres, l’entraînement et le déploiement de ces modèles est une entreprise compliquée. De plus, avec de nouveaux modèles publiés presque quotidiennement et ayant chacun sa propre implémentation, les essayer tous n’est pas une tâche facile.
La bibliothèque 🤗 Transformers a été créée pour résoudre ce problème. Son objectif est de fournir une API unique à travers laquelle tout modèle de transformers peut être chargé, entraîné et sauvegardé. Les principales caractéristiques de la bibliothèque sont :
- La facilité d’utilisation : en seulement deux lignes de code il est possible de télécharger, charger et utiliser un modèle de NLP à l’état de l’art pour faire de l’inférence,
- La flexibilité : au fond, tous les modèles sont de simples classes PyTorch
nn.Module
ou TensorFlowtf.keras.Model
et peuvent être manipulés comme n’importe quel autre modèle dans leurs frameworks d’apprentissage automatique respectifs, - La simplicité : pratiquement aucune abstraction n’est faite dans la bibliothèque. Avoir tout dans un fichier est un concept central : la passe avant d’un modèle est entièrement définie dans un seul fichier afin que le code lui-même soit compréhensible et piratable.
Cette dernière caractéristique rend 🤗 Transformers très différent des autres bibliothèques d’apprentissage automatique. Les modèles ne sont pas construits sur des modules partagés entre plusieurs fichiers. Au lieu de cela, chaque modèle possède ses propres couches. En plus de rendre les modèles plus accessibles et compréhensibles, cela vous permet d’expérimenter des choses facilement sur un modèle sans affecter les autres.
Ce chapitre commence par un exemple de bout en bout où nous utilisons un modèle et un tokenizer ensemble pour reproduire la fonction pipeline()
introduite dans le chapitre 1.
Ensuite, nous aborderons l’API model : nous nous plongerons dans les classes de modèle et de configuration, nous verrons comment charger un modèle et enfin comment il traite les entrées numériques pour produire des prédictions.
Nous examinerons ensuite l’API tokenizer qui est l’autre composant principal de la fonction pipeline()
.
Les tokenizers s’occupent de la première et de la dernière étape du traitement en gérant la conversion du texte en entrées numériques pour le réseau neuronal et la reconversion en texte lorsqu’elle est nécessaire.
Enfin, nous montrerons comment gérer l’envoi de plusieurs phrases à travers un modèle dans un batch préparé et nous conclurons le tout en examinant de plus près la fonction tokenizer()
.