CommunityRédaction et éditiongithub.com

wshobson/curation-de-jeu-de-donnees

Préparer, formater et valider des jeux de données pour le fine-tuning supervisé et l'entraînement préférentiel. À utiliser lors de la conversion de données brutes en format d'entraînement, l'application de templates de chat, la configuration du packing de séquences, la génération de données synthétiques d'entraînement ou la rédaction d'une fiche de jeu de données avant un lancement.

Qu'est-ce que curation-de-jeu-de-donnees ?

Cette compétence est conçue pour les ingénieurs ML et les agents AI qui préparent des jeux de données pour le fine-tuning, en supposant que la méthode de fine-tuning a déjà été sélectionnée. Elle couvre la sélection du format en fonction de la méthode cible (SFT, DPO, etc.), l'application correcte des templates de chat avec masquage des pertes, le packing de séquences pour économiser du calcul, la génération de données synthétiques avec règles anti-effondrement, et la rédaction d'une fiche de jeu de données standardisée. Le SKILL.md met en garde contre les modes de défaillance silencieuse courants comme les décalages de templates, le packing incorrect et la contamination par données synthétiques, et fournit des extraits de code Python pour la vérification. Le résultat est un fichier JSONL formaté, packé et validé, accompagné d'une fiche de jeu de données, prêt à être transmis à la phase d'entraînement par lots. La compétence s'intègre avec d'autres outils comme `finetuning-method-selection`, `lora-qlora-recipes` et `eval-harness-first`, et est destinée à être utilisée dans des pipelines de fine-tuning comme ceux de Claude Code, Cursor ou Codex.

Compatible avec~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/wshobson/agents/tree/main/plugins/llm-finetuning/skills/dataset-curation

Installed? Explore more Rédaction et édition skills: steipete/notion, langchain-ai/langchain, bytedance/podcast-generation · View all 6 →

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Curation de Jeu de Données

Cette compétence suppose que finetuning-method-selection a déjà orienté ici — l'étape suivante est la préparation des données, pas le choix de la méthode. Ce qui suit : la sélection du format par méthode cible, les mécanismes de template/packing derrière les échecs d'entraînement silencieux les plus courants, les règles pour mélanger des données synthétiques sans effondrement, et la fiche de jeu de données qui clôt la Phase 2 avant le lancement d'un run.

Entrée : exemples bruts (démonstrations, jugements de préférence ou invites de tâche) plus une décision de routage provenant de finetuning-method-selection. Format de sortie : un fichier JSONL formaté, packé et validé, plus une fiche de jeu de données complétée — l'artefact de Phase 2 que /finetune vérifie avant de lancer l'entraînement.

Sélection du Format

MéthodeFormeLignes
SFT, tour uniqueInstruct (instruction/response ou prompt/completion)~1 000+ minimum
SFT, tours multiplesConversation / liste ChatML messages~1 000+ minimum
DPO / ORPOPaire de préférence (prompt, chosen, rejected)Dépend de la méthode, voir preference-optimization
KTONon apparié (prompt, completion, label)Dépend de la méthode, voir preference-optimization
GRPO / RLVRInvite uniquement (prompt + métadonnées de vérificateur)Dépend de la méthode, voir grpo-rlvr-training
  • ~1 000+ lignes est le minimum recommandé pour SFT, pas un objectif. En dessous, une poignée d'exemples de faible qualité ou dupliqués peut dominer le gradient ; au-dessus, la qualité plutôt que la quantité — un petit ensemble vérifié et dédupliqué bat un grand ensemble bruité.

  • La forme ChatML, pour orientation ; les quatre autres formats plus une note de conversion ShareGPT se trouvent dans references/formats-and-templates.md :

    {"messages": [
      {"role": "user", "content": "..."},
      {"role": "assistant", "content": "..."}
    ]}
    

Templates de Chat et Masquage des Pertes

