Cours Salle de cours

Utiliser Transformers · Regrouper deux notes sans perdre la description de la panne

Résumé de la leçon

Une courte demande de maintenance a déjà été classée seule. Vous lui ajoutez une longue note d’inspection dans le même lot. À l’arrondi numérique près, le modèle en mode évaluation devrait traiter la première note de la même façon. Comment vérifier ce qu’il a réellement reçu ?

Leçon 2 / 2 · 4 min · Débutant · FrançaisLangue de la vidéo · English

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

  1. 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.

  2. 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.

  3. 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.

Cinq identifiants et un masque qui conserve les trois premières positions.

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] 5
Code Python et sortie obtenue. Les deux lignes complétées ont cinq positions, mais les sommes des masques valent trois et cinq.

Expé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

  1. Combien de positions de remplissage faut-il ajouter dans tout le lot ?
  2. La même étiquette prédite prouve-t-elle que les deux entrées étaient équivalentes ?

Corrigé

  1. Deux. Seule la note courte est complétée.
  2. 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