Alignement pour les questions-réponses financières par SFT, RLAIF et DPO
Apprendre à un modèle à lire les tableaux financiers d'une entreprise et à montrer son raisonnement, pour qu'un analyste vérifie le chiffre au lieu de lui faire confiance.
L'énoncé du problème
Les questions-réponses financières supposent un raisonnement en plusieurs étapes sur les tableaux de rapports réglementaires. Un modèle doit trouver les bonnes lignes, en extraire les valeurs numériques et dérouler une chaîne de calcul avant de répondre. Les modèles de base inventent des chiffres absents du tableau et rattachent des valeurs aux mauvaises colonnes. Entraîner sur la seule réponse de référence n'apprend pas au modèle quelles étapes intermédiaires mènent au bon chiffre final, puisqu'il ne voit jamais ces étapes.
Étape 1. L'affinage supervisé
Llama-3-8B est affiné sur l'ensemble d'entraînement complet de FinQA. Le formateur de données convertit chaque exemple brut (pre_text, lignes de tableau, post_text, programme de référence, réponse de référence) en conversation ChatML. Le tour de l'assistant suit un format de raisonnement explicite : un bloc <thought> qui contient les indices des faits d'appui et le programme de raisonnement issu de l'annotation FinQA, suivi d'un bloc <answer> avec la réponse numérique exécutée. Cela oblige le modèle à produire des étapes intermédiaires vérifiables au lieu de sauter au chiffre final.
L'affinage supervisé utilise LoRA (r=16, alpha=32, sur les 7 couches de projection, d'après Hu et coll. 2022 et Dettmers et coll. 2023 sur les tâches de raisonnement), un calendrier de taux d'apprentissage en cosinus, 5 % de préchauffage, paged_adamw_32bit, et un point de reprise de gradient pour tenir sur une seule RTX 4090 (24 Go). L'accumulation de gradient porte la taille de lot effective à 48. Une séparation de validation à 5 % attrape le surapprentissage pendant le SFT, ce qui compte parce qu'une initialisation SFT surapprise dégrade le modèle de référence du DPO (Gao et coll. 2022). Dynamique d'entraînement : perte 2,74 → 0,785 sur 248 pas, exactitude par jeton 44 % → 80,8 %.
Étape 2. Les données de préférence RLAIF
Le modèle SFT entraîné produit deux réponses candidates par exemple d'entraînement, aux températures 0,3 et 0,9. Un modèle distinct, Zephyr-7B-β (Tunstall et coll. 2023), annote chaque paire avec la grille par paires de l'IA constitutionnelle (Bai et coll. 2022) pour décider quelle réponse l'emporte. Les paires dont la similarité cosinus dépasse 0,85 sont écartées, parce qu'une paire aussi proche ne porte aucun signal DPO exploitable. Il en sort 1 800 triplets (instruction, réponse retenue, réponse écartée) en NDJSON. Annoter avec Zephyr et évaluer avec Llama-3.3-70B garde les 2 tâches sur des modèles distincts et évite la circularité relevée par Zheng et coll. 2023.
Étape 3. L'optimisation directe par préférence
Le DPO s'entraîne sur le jeu de préférences RLAIF. L'adaptateur SFT entre comme modèle entraînable, et TRL le clone automatiquement en modèle de référence figé. Quantification NF4 sur 4 bits via BitsAndBytes. Beta=0,3 (Rafailov et coll. 2023 recommandent 0,1 à 0,5, et 0,3 est un point médian prudent à cette taille de jeu de données). Taux d'apprentissage 5e-6, 1 époque, 38 pas. Perte DPO finale 0,058, exactitude de récompense finale 97,7 %.
L'évaluation par un modèle juge
Une chaîne d'évaluation en deux passes fait tourner 3 variantes du modèle (base, SFT, SFT+DPO) sur 100 questions du jeu de test FinQA, jugées par Llama-3.3-70B via Groq (d'après Zheng et coll. 2023). Les grilles sont la fidélité au contexte (de 1 à 5), l'exactitude du raisonnement (de 1 à 5) et le taux d'hallucination (présente ou non, par réponse). À la passe 1, chaque modèle se charge en 4 bits, produit ses réponses, puis se décharge pour libérer la mémoire GPU avant le chargement du suivant. À la passe 2, chaque réponse est notée sur les 3 grilles. Les résultats partent en CSV avec des points de reprise partiels, donc une exécution interrompue reprend sans renoter les modèles déjà traités.
Le SFT+DPO fait passer la fidélité de 1,17 à 1,29 et l'exactitude du raisonnement de 1,16 à 1,56 face au modèle de base, et fait tomber le taux d'hallucination de 96,0 % à 86,7 %. Ces scores absolus restent bas sur une échelle de 1 à 5, ce qui en dit plus sur la difficulté du raisonnement en plusieurs étapes sur des tableaux réglementaires que sur le signal d'entraînement : l'exactitude de récompense DPO a atteint 97,7 %, donc le modèle apprend bien la structure des préférences. La lecture honnête est que cette tâche demande un modèle de base plus grand, et que la chaîne est prête à en accueillir un.
Le calcul
Les scripts d'entraînement tournent sur un seul GPU (RTX 4090, RunPod) ou sur plusieurs GPU avec DDP via torchrun. Le script SFT lit LOCAL_RANK dans l'environnement et attache chaque processus au GPU qui lui revient. Un fil de battement affiche l'avancement toutes les 10 minutes, ce qu'on veut sur une longue exécution en nuage. Les adaptateurs et le modèle fusionné sont envoyés sur le Hugging Face Hub sous G-Maxime-N/.