Appliquez le template de chat du modèle cible avant toute concaténation ou packing, jamais après — packer du texte brut puis templater le blob packé corrompt les limites de tour, plaçant les marqueurs de rôle au mauvais endroit par rapport à chaque exemple.

  • Entraînez-vous uniquement sur les réponses de l'assistant. Masquez la perte (-100 dans le tenseur des étiquettes) sur les tours système/utilisateur et les propres marqueurs de rôle du template — seuls les jetons de contenu des tours assistant contribuent à la perte.

  • Les décalages template/tokenizer sont un mode de défaillance silencieuse majeur. Un modèle entraîné avec un template de chat mais servi ou évalué avec un autre se dégrade sans générer d'erreur. Vérifiez que la même chaîne de template utilisée en entraînement est appliquée en inférence et en évaluation.

  • Conservez le jeu de données sous forme messages et laissez l'entraîneur le templater et le masquer (assistant_only_loss=True dans TRL actuel) — le pré-rendu en un champ texte plat détruit les limites de tour dont le masquage a besoin. Esquisse de code complète : references/formats-and-templates.md. Vérifiez avant l'entraînement — décodez uniquement les positions non masquées ; attendez-vous uniquement au texte de l'assistant :

    keep = batch["labels"][0] != -100
    print(tokenizer.decode(batch["input_ids"][0][keep]))
    

Packing

Sans packing, 40 à 70 % du calcul est gaspillé en padding — des exemples de longueur variable regroupés par lots à une longueur de séquence fixe gaspillent l'écart entre la longueur de chaque exemple et le maximum du lot. Le packing concatène plusieurs exemples en une seule séquence jusqu'à la longueur maximale, réduisant la majeure partie de ce gaspillage.

  • Le packing modifie la sémantique du lot. Une séquence packée peut contenir plusieurs exemples originaux, donc le « nombre de pas par époque » et tout programme de taux d'apprentissage indexé sur le nombre d'exemples changent une fois le packing activé — recalculez les jalons du programme par rapport au nombre de séquences packées.

  • OBLIGATOIRE : décodez et inspectez manuellement 5 à 10 séquences packées avant de passer à un run complet. Confirmez que les limites des exemples sont à l'endroit attendu, que les marqueurs de template sont intacts par sous-exemple, et que le masque de perte est toujours limité à l'assistant dans chaque séquence packée. Pas optionnel — les bugs de packing sont silencieux (la courbe de perte semble normale) et n'apparaissent que dans la qualité d'évaluation, des heures plus tard :

    for seq in packed_dataset.select(range(10)):
        print(tokenizer.decode(seq["input_ids"]))
    

Règles pour les Données Synthétiques

  • Conservez ≥25 % de données réelles comme garde-fou contre l'effondrement. S'entraîner sur une part croissante de données générées par un modèle sans un plancher de données réelles entraîne un effondrement mesurable de la qualité sur les générations successives — 25 % de données réelles est le minimum qui tient la ligne. Les lignes de rejeu de domaine général comptent dans ce plancher — « réel » signifie « non généré pour cette tâche à partir de ce modèle étudiant », pas « rédigé par un humain ». Un jeu de données entièrement synthétique par construction peut atteindre le plancher de ≥25 % rien qu'avec du rejeu (voir la recette de construction de mélange par rejeu dans references/synthetic-data.md) ; indiquez quelles lignes comptent comme « réelles » dans la fiche de jeu de données plutôt que de laisser le plancher structurellement inaccessible.
  • Magpie et l'échantillonnage par rejet sont les chevaux de bataille. Magpie extrait des invites du template antérieur du modèle lui-même ; l'échantillonnage par rejet génère plusieurs candidats par invite et ne conserve que ceux qu'un filtre valide. Les deux surpassent la génération naïve en un seul passage.
  • La génération ciblée et consciente de l'étudiant surpasse la génération statique d'un facteur 1,3 à 2 en efficacité d'échantillonnage — viser les modes d'échec réels de l'étudiant atteint un seuil de qualité avec moins d'exemples filtrés.
  • Les taux d'acceptation typiques après filtrage se situent entre 10 et 30 %. Planifiez le volume en conséquence — un objectif de 10 000 lignes avec un taux d'acceptation de 15 % nécessite environ 65 000+ générations brutes.
  • Classement des méthodes de génération, entonnoir de filtrage, construction du mélange par rejeu et schéma de distillation : references/synthetic-data.md.

