Tracer vers Données d'Entraînement
Cette skill suppose que eval-harness-first
a déjà noté les traces converties ici — goldens, graders,
et runs/<run-id>/results.json
existent tous avant le début de la conversion.
C'est le bord du flywheel que la skill nomme dans son propre flow :
« les mêmes traces étiquetées deviennent
l'ensemble d'entraînement. » La conversion
se fait ici ; la notation a déjà
eu lieu en amont.
Entrée : traces notées —
eval/goldens.jsonl plus
runs/<run-id>/results.json, chaque
ligne portant un task_id, un
verdict du grader, et une
reward quand la tâche supporte un score
scalaire (score de juge,
crédit partiel d'exécution, ou un
verifier RLVR) :
{"task_id": "t-042", "trace_id": "t-042-a3",
"messages": [{"role": "user", "content": "..."}],
"verdict": "pass", "reward": 0.91,
"grader": "exact_match"}
Format de sortie : lignes façonnées
exactement comme le tableau Format Selection
de dataset-curation — lignes SFT
messages ou paires DPO
prompt/chosen/rejected
— donc la sortie de cette skill est
l'entrée de celle-ci sans
étape de restructuration entre les deux.
Le Principe
L'harness d'eval a déjà fait le
travail d'étiquetage : chaque trace dans
results.json porte un verdict,
et souvent une reward, avant que cette
skill la touche. Convertir
une trace notée en ligne d'entraînement
est mécanique — choisir une forme du tableau
dataset-curation, mapper les champs, écrire du JSONL.
La curation est le travail qui
reste — quelles traces franchissent un
seuil de qualité, quelles paires sont
informatives, et quelles lignes ne doivent
jamais entrer dans l'ensemble d'entraînement du tout.
Traitez toute étape de conversion qui
nécessite de re-noter une trace comme un signe
que l'harness manque d'un grader, pas une lacune que
cette skill devrait masquer. Une trace sans
verdict ou reward n'est pas encore convertible — routez-la
vers eval-harness-first d'abord,
ne l'étiquetez pas manuellement ici pour débloquer la conversion.
SFT à partir de Traces
- Conservez la fraction de récompense supérieure des trajectoires couronnées de succès, pas chaque trajectoire réussie. Classez les traces réussies par reward et prenez une fraction (le pattern Agent-lightning) plutôt que chaque trace qui a simplement franchi la barre de réussite — une trace à peine réussie est un signal SFT plus faible qu'une qui a bien dépassé le seuil.
- Les échecs corrigés par un expert deviennent directement des exemples SFT d'or (le pattern Langfuse) — quand un humain édite la sortie d'une trace échouée en une correcte, cette correction n'a besoin d'aucun seuil de reward ; un humain l'a déjà validée. Routez les corrections directement dans l'ensemble SFT.
- Le masquage au niveau des étapes bénéficie plus que l'abandon de trajectoire entière pour les traces multi-étapes. Quand seulement certaines étapes dans une trajectoire multi-étape sont mauvaises, masquez la perte sur les mauvaises étapes et conservez les bonnes, plutôt que de jeter la trajectoire entière. SRFT rapporte 32,2 % vs. 30,9 % sur SWE-bench pour le masquage du critique au niveau des étapes comparé à l'abandon de trajectoire — un écart réel, bien que modeste, de la découpe plus fine.
Paires de Préférence à partir de Traces
- Construisez des paires à partir de trajectoires réussie-vs-échouée sur la MÊME tâche, jamais à partir de traces sans rapport avec les meilleures et pires scores tirées de différentes tâches — les paires cross-task apprennent au modèle à préférer une tâche à une autre, pas une réponse à une autre.
- Sélectionnez le membre rejeté à
μ−2σ de la distribution de reward
pour cette tâche, jamais le
minimum absolu.
La section Pair Construction de
preference-optimizationpossède la formule de sélection complète ; cette skill fournit les trajectoires notées qu'elle consomme. - La sélection delta notée par juge coupe le volume des paires sans couper le signal. Notez chaque paire candidate par delta du juge chosen-minus-rejected et conservez seulement le sous-ensemble avec le delta le plus élevé — les 5k supérieurs d'un pool candidat de 16,5k correspondaient au résultat du pool complet. Construisez d'abord l'ensemble candidat complet, puis filtrez par delta ; ne limitez pas la génération à 5k au départ.
Hygiène
- Scannez les secrets et PII avant qu'une ligne ne soit expédiée, et rédigez ce qui est trouvé. Les traces provenant des journaux de production peuvent contenir des credentials, des clés API, des tokens, ou des données client — exécutez un scan secret/PII sur chaque ligne SFT et DPO et rédigez les correspondances ; la conversion échoue fermée (la ligne est supprimée, non expédiée avec le contenu brut) si des champs sensibles restent après rédaction. Ne commitez jamais des secrets.
- Les goldens d'eval ne doivent jamais fuir
dans les données d'entraînement. Tenez
tous les IDs de
eval/goldens.jsonlà l'écart de chaque ensemble SFT et DPO converti — une trace qui apparaît aussi comme un golden s'entraîne sur l'élément exact pour lequel le checkpoint est noté plus tard, gonflant silencieusement chaque exécution d'eval ultérieure. - Dédup par rapport à l'ensemble d'entraînement,
pas seulement dans les lignes nouvellement
converties — correspondance exacte ou
similitude d'embedding, correspondant à
la méthode dedup de
dataset-curation, exécutez sur les données d'entraînement qui existent déjà avant que ce lot ne s'y ajoute. - La provenance entre dans la carte de dataset.
Chaque ligne convertie doit remonter à sa
source
run_idettrace_id— le champ Provenance dedataset-curationvérifie exactement ce lien vers la sortietrace-to-training-data; une ligne sans source traçable n'est pas prête à fusionner.
Skills Connexes
eval-harness-first— produit les traces notées que cette skill convertit ; une trace sans verdict ou reward n'est pas convertible encore, routez-la là-bas avant la conversion.dataset-curation— possède les formats cibles et la carte de dataset que les données de provenance de cette skill alimentent ; les lignes converties doivent correspondre exactement à ses noms de champs du tableau Format Selection, pas une approximation d'eux.preference-optimization— consomme les paires DPO que cette skill construit et possède la formule de sélection de rejet μ−2σ complète référencée ci-dessus.
Les conversions JSONL-to-JSONL travaillées
— trace notée vers ligne SFT, paire de trace vers paire DPO,
correction vers ligne SFT, la
boucle de rejection-sampling, et la vérification de holdout
des goldens — se trouvent dans
references/conversion-recipes.md.