Curso / HF LLM Course / Capítulo 10
● piloto de formato

Hugging Face · LLM Course · Capítulo 10

Curar datasets de alta calidad con Argilla

Uno de los capítulos agregados cuando el curso pasó de "NLP Course" a "LLM Course" — y se nota: convertir juicio humano en un dataset de entrenamiento es, hoy, tan central como el fine-tuning mismo.

1. Por qué curar tu propio dataset

El Hub tiene datasets enormes para casi cualquier tarea genérica — pero "genérico" es exactamente el problema cuando tu caso de uso no lo es. Argilla es la herramienta de Hugging Face para convertir datos sin estructurar en un dataset etiquetado a propósito: pasar de "un montón de texto" a "ejemplos con la etiqueta, el span, o el rating que tu modelo necesita para aprender lo que vos querés", con humanos (o un equipo) en el loop.

2. Levantar Argilla

Argilla se despliega como un Space de Hugging Face (con almacenamiento persistente si no querés perder el trabajo de anotación al reiniciar), y se controla desde Python con su SDK:

!pip install argilla

import argilla as rg

client = rg.Argilla(api_url="https://tu-espacio.hf.space", api_key="...")
client.me  # confirma que la conexión funciona

3. Cargar y configurar el dataset

Un dataset en Argilla se define en dos partes: Fields (lo que el anotador ve — el texto del artículo, la imagen, el audio) y Questions (lo que le pedís que responda — una etiqueta de una lista, un span de texto para NER, un rating). Separar "qué se muestra" de "qué se pide" es lo que permite reusar el mismo dataset base para tareas de anotación completamente distintas.

settings = rg.Settings(
    fields=[rg.TextField(name="texto")],
    questions=[rg.LabelQuestion(name="categoria", labels=["positivo", "negativo"])],
)
dataset = rg.Dataset(name="mi-dataset", settings=settings)
dataset.create()
dataset.records.log(mis_registros)

4. Anotar en equipo

Si más de una persona anota, dos cosas evitan que el dataset final quede inconsistente: unas guías de anotación escritas de antemano (qué cuenta como "positivo" en un caso límite, no dejarlo a criterio de cada uno), y la configuración de distribución — cuántas respuestas independientes necesita cada registro antes de darlo por resuelto, útil para medir acuerdo entre anotadores en los casos ambiguos.

La UI de Argilla permite precargar sugerencias (por ejemplo, la predicción de un modelo ya existente) para que anotar sea corregir en vez de empezar de cero — acelera mucho cuando el modelo base ya acierta la mayoría de los casos fáciles.

5. Usar el dataset anotado

Una vez anotado, filtrás por estado (completado vs. pendiente) y exportás — a un Dataset de la librería datasets del Capítulo 5, o directo de vuelta al Hub con push_to_hub() — cerrando el círculo: los datos que curaste a mano vuelven a ser un dataset más, listo para tokenizar y fine-tunear como cualquier otro del curso.

🔧 Ya armaste tu propia versión de esto, a medida

interpretante-lacaniano resuelve exactamente este problema sin Argilla: el rating 👍/👎 de la UI en Streamlit es la "Question" (juicio humano sobre un registro), curaduria_delegada.py y curar_produccion.py son el paso de filtrar por calidad, y el resultado alimenta directamente el SFT de la siguiente generación — el mismo pipeline "generar → anotar → filtrar → reentrenar" de este capítulo, con una diferencia real: tu curaduría no es solo humana, también filtra por novedad respecto al corpus (una señal automática que Argilla no tiene de fábrica, y que tuviste que construir vos porque tu caso de uso — evitar que el modelo se repita a sí mismo entre generaciones — no es un problema de anotación genérico).

6. Resumen

  1. Curar tu propio dataset tiene sentido cuando lo que hay en el Hub es genérico y tu caso de uso no lo es.
  2. Argilla separa Fields (qué se muestra) de Questions (qué se pide) — la misma separación conceptual que "input" y "target" en cualquier dataset de entrenamiento.
  3. Guías de anotación escritas de antemano y sugerencias precargadas son lo que hace viable anotar en equipo sin que el resultado quede inconsistente.
  4. El pipeline completo — generar, anotar, filtrar, reentrenar — es el mismo que ya corre en interpretante-lacaniano, con Streamlit y scripts propios en vez de Argilla.