ASD

Dataset Curation

Prepara, formatea y valida datasets para fine-tuning supervisado y entrenamiento de preferencias: formato, plantillas de chat, packing, datos sintéticos y dataset card.

Estrellas
38.8k

en todo el repo

Actividad
56

0–100, la ruta de este skill

Actualizado
el mes pasado

último commit aquí

Commits
1

últimos 90 días

Contexto
2k tok

68 tok en reposo

Paquete
3 archivos

27 KB

Instalar

Funciona con cualquier agente que lea SKILL.md

npx -y skills add wshobson/agents --skill dataset-curation --agent claude-code

Se instala solo en este repositorio.

Qué hace

  • Selecciona el formato de dataset (Instruct, ChatML, pares de preferencia, KTO, prompt-only) según el método de fine-tuning
  • Aplica plantillas de chat y enmascara la pérdida solo en turnos del assistant
  • Configura y valida el packing de secuencias inspeccionando manualmente 5-10 secuencias
  • Aplica reglas para mezclar datos sintéticos sin colapso de calidad
  • Genera un dataset card con los seis campos obligatorios antes del entrenamiento

Úsalo cuando

  • Al convertir datos crudos a formato de entrenamiento
  • Al aplicar plantillas de chat o configurar packing de secuencias
  • Al generar datos sintéticos de entrenamiento
  • Al escribir un dataset card antes de una ejecución de /finetune

No lo uses cuando

  • Cuando aún no se ha elegido el método de fine-tuning (usar primero finetuning-method-selection)

Qué lo activa

Di cualquiera de estas frases y el agente debería cargar este skill.

  • Ayúdame a convertir mis datos a formato ChatML para SFT
  • Necesito preparar un dataset de preferencias para DPO
  • Revisa si mi packing de secuencias está enmascarando bien la pérdida
  • Genera datos sintéticos manteniendo el 25% de datos reales
  • Escribe el dataset card para este run de entrenamiento

SKILL.md

En inglés

Dataset Curation

This skill assumes finetuning-method-selection already routed here — the next step is preparing data, not choosing a method. What follows: format selection by target method, the template/packing mechanics behind the most common silent training failures, rules for mixing in synthetic data without collapse, and the dataset card that closes out Phase 2 before a run starts.

Input: raw examples (demonstrations, preference judgments, or task prompts) plus a routing decision from finetuning-method-selection. Output format: a formatted, packed, validated JSONL dataset plus a completed dataset card — the Phase 2 artifact /finetune checks before launching training.

Format Selection

Method Shape Rows
SFT, single-turn Instruct (instruction/response or prompt/completion) ~1,000+ floor
SFT, multi-turn Conversation / ChatML messages list ~1,000+ floor
DPO / ORPO Preference pair (prompt, chosen, rejected) Method-dependent, see preference-optimization
KTO Unpaired (prompt, completion, label) Method-dependent, see preference-optimization
GRPO / RLVR Prompt-only (prompt + verifier metadata) Method-dependent, see grpo-rlvr-training
  • ~1,000+ rows is the recommended floor for SFT, not a target. Below it, a handful of low-quality or duplicate examples can dominate the gradient; above it, quality over quantity — a smaller verified, deduplicated set beats a larger noisy one.

  • The ChatML shape, for orientation; the other four formats plus a ShareGPT conversion note live in references/formats-and-templates.md:

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

Chat Templates and Loss Masking

Apply the target model's chat template before any concatenation or packing, never after — packing raw text and templating the packed blob afterward corrupts turn boundaries, landing role markers in the wrong place relative to each example.

  • Train on assistant responses only. Mask the loss (-100 in the labels tensor) over system/user turns and the template's own role markers — only assistant-turn content tokens contribute to loss.

  • Template/tokenizer mismatches are a top silent failure mode. A model trained against one chat template but served or evaluated with a different one degrades without erroring. Verify the same template string used in training is applied at inference and eval time.

  • Keep the dataset in messages shape and let the trainer template and mask it (assistant_only_loss=True in current TRL) — pre-rendering to a flat text field destroys the turn boundaries masking needs. Full code sketch: references/formats-and-templates.md. Sanity-check before training — decode only unmasked positions; expect only assistant text:

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

Packing

Without packing, 40–70% of compute is spent on padding — variable-length examples batched at a fixed sequence length waste the gap between each example's length and the batch's max. Packing concatenates multiple examples into one sequence up to the max length, cutting most of that waste.

  • Packing changes batch semantics. A packed sequence can contain several original examples, so "steps per epoch" and any LR schedule keyed to example count shift once packing is on — recompute schedule milestones against packed-sequence count.

  • MANDATORY: decode and manually inspect 5–10 packed sequences before scaling to a full run. Confirm example boundaries land where expected, template markers are intact per sub-example, and the loss mask is still assistant-only within each packed sequence. Not optional — packing bugs are silent (the loss curve looks normal) and only surface in eval quality, hours later:

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

