Entrenamiento de modelos con tus propias anotaciones
Entrena un modelo con las etiquetas de tu estudio desde la página Training del administrador, puntúalo sobre ítems reservados y muestra sus predicciones a los anotadores como preetiquetas.
Novedad de la v2.14.0
El entrenamiento de modelos ajusta un modelo con las etiquetas que tus anotadores ya han dado, lo puntúa sobre ítems reservados que quedan fuera del entrenamiento y puede mostrar las respuestas del modelo a los anotadores como preetiquetas que confirmar o corregir. Esta página explica el ciclo de entrenamiento, la página Training del administrador, los entrenadores agrupados por tarea y la página o el tutorial que cubre cada parte en detalle. Está escrita para responsables de estudios y administradores que gestionan un servidor Potato propio. La página Training y el entrenador sklearn-text forman parte de Potato desde la 2.11. La versión 2.14.0 añade 37 entrenadores, entrenamiento remoto en servidores con GPU y clústeres SLURM, puntuaciones sobre ítems reservados en la tabla de ejecuciones y publicación en Hugging Face Hub.
El ciclo de entrenamiento
Cada vuelta del ciclo entrena un modelo con las etiquetas humanas reunidas hasta el momento y ofrece al siguiente anotador las respuestas del modelo como punto de partida. El ciclo tiene seis pasos:
- Anotar. Los anotadores etiquetan ítems como de costumbre, y Potato resuelve en una sola etiqueta las de varios anotadores sobre un mismo ítem, con Dawid-Skene de forma predeterminada o con un voto mayoritario.
- Entrenar. Una ejecución divide los ítems etiquetados en particiones train, val y test y ajusta el modelo en un proceso aparte. Cada ítem conserva la misma partición de una ejecución a otra, porque la partición es un hash con semilla del ID del ítem.
- Puntuar. La ejecución puntúa el modelo sobre los ítems reservados de val y test.
- Escribir de vuelta. Las predicciones de la ejecución pasan a los datos de cada ítem como preetiquetas de los esquemas que elijas. Se omiten las predicciones por debajo de un umbral mínimo de confianza y las de ítems de la partición train.
- Corregir. El siguiente anotador ve la respuesta del modelo ya rellenada y la confirma o la cambia. Un revisor también puede registrar si el modelo acertó.
- Reentrenar. La siguiente ejecución entrena con las etiquetas nuevas, y todo ítem que un revisor corrigió pasa a la partición train.
Activar el entrenamiento
El entrenamiento de modelos está desactivado de forma predeterminada, y una sola clave de configuración lo activa. Añade este bloque a una configuración existente:
model_training:
enabled: trueReinicia el servidor y abre /admin/training con una sesión de administrador o con la clave de API de administrador. Sin enabled: true, las rutas de entrenamiento no existen. Activar el entrenamiento no cambia nada de lo que ven los anotadores, porque las preetiquetas aparecen solo en los esquemas que figuran en writeback.schemas, y esa lista está vacía de forma predeterminada.
El panel Start a run de la parte superior de la página Training contiene toda la preparación de una ejecución. Schema lista los esquemas de anotación del estudio, Trainer lista los entrenadores que encajan con el tipo y los ítems del esquema elegido, y Runs on lista los lugares donde puede ejecutarse una ejecución. El campo Parameters admite JSON y parte de la entrada del entrenador elegido en model_training.trainer_params. La nota bajo el campo nombra todos los parámetros que admite el entrenador. Train now inicia la ejecución. Una ejecución iniciada mientras otra está en curso espera en una cola y aparece en la tabla de ejecuciones como waiting #N, con un botón Cancel run.
Dos ejecuciones de sklearn-text sobre un esquema de sentimiento, cada una con una puntuación medida sobre reseñas que el modelo nunca vio durante el entrenamiento
Cada ID de ejecución de la tabla abre la página de la ejecución en /admin/training/runs/<run_id>. Esa página muestra el estado, el entrenador, el backend, el tamaño de las particiones, la puntuación sobre ítems reservados y los parámetros de la ejecución, y después todas las métricas que registró y su registro de actividad. Una ejecución fallida añade una sección What went wrong. Desde la página de la ejecución también puedes guardar los ítems val, test o train de la ejecución como versión de un conjunto de datos y publicar el modelo en Hugging Face Hub. Para una primera ejecución completa sobre un proyecto de ejemplo sin GPU, sigue Entrena tu primer modelo.
Entrenadores por tarea
Potato 2.14.0 tiene 38 entrenadores, y el menú Trainer nombra cada uno por su nombre de registro. La tabla agrupa los entrenadores según el tipo de anotación de la que aprende cada uno:
| Tarea | Entrenadores | Se trata en |
|---|---|---|
| Etiquetas sobre texto | sklearn-text, hf-text-classification, setfit | Entrena tu primer modelo |
| Spans, relaciones, árboles de conversación y glosas | hf-token-classification, hf-relation, hf-conversation-tree, byt5-gloss | Entrenadores |
| LLM y modelos de recompensa | llm-sft, llm-dpo, reward-model, prm-reward | Ajuste fino de LLM |
| Imágenes, portaobjetos, microscopía, mapas y diseños de página | hf-image-classification, torchvision-detect, ultralytics-detect, torchvision-segment, ultralytics-segment, cellpose, sam-finetune, layoutlmv3, vlm-sft | Modelos de visión |
| Audio | hf-audio-tagger, whisper-asr, diarization | Modelos de audio |
| Volúmenes, nubes de puntos y vídeo | volume-unet, external-3d, video-track | Volúmenes, nubes de puntos y vídeo |
| Moléculas, espectros, señales y episodios de robots | rdkit-property, peak-cnn, signal-cnn, episode-model | Modelos científicos |
| Modelos de decisión (Laya, Jev, OpenJev) | decision-calibrate, laya-finetune, openjev-finetune | Entrenadores |
| Modelos que ya ejecutas en otro sitio | label-studio-ml, hf-inference, openai-vlm-boxes, roboflow, cvat-nuclio | Trae tu propio modelo |
Los cinco entrenadores de la última fila no ajustan nada. Cada uno envía los ítems reservados a un modelo que se ejecuta en otro lugar, y Potato puntúa, escribe de vuelta y revisa las respuestas como si fueran las de un modelo entrenado. sklearn-text no necesita nada más allá de una instalación básica de Potato, y pip install "potato-annotation[train]" instala lo que necesitan los entrenadores de texto, imagen, audio y LLM. Un entrenador que no está instalado aparece en la página Training como «not installed», con el comando que lo instala. Entrenadores indica los tipos de anotación, los tipos de ítem, el comando de instalación y los parámetros de cada entrenador.
Dónde se ejecutan las ejecuciones
Una ejecución corre en un backend, que se elige por ejecución en el menú Runs on o de forma predeterminada con model_training.backend. Potato tiene cuatro tipos de backend:
localentrena en el servidor de Potato, en un subproceso.device: autoelige primero CUDA, luego Metal de Apple y por último la CPU.sshentrena en un servidor con GPU al que Potato llega con ssh por clave. Potato copia el código fuente de Potato al servidor, inicia allí la ejecución y trae el modelo de vuelta tras una ejecución correcta.slurmse conecta del mismo modo al nodo de acceso de un clúster y envía el trabajo de entrenamiento a un nodo de cómputo consbatch. El backend solo llama asbatch,squeue,scancelyscontrol, de modo que funciona en un clúster sinsrunnisacct.agentsirve a una máquina a la que Potato no puede llegar, como una estación de trabajo tras NAT.potato training agenten esa máquina consulta al servidor si hay trabajos, y los archivos del modelo permanecen en ella.
potato training check <backend> config.yaml prueba un backend antes de la primera ejecución, y el botón Check de la página Training hace lo mismo. Configuración lista todas las claves de backend, y Entrenar en un servidor con GPU o un clúster configura paso a paso los tres tipos remotos.
Puntuaciones sobre ítems reservados
Cada ejecución puntúa el modelo sobre los ítems val y test con una métrica elegida según el tipo de anotación del esquema. Un clasificador de una sola etiqueta recibe macro-F1, un etiquetador de spans recibe F1 de spans, un detector de cajas recibe mAP con IoU 0,5 y un modelo de transcripción recibe 1 menos la tasa de error de palabras. La tabla de ejecuciones muestra una puntuación principal por ejecución, y la página de la ejecución lista cada métrica con la partición en el nombre de la métrica, como val_macro_f1 o test_f1. Un ítem con etiqueta y sin predicción cuenta como error, así que un entrenador no puede subir la puntuación omitiendo los ítems difíciles. Cuando un entrenador elige el mejor punto de control con los ítems val, la puntuación principal sale de los ítems test, porque la puntuación de val ya ha moldeado el modelo. Un entrenador que no elige nada con val, como sklearn-text, toma la puntuación principal de los ítems val. Configuración da las métricas de cada tipo de anotación.
Preetiquetas y la cola de revisión del modelo
Una preetiqueta es la respuesta de un modelo ya rellenada en la página de anotación para que el anotador la confirme o la cambie. La escritura de vuelta convierte las predicciones de una ejecución en preetiquetas de los esquemas que figuran en writeback.schemas, sin necesidad de un bloque pre_annotation. Añade el bloque writeback bajo model_training:
model_training:
enabled: true
writeback:
schemas: [sentiment]
min_confidence: 0.6
include_unlabeled: trueCon este bloque, una predicción de sentiment con una confianza inferior a 0,6 se guarda y no se muestra. include_unlabeled: true hace que cada ejecución prediga también sobre los ítems que nadie ha etiquetado todavía. Sin esa opción, una ejecución predice solo sobre los ítems reservados de val y test. Los ítems de la partición train de una ejecución nunca reciben una preetiqueta, y la escritura de vuelta nunca cambia una etiqueta humana. Una preetiqueta se convierte en la respuesta del anotador solo cuando este la edita o pasa al siguiente ítem.
Un anotador nuevo ve seleccionada la respuesta del modelo y la confirma o la cambia
assignment_strategy: model_review sirve los ítems preetiquetados a los revisores empezando por los de menor confianza. Un revisor registra un veredicto de accept, correct o reject en cada ítem. Una preetiqueta rechazada se retira del ítem y no vuelve a mostrarse. Toda ejecución posterior entrena con un ítem que tenga el veredicto correct y nunca puntúa el modelo sobre ese ítem. Las preetiquetas inclinan a los anotadores hacia la respuesta del modelo. Activa include_unlabeled cuando la puntuación sobre ítems reservados respalde al modelo, y usa Cómo distinguir la revisión del sellado automático en datos preetiquetados para encontrar anotadores que aceptan preetiquetas sin leerlas. El modelo en el ciclo recorre la escritura de vuelta, la revisión y el reentrenamiento en un mismo proyecto.
Reentrenar a medida que llegan anotaciones
auto_retrain inicia ejecuciones automáticamente a medida que entran anotaciones, y cada ejecución nueva sustituye las preetiquetas de la anterior. Añade el bloque bajo model_training:
model_training:
enabled: true
auto_retrain:
enabled: true
trainer: sklearn-text
schemas: [sentiment]
update_frequency: 25
min_interval_s: 600Con estos valores, una ejecución empieza cuando han llegado 25 anotaciones desde la última ejecución automática y han pasado 600 segundos desde que terminó la última ejecución. Configuración lista todas las claves de auto_retrain y los motivos por los que una comprobación omite una ejecución, y El modelo en el ciclo muestra cuándo conviene activar el reentrenamiento.
Publicar un modelo en Hugging Face Hub
Una ejecución correcta cuyo modelo está en el servidor de Potato tiene en su página un formulario Publish to the Hugging Face Hub. La subida envía los pesos, la configuración y los archivos del tokenizador del modelo, además de un README.md con una ficha del modelo escrita a partir de la ejecución. La ficha nombra el entrenador, el modelo base, los esquemas, las etiquetas, el tamaño de las particiones y la puntuación sobre ítems reservados. Las predicciones de la ejecución y cualquier copia de los datos de entrenamiento permanecen en el servidor.
Escribes el nombre del repositorio dos veces, y la subida sigue adelante solo cuando los dos nombres coinciden. Private viene marcado de forma predeterminada, y el token de Hugging Face procede de una variable de entorno del servidor (HF_TOKEN de forma predeterminada) y no de la página. Un modelo que se quedó en un host remoto o en una máquina con agente no puede subirse desde la página de la ejecución. Configuración lista qué archivos se suben y la ruta de la API, y Ajuste fino de un LLM con tus anotaciones recorre una subida de principio a fin.
Entrenamiento de modelos y motor de etiquetado
El motor de etiquetado usa los mismos entrenadores. Con la destilación activada (features.distill), el motor ajusta un modelo con un entrenador (sklearn-text de forma predeterminada) sobre las etiquetas humanas del motor y sobre las etiquetas de máquina que certificó un contrato, y después coloca el modelo delante de la cascada configurada como una fuente trained. Los ítems de las particiones de certificación y auditoría del motor nunca entran en el conjunto de entrenamiento de la destilación. Una fuente trained también puede cargar un modelo de una ejecución de entrenamiento, con el directorio del modelo de la ejecución como artifact_dir. Configuración del motor de etiquetado lista las claves de destilación.
Entrenamiento de modelos y aprendizaje activo
La función de aprendizaje activo de Potato ajusta un modelo con las etiquetas del estudio con un propósito más limitado que el entrenamiento de modelos. El aprendizaje activo ajusta un clasificador de scikit-learn dentro del proceso del servidor cada update_frequency anotaciones y lo usa para reordenar la cola, con los ítems más inciertos primero. Los anotadores reciben la cola reordenada solo con assignment_strategy: active_learning. El clasificador del aprendizaje activo se puntúa sobre los ítems con los que se ajustó, y sus predicciones nunca se muestran a los anotadores.
El entrenamiento de modelos ejecuta cualquiera de los 38 entrenadores en un proceso aparte o en otra máquina, puntúa el modelo sobre ítems reservados y muestra las respuestas del modelo como preetiquetas. El entrenamiento de modelos también puede ordenar la cola. Con assignment_strategy: llm_confidence, van primero los ítems cuya preetiqueta publicada tiene menor confianza. El parámetro acquisition de hf-text-classification y hf-image-classification sustituye ese orden por una puntuación de margen, entropía, BALD o core-set. Usa el aprendizaje activo para decidir qué ítems etiqueta la gente a continuación. Usa el entrenamiento de modelos cuando necesites un modelo puntuado sobre ítems reservados, preetiquetas para los anotadores o un modelo que publicar.
Tutoriales
Cada tutorial recorre una configuración desde la instalación hasta una ejecución puntuada:
- Entrena tu primer modelo con tus anotaciones entrena
sklearn-textsobre un estudio de sentimiento, sin GPU. - Entrenar en un servidor con GPU, un clúster SLURM o una máquina tras NAT configura un servidor con GPU por ssh, un clúster SLURM y un agente que consulta al servidor.
- Etiquetado con el modelo en el ciclo: preetiquetas y reentrenamiento cubre la escritura de vuelta, la revisión, la adquisición,
auto_retrainy las versiones de conjuntos de datos. - Ajuste fino de un LLM con tus anotaciones entrena modelos SFT, DPO, de recompensa y de recompensa por procesos, con QLoRA y subida a Hub.
- Entrena modelos de detección y segmentación con anotaciones de imágenes entrena detectores y segmentadores sobre imágenes, portaobjetos, microscopía y mapas, además de Cellpose, SAM, LayoutLMv3 y modelos de visión y lenguaje.
- Entrena modelos de voz y audio con tus anotaciones entrena Whisper, diarización de hablantes, detectores sobre espectrogramas y etiquetadores de audio, con archivos RTTM.
- Entrena modelos sobre volúmenes, nubes de puntos y vídeo entrena
volume-unet,external-3dyvideo-track. - Entrena modelos sobre moléculas, espectros, señales y episodios de robots entrena
rdkit-property,peak-cnn,signal-cnnyepisode-model. - Preetiquetas y puntuaciones sobre ítems reservados de un modelo que ya ejecutas conecta un modelo que ya sirves mediante un puente de inferencia o
label-studio-ml. - Ajuste fino con privacidad diferencial y Opacus entrena un clasificador con el parámetro
dpy Opacus.
Más información
- Entrenadores - Los 38 entrenadores, agrupados por tarea
- Configuración - Todas las claves de
model_training, los backends, las rutas y las rutas de almacenamiento - Aprendizaje activo - Reordenar la cola con un clasificador de scikit-learn
- Preanotación con LLM y visión - Preetiquetas de un LLM o de un modelo de visión en lugar de un modelo entrenado
- El motor de etiquetado - Etiquetas de máquina puestas a prueba frente a una muestra ciega de etiquetas humanas
- Simulador de usuarios - Anotadores simulados para probar el ciclo antes de que empiecen los anotadores reales
Para detalles de implementación, consulta la documentación fuente.