Rembourrage dans NeMo RL
Ce document explique le rembourrage dans NeMo RL et pourquoi un rembourrage cohérent est critique pour le framework.
Approche de Rembourrage
NeMo RL utilise un rembourrage à droite pour toutes les opérations de tenseurs, où les jetons de rembourrage sont ajoutés à droite/à la fin des séquences :
Cette approche :
- S’aligne naturellement avec le traitement LLM : Les jetons sont traités de gauche à droite.
- Garde les jetons significatifs contigus : Tous les jetons valides apparaissent au début des tenseurs.
- Simplifie l’indexation et les opérations : Les limites des jetons valides sont facilement définies avec une seule valeur de longueur.
Exemple de Génération Rembourrée à Droite
Entrée (rembourrée à droite) → Génération → Finale (rembourrée à droite) :
Logprobs correspondants :
Vérifier le Rembourrage à Droite
NeMo RL fournit des utilitaires pour vérifier le rembourrage correct. Par exemple :
La fonction verify_right_padding() vérifie que :
- Tout rembourrage (zéros ou jeton de rembourrage fourni par l’utilisateur) apparaît après les jetons valides.
- Le rembourrage commence à la position spécifiée par le tenseur de longueur.
La fonction détecte automatiquement si vous passez des données d’entrée ou de sortie :
- Pour les données d’entrée : Nécessite les champs
input_idsetinput_lengths. - Pour les données de sortie : Nécessite
output_idset soitgeneration_lengths, soitunpadded_sequence_lengths.
Bonnes Pratiques
-
Toujours Utiliser le Rembourrage à Droite : Tous les composants s’attendent à ce format.
-
Suivre les Tenseurs de Longueur : Inclure les tenseurs de longueur appropriés avec vos données.
-
Vérifier le Rembourrage : Utiliser
verify_right_padding()en cas de doute. -
Masquer le Rembourrage dans les Opérations : Utiliser les longueurs pour exclure les jetons de rembourrage des calculs de perte.