CommunityRedacción y edicióngithub.com

wshobson/curatedón-de-datasets

Prepare, formatear y validar datasets para fine-tuning supervisado y entrenamiento de preferencias. Úsalo al convertir datos brutos en formato de entrenamiento, aplicar plantillas de chat, configurar empaquetado de secuencias, generar datos sintéticos de entrenamiento o escribir una ficha de dataset antes de una ejecución.

¿Qué es curatedón-de-datasets?

Este skill, diseñado para agentes de IA como Claude Code, Cursor o Codex, guía el proceso de curación de datasets desde la salida de `finetuning-method-selection` hasta un dataset listo para entrenamiento. Su función principal es transformar datos brutos (ejemplos de demostración, juicios de preferencia o prompts de tarea) en un archivo JSONL formateado, empaquetado y validado, acompañado de una ficha de dataset completa. Es crucial porque aborda fallos silenciosos comunes en el entrenamiento: mala aplicación de plantillas de chat, pérdida de enmascaramiento en asistentes, y errores de empaquetado que solo se detectan horas después en la calidad de evaluación. El skill soporta métodos como SFT, DPO, ORPO, KTO y GRPO/RLVR, y proporciona reglas claras para mezclar datos sintéticos sin colapso (mínimo 25% de datos reales), junto con un checklist de salida de la Fase 2 que verifica formato, plantilla, enmascaramiento, empaquetado, proporción sintético/real y completitud de la ficha. Se basa en referencias detalladas para formatos y plantillas, y su uso es esencial antes de lanzar cualquier ejecución de fine-tuning.

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

Installed? Explore more Redacción y edición skills: steipete/notion, langchain-ai/langchain, bytedance/podcast-generation · View all 6 →

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

Curación de Datasets

Este skill asume que finetuning-method-selection ya te ha dirigido aquí — el siguiente paso es preparar los datos, no elegir un método. A continuación: selección de formato según el método objetivo, los mecanismos de plantilla/empaquetado detrás de los fallos silenciosos más comunes en entrenamiento, reglas para mezclar datos sintéticos sin colapso, y la ficha de dataset que cierra la Fase 2 antes de que comience una ejecución.

Entrada: ejemplos brutos (demostraciones, juicios de preferencia o prompts de tarea) más una decisión de enrutamiento de finetuning-method-selection. Formato de salida: un dataset JSONL formateado, empaquetado y validado, más una ficha de dataset completada — el artefacto de la Fase 2 que /finetune verifica antes de lanzar el entrenamiento.

Selección de Formato

MétodoFormaFilas
SFT, una sola vueltaInstruct (instruction/response o prompt/completion)~1,000+ mínimo
SFT, múltiples vueltasLista de mensajes de Conversación/ChatML (messages)~1,000+ mínimo
DPO / ORPOPar de preferencia (prompt, chosen, rejected)Depende del método, ver preference-optimization
KTONo apareado (prompt, completion, label)Depende del método, ver preference-optimization
GRPO / RLVRSolo prompt (prompt + metadatos de verificador)Depende del método, ver grpo-rlvr-training
  • ~1,000+ filas es el mínimo recomendado para SFT, no un objetivo. Por debajo de eso, un puñado de ejemplos de baja calidad o duplicados pueden dominar el gradiente; por encima, calidad sobre cantidad — un conjunto más pequeño, verificado y deduplicado supera a uno más grande y ruidoso.

  • La forma ChatML, para orientación; los otros cuatro formatos más una nota de conversión a ShareGPT están en references/formats-and-templates.md:

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

Plantillas de Chat y Enmascaramiento de Pérdida

Aplica la plantilla de chat del modelo objetivo antes de cualquier concatenación o empaquetado, nunca después — empaquetar texto bruto y luego aplicar la plantilla al bloque empaquetado corrompe los límites de las vueltas, colocando los marcadores de rol en el lugar incorrecto con respecto a cada ejemplo.

  • Entrena solo en respuestas del asistente. Enmascara la pérdida (-100 en el tensor de etiquetas) sobre los turnos del sistema/usuario y los marcadores de rol de la propia plantilla — solo los tokens de contenido del asistente contribuyen a la pérdida.

  • Los desajustes plantilla/tokenizador son el principal modo de fallo silencioso. Un modelo entrenado con una plantilla de chat pero servido o evaluado con otra diferente se degrada sin dar error. Verifica que la misma cadena de plantilla utilizada en el entrenamiento se aplique en inferencia y evaluación.

  • Mantén el dataset en forma de messages y deja que el entrenador aplique la plantilla y el enmascaramiento (assistant_only_loss=True en TRL actual) — prerenderizar a un campo de texto plano destruye los límites de vueltas que el enmascaramiento necesita. Bosquejo de código completo: references/formats-and-templates.md. Haz una verificación de cordura antes del entrenamiento — decodifica solo las posiciones no enmascaradas; espera solo texto del asistente:

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

Empaquetado