La Fiche de Jeu de Données

Chaque jeu de données qui parvient à l'entraînement reçoit une fiche — l'artefact requis de Phase 2 que /finetune vérifie avant le lancement. La fiche n'est pas une documentation libre ; elle DOIT contenir ces champs :

  • Provenance — d'où chaque ligne provient (source(s) réelle(s), méthode(s) synthétique(s) ou les deux), traçable jusqu'à la sortie de trace-to-training-data.
  • Comptages — nombre total de lignes et lignes par division (entraînement/évaluation/mise de côté) si divisé.
  • Ratio synthétique/réel — le ratio mesuré, vérifié par rapport au plancher de ≥25 % de données réelles ci-dessus.
  • Méthode de déduplication — correspondance exacte, sémantique (seuil d'embedding) ou les deux ; voir l'entonnoir de filtrage dans references/synthetic-data.md.
  • Template utilisé — la chaîne/identifiant exact du template de chat, maintenu cohérent tout au long de l'inférence et de l'évaluation — c'est ce qui relie un run eval-harness-first au checkpoint.
  • Configuration de packing — si le packing a été utilisé, longueur maximale de séquence et confirmation que l'inspection manuelle des 5 à 10 séquences ci-dessus a été effectuée.

Un jeu de données auquel il manque un de ces six champs n'est pas prêt pour /finetune — la fiche est une porte, pas un résumé rédigé après coup.

Liste de Vérification de Sortie de Phase 2

Avant de passer le relais à /finetune, confirmez :

  1. Le format correspond à la méthode (tableau ci-dessus).
  2. Template appliqué avant concaténation.
  3. Perte masquée uniquement sur les tours assistant.
  4. 5 à 10 séquences packées décodées et lues.
  5. ≥25 % de données réelles dans le mélange final.
  6. Fiche de jeu de données complète — les six champs.

Références

  • references/formats-and-templates.md — exemples JSONL par format, code de masquage TRL actuel et note de conversion ShareGPT.
  • references/synthetic-data.md — classement des méthodes de génération, entonnoir de filtrage, construction du mélange par rejeu et schéma de distillation enseignant→étudiant.

Compétences connexes : finetuning-method-selection achemine ici ; lora-qlora-recipes, vision-sft et preference-optimization consomment les jeux de données que cette compétence produit ; trace-to-training-data est la source de provenance pour les jeux de données de trajectoires notées ; eval-harness-first évalue le checkpoint résultant.

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

wshobson/accessibility-compliance

Implement WCAG 2.2 compliant interfaces with mobile accessibility, inclusive design patterns, and assistive technology support. Use when auditing accessibility, implementing ARIA patterns, building for screen readers, or ensuring inclusive user experiences.

wshobson/airflow-dag-patterns

Build production Apache Airflow DAGs with best practices for operators, sensors, testing, and deployment. Use when creating data pipelines, orchestrating workflows, or scheduling batch jobs.

wshobson/angular-migration

Migrate from AngularJS to Angular using hybrid mode, incremental component rewriting, and dependency injection updates. Use when upgrading AngularJS applications, planning framework migrations, or modernizing legacy Angular code.

wshobson/anti-reversing-techniques

Understand anti-reversing, obfuscation, and protection techniques encountered during software analysis. Use this skill when analyzing malware evasion techniques, when implementing anti-debugging protections for CTF challenges, when reverse engineering packed binaries, or when building security research tools that need to detect virtualized environments.

wshobson/api-design-principles

Master REST and GraphQL API design principles to build intuitive, scalable, and maintainable APIs that delight developers. Use when designing new APIs, reviewing API specifications, or establishing API design standards.

wshobson/architecture-decision-records

Write and maintain Architecture Decision Records (ADRs) following best practices for technical decision documentation. Use when documenting significant technical decisions, reviewing past architectural choices, or establishing decision processes.

wshobson/architecture-patterns

Implement proven backend architecture patterns including Clean Architecture, Hexagonal Architecture, and Domain-Driven Design. Use this skill when designing clean architecture for a new microservice, when refactoring a monolith to use bounded contexts, when implementing hexagonal or onion architecture patterns, or when debugging dependency cycles between application layers.

wshobson/async-python-patterns

Master Python asyncio, concurrent programming, and async/await patterns for high-performance applications. Use when building async APIs, concurrent systems, or I/O-bound applications requiring non-blocking operations.

wshobson/attack-tree-construction

Build comprehensive attack trees to visualize threat paths. Use when mapping attack scenarios, identifying defense gaps, or communicating security risks to stakeholders.

wshobson/auth-implementation-patterns

Master authentication and authorization patterns including JWT, OAuth2, session management, and RBAC to build secure, scalable access control systems. Use when implementing auth systems, securing APIs, or debugging security issues.

wshobson/avoid-ai-writing

Audit and rewrite prose so it stops reading as machine-generated. Use this skill when asked to remove AI-isms, clean up AI writing, edit a draft for AI tells, audit a README, changelog, release note, PR description, or blog post for machine-sounding prose, or make text sound less like AI. Supports a detect-only mode, a rewrite mode, and an edit-in-place mode, with optional voice and context profiles.

wshobson/backtesting-frameworks

Build robust backtesting systems for trading strategies with proper handling of look-ahead bias, survivorship bias, and transaction costs. Use when developing trading algorithms, validating strategies, or building backtesting infrastructure.

wshobson/bash-defensive-patterns

Master defensive Bash programming techniques for production-grade scripts. Use when writing robust shell scripts, CI/CD pipelines, or system utilities requiring fault tolerance and safety.

wshobson/bats-testing-patterns

Master Bash Automated Testing System (Bats) for comprehensive shell script testing. Use when writing tests for shell scripts, CI/CD pipelines, or requiring test-driven development of shell utilities.

wshobson/bazel-build-optimization

Optimize Bazel builds for large-scale monorepos. Use when configuring Bazel, implementing remote execution, or optimizing build performance for enterprise codebases.

wshobson/before-you-build

Pre-build product and feature risk review for founders, product managers, and AI-assisted builders. Use this skill when the user is about to build a landing page, MVP, SaaS product, internal tool, agent workflow, or major feature and needs to check demand, positioning, monetization, retention, trust, distribution, and adoption risk before implementation starts.

wshobson/billing-automation

Build automated billing systems for recurring payments, invoicing, subscription lifecycle, and dunning management. Use when implementing subscription billing, automating invoicing, or managing recurring payment systems.

wshobson/binary-analysis-patterns

Master binary analysis patterns including disassembly, decompilation, control flow analysis, and code pattern recognition. Use when analyzing executables, understanding compiled code, or performing static analysis on binaries.

wshobson/block-no-verify-hook

Configure a PreToolUse hook to prevent AI agents from skipping git pre-commit hooks with --no-verify and other bypass flags. Use when setting up Claude Code projects that enforce commit quality gates.

wshobson/brand-landingpage

Brand-first landing page designer — runs a brand-identity interview (colors, typography, shape language), then generates and iterates on a polished landing page via Stitch with deployment-ready HTML. Use when the user asks to create, design, or build a landing page, homepage, or marketing page and has no established visual direction. Skip when they have a design mockup, need a dashboard or app UI, are working at component level, building a multi-page app, or restyling with known design tokens — use frontend-design instead.

Skills associés