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
- Curar tu propio dataset tiene sentido cuando lo que hay en el Hub es genérico y tu caso de uso no lo es.
- 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.
- 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.
- 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.