Sin empaquetado, el 40–70% del cómputo se gasta en relleno — ejemplos de longitud variable agrupados en una longitud fija de secuencia desperdician el espacio entre la longitud de cada ejemplo y el máximo del lote. El empaquetado concatena múltiples ejemplos en una sola secuencia hasta la longitud máxima, reduciendo la mayor parte de ese desperdicio.

  • El empaquetado cambia la semántica de los lotes. Una secuencia empaquetada puede contener varios ejemplos originales, por lo que "pasos por época" y cualquier programación de tasa de aprendizaje (LR schedule) ligada al conteo de ejemplos cambian una vez que se activa el empaquetado — recalcula los hitos del programa contra el conteo de secuencias empaquetadas.

  • OBLIGATORIO: decodifica e inspecciona manualmente 5–10 secuencias empaquetadas antes de escalar a una ejecución completa. Confirma que los límites de los ejemplos estén donde se espera, que los marcadores de plantilla estén intactos por sub-ejemplo, y que la máscara de pérdida siga siendo solo del asistente dentro de cada secuencia empaquetada. No es opcional — los errores de empaquetado son silenciosos (la curva de pérdida parece normal) y solo se manifiestan en la calidad de evaluación, horas después:

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

Reglas para Datos Sintéticos

  • Mantén ≥25% de datos reales como protección contra colapso. Entrenar con una proporción creciente de datos generados por el modelo sin un mínimo de datos reales provoca un colapso medible de calidad en generaciones sucesivas — el 25% real es el mínimo que mantiene la línea. Las filas de repetición de dominio general cuentan para este mínimo — "real" significa "no generado para esta tarea desde este estudiante," no "creado por un humano." Un dataset completamente sintético por construcción puede cumplir el mínimo del ≥25% solo mediante repetición (ver la receta de Construcción de Mezcla de Repetición en references/synthetic-data.md); indica qué filas cuentan como "reales" en la ficha del dataset en lugar de dejar el mínimo estructuralmente inalcanzable.
  • Magpie y el muestreo por rechazo son los caballos de batalla. Magpie extrae prompts del prior de plantilla del propio modelo; el muestreo por rechazo genera varios candidatos por prompt y conserva solo aquellos que pasan un filtro. Ambos superan a la generación simple de una sola pasada.
  • La generación dirigida y consciente del estudiante es 1.3–2x más eficiente en muestras que la generación estática — apuntar a los modos de fallo reales del estudiante alcanza un nivel de calidad con menos ejemplos filtrados.
  • Las tasas de aceptación típicas después del filtrado oscilan entre el 10% y el 30%. Planifica el volumen en consecuencia — un objetivo de 10,000 filas con un 15% de aceptación necesita ~65,000+ generaciones brutas.
  • Ranking de métodos de generación, embudo de filtrado, construcción de mezcla de repetición y patrón de destilación: references/synthetic-data.md.

La Ficha del Dataset

Cada dataset que llega al entrenamiento recibe una ficha — el artefacto requerido de la Fase 2 que /finetune verifica antes de lanzar. La ficha no es documentación libre; DEBE incluir estos campos:

  • Procedencia — de dónde vino cada fila (fuente(s) real(es), método(s) sintético(s) o ambos), trazable hasta la salida de trace-to-training-data.
  • Conteos — total de filas, y filas por división (entrenamiento/evaluación/retención) si está dividido.
  • Proporción sintético/real — la proporción medida, verificada contra el mínimo del ≥25% real anterior.
  • Método de deduplicación — coincidencia exacta, semántica (umbral de embedding) o ambas; ver el embudo de filtrado en references/synthetic-data.md.
  • Plantilla utilizada — la cadena/identificador exacto de la plantilla de chat, mantenido consistente a través de inferencia y evaluación — esto es lo que vincula una ejecución de eval-harness-first con el checkpoint.
  • Configuración de empaquetado — si se usó empaquetado, longitud máxima de secuencia, y confirmación de que se realizó la inspección manual de 5–10 secuencias anterior.

Un dataset que carezca de alguno de estos seis campos no está listo para /finetune — la ficha es una puerta de control, no un resumen escrito después del hecho.

Lista de Verificación de Salida de la Fase 2

Antes de pasar a /finetune, confirma:

  1. El formato coincide con el método (tabla anterior).
  2. La plantilla se aplicó antes de la concatenación.
  3. La pérdida está enmascarada solo a los turnos del asistente.
  4. Se decodificaron y leyeron 5–10 secuencias empaquetadas.
  5. ≥25% de datos reales en la mezcla final.
  6. La ficha del dataset está completa — los seis campos.

Referencias

  • references/formats-and-templates.md — ejemplos JSONL por formato, código de enmascaramiento con TRL actual, y la nota de conversión a ShareGPT.
  • references/synthetic-data.md — ranking de métodos de generación, embudo de filtrado, construcción de mezcla de repetición, y patrón de destilación profesor→alumno.

Skills relacionados: finetuning-method-selection te enruta aquí; lora-qlora-recipes, vision-sft y preference-optimization consumen los datasets que este skill produce; trace-to-training-data es la fuente de procedencia para datasets de trayectorias calificadas; eval-harness-first evalúa el checkpoint resultante.

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 relacionados