Utiliser Transformers · Regrouper deux notes sans perdre la description de la panne
Parcours
Configuration et poids, tokenisation, sous-mots, remplissage, masques et inférence par lots.
Le cours décompose un pipeline en segmentation, passage dans le modèle et lecture des scores de classe. Pour regrouper des séquences de longueurs différentes dans un tenseur rectangulaire, on complète les plus courtes. Un masque d’attention indique quelles positions correspondent à l’entrée et lesquelles servent au remplissage.
Résoudre le cas pas à pas
Prenez deux suites d’identifiants fictifs qui comprennent déjà leurs marqueurs de début et de fin :
[11, 12, 13]et[21, 22, 23, 24, 25]. Réservez zéro au remplissage pour cet exercice. Avec un véritable tokenizer, il faut employer l’identifiant qu’il définit.Complétez à droite jusqu’à cinq positions. La première ligne reçoit deux zéros. Son masque vaut un aux trois premières positions et zéro aux deux dernières. La somme des éléments du masque est donc trois pour la note courte et cinq pour la longue.
Pour vérifier un encodeur réel, chargez modèle et tokenizer depuis la même révision et activez le mode évaluation. Comparez les scores bruts de la note seule à ceux de la même note dans le lot. Transmettez toutes les sorties attendues du tokenizer. Comparez les valeurs avec une tolérance et vérifiez séparément la classe retenue.
Schéma original de GuideWit. Cinq identifiants et un masque qui conserve les trois premières positions.
Exemple résolu
Identifiants | Masque | Tokens visibles |
|---|---|---|
[11, 12, 13] | [1, 1, 1, 0, 0] | 3 |
[21, 22, 23, 24, 25] | [1, 1, 1, 1, 1] | 5 |
Essayer avec Python 3
rows = [[11, 12, 13], [21, 22, 23, 24, 25]]
width = max(map(len, rows))
for row in rows:
pad = width - len(row)
ids = row + [0] * pad
mask = [1] * len(row) + [0] * pad
print(ids, mask, sum(mask))Résultat attendu
[11, 12, 13, 0, 0] [1, 1, 1, 0, 0] 3
[21, 22, 23, 24, 25] [1, 1, 1, 1, 1] 5Expérience Python locale de GuideWit. Les deux lignes complétées ont cinq positions, mais les sommes des masques valent trois et cinq.
Si les masques sont corrects mais que la panne disparaît, cherchez du côté de la troncature. Un masque ne peut restituer des mots supprimés avant l’inférence. Placez le défaut à la fin d’un long historique, puis décodez les identifiants conservés pour voir ce qui arrive au modèle.
Dépannage
Symptôme | Vérification |
|---|---|
La courte note a cinq positions visibles. | Vérifiez les deux dernières valeurs du masque. Elles doivent valoir zéro. |
Le défaut décrit en fin de note est absent des jetons. | Contrôlez la longueur maximale et le sens de la troncature. |
Questions de contrôle
- Combien de positions de remplissage faut-il ajouter dans tout le lot ?
- La même étiquette prédite prouve-t-elle que les deux entrées étaient équivalentes ?
Corrigé
- Deux. Seule la note courte est complétée.
- Non. Des scores différents peuvent désigner la même classe gagnante. Comparez les identifiants, les masques et les scores.
Glossaire
Logit — Score brut d’une classe avant conversion en probabilité.
Sources et unités
Le cas, le test Python et le schéma sont des exemples originaux. Les sources du chapitre figurent ci-dessous.
- Hugging Face LLM Course · 2
- Behind the pipeline
- Models
- Tokenizers
- Handling multiple sequences
- Batching inputs together (PyTorch) · 00:22
- What happens inside the pipeline function? (PyTorch)
- Instantiate a Transformers model (PyTorch)
- Tokenizers overview
- Word-based tokenizers
- Character-based tokenizers
- Subword-based tokenizers
- The tokenization pipeline