Synthetic Data Rules

  • Keep ≥25% real data as a collapse guard. Training on a growing share of model-generated data without a real-data floor drives measurable quality collapse over successive generations — 25% real is the minimum that holds the line. General-domain replay rows count toward this floor — "real" means "not generated for this task from this student," not "human-authored." An all-synthetic-by-construction dataset can meet the ≥25% floor through replay alone (see references/synthetic-data.md's Replay-Mix Construction recipe); state which rows count as "real" in the dataset card rather than leaving the floor structurally unmeetable.
  • Magpie and rejection sampling are the workhorses. Magpie extracts prompts from the model's own template prior; rejection sampling generates several candidates per prompt and keeps only the ones a filter passes. Both beat naive single-shot generation.
  • Targeted, student-aware generation beats static generation by 1.3–2x sample efficiency — aiming at the student's actual failure modes hits a quality bar with fewer filtered examples.
  • Typical accept rates after filtering run 10–30%. Plan volume accordingly — a 10,000-row target at 15% accept needs ~65,000+ raw generations.
  • Generation-method ranking, filter funnel, replay- mix construction, and distillation pattern: references/synthetic-data.md.

The Dataset Card

Every dataset that reaches training gets a card — the required Phase 2 artifact /finetune checks before launching. The card is not free-form documentation; it MUST carry these fields:

  • Provenance — where every row came from (real source(s), synthetic method(s), or both), traceable to trace-to-training-data output.
  • Counts — total rows, and rows per split (train/eval/held-out) if split.
  • Synthetic/real ratio — the measured ratio, checked against the ≥25% real floor above.
  • Dedup method — exact-match, semantic (embedding threshold), or both; see the filter funnel in references/synthetic-data.md.
  • Template used — the exact chat template string/identifier, kept consistent through inference and eval — this is what ties an eval-harness-first run back to the checkpoint.
  • Packing config — whether packing was used, max sequence length, and confirmation the 5–10-sequence manual inspection above was done.

A dataset missing any of these six fields isn't ready for /finetune — the card is a gate, not a summary written after the fact.

Phase 2 Exit Checklist

Before handing off to /finetune, confirm:

  1. Format matches the method (table above).
  2. Template applied before concatenation.
  3. Loss masked to assistant turns only.
  4. 5–10 packed sequences decoded and read.
  5. ≥25% real data in the final mix.
  6. Dataset card complete — all six fields.

References

  • references/formats-and-templates.md — JSONL examples per format, current-TRL masking code, and the ShareGPT conversion note.
  • references/synthetic-data.md — generation-method ranking, filter funnel, replay-mix construction, and teacher→student distillation pattern.

Related skills: finetuning-method-selection routes here; lora-qlora-recipes, vision-sft, and preference-optimization consume the datasets this skill produces; trace-to-training-data is the provenance source for graded-trajectory datasets; eval-harness-first grades the resulting checkpoint.

Reproducido de wshobson/agents bajo licencia MIT. Leer esta página en markdown.

Archivos

3 archivos en el paquete. Solo se lee SKILL.md al activarse — las referencias se cargan si el skill decide que las necesita.

Antes de instalar

Asume que finetuning-method-selection ya se ejecutó y entregó una decisión de enrutamiento sobre el método a usar.

Detalles

Creador
wshobson
Licencia
MIT
Recursos incluidos
referencias
Repositorio
wshobson/agents
Código fuente
Ver SKILL.md

Etiquetas

Más de wshobson/agents

Este repo incluye 180 skills. Si instalas uno, normalmente ya tienes los demás.

Úsalo al seleccionar y colocar iconos, imágenes, SVGs, diagramas o infografías de apoyo aprobados en un PPTX editable.

Costo de contexto al activarse
344 tok
Tamaño del paquete
2 archivos
Última actualización
hace 26 días
documentos

Úsalo cuando pidan optimizar un prompt, mejorar su rendimiento, diseñar una plantilla, aplicar chain-of-thought, few-shot prompting o técnicas avanzadas de prompt engineering para producción.

Costo de contexto al activarse
1.3k tok
Tamaño del paquete
10 archivos
Última actualización
el mes pasado
herramientas desarrollo

Úsalo al redactar o reparar una especificación JSON con coordenadas explícitas para un PPTX editable.

Costo de contexto al activarse
489 tok
Tamaño del paquete
2 archivos
Última actualización
hace 26 días
documentos

Úsalo para validar o reparar un PPTX editable en cuanto a geometría, accesibilidad, editabilidad nativa, linaje de fuente e integridad del paquete OOXML.

Costo de contexto al activarse
409 tok
Tamaño del paquete
2 archivos
Última actualización
hace 26 días
documentos

Úsalo para analizar un PPTX de referencia en modo solo lectura: estructura, tema, tipografía, ritmo de layout, diagnósticos, catálogos de plantillas derivados o inspección segura del paquete OOXML.

Costo de contexto al activarse
689 tok
Tamaño del paquete
8 archivos
Última actualización
hace 26 días
documentos

Úsalo al preparar la narrativa, las fuentes y el contexto de diseño para un nuevo deck PPTX editable.

Costo de contexto al activarse
415 tok
Tamaño del paquete
2 archivos
Última actualización
hace 26 días
documentos

Skills relacionados

Construye pipelines MLOps de extremo a extremo: preparación de datos, entrenamiento, validación y despliegue en producción del modelo.

Costo de contexto al activarse
1.8k tok
Tamaño del paquete
1 archivo
Última actualización
hace 5 meses
datos analitica

Combina búsqueda vectorial y por palabras clave para mejorar la recuperación. Útil al implementar RAG, motores de búsqueda o cuando ningún enfoque solo basta.

Costo de contexto al activarse
508 tok
Tamaño del paquete
2 archivos
Última actualización
hace 2 meses
datos analitica

Transforma datos en narrativas persuasivas usando visualización, contexto y estructura. Útil al presentar analíticas a stakeholders, crear reportes o presentaciones ejecutivas.

Costo de contexto al activarse
530 tok
Tamaño del paquete
2 archivos
Última actualización
hace 2 meses
datos analitica