Ir al contenido

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:

  1. 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.
  2. 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.
  3. Puntuar. La ejecución puntúa el modelo sobre los ítems reservados de val y test.
  4. 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.
  5. 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ó.
  6. 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:

yaml
model_training:
  enabled: true

Reinicia 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.

La página Training de Potato con sklearn-text, el esquema sentiment y el backend local seleccionados, sobre una tabla de ejecuciones con dos ejecuciones terminadas con puntuaciones sobre ítems reservados de 0,847 y 0,840Dos 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:

TareaEntrenadoresSe trata en
Etiquetas sobre textosklearn-text, hf-text-classification, setfitEntrena tu primer modelo
Spans, relaciones, árboles de conversación y glosashf-token-classification, hf-relation, hf-conversation-tree, byt5-glossEntrenadores
LLM y modelos de recompensallm-sft, llm-dpo, reward-model, prm-rewardAjuste fino de LLM
Imágenes, portaobjetos, microscopía, mapas y diseños de páginahf-image-classification, torchvision-detect, ultralytics-detect, torchvision-segment, ultralytics-segment, cellpose, sam-finetune, layoutlmv3, vlm-sftModelos de visión
Audiohf-audio-tagger, whisper-asr, diarizationModelos de audio
Volúmenes, nubes de puntos y vídeovolume-unet, external-3d, video-trackVolúmenes, nubes de puntos y vídeo
Moléculas, espectros, señales y episodios de robotsrdkit-property, peak-cnn, signal-cnn, episode-modelModelos científicos
Modelos de decisión (Laya, Jev, OpenJev)decision-calibrate, laya-finetune, openjev-finetuneEntrenadores
Modelos que ya ejecutas en otro sitiolabel-studio-ml, hf-inference, openai-vlm-boxes, roboflow, cvat-nuclioTrae 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:

  • local entrena en el servidor de Potato, en un subproceso. device: auto elige primero CUDA, luego Metal de Apple y por último la CPU.
  • ssh entrena 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.
  • slurm se 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 con sbatch. El backend solo llama a sbatch, squeue, scancel y scontrol, de modo que funciona en un clúster sin srun ni sacct.
  • agent sirve a una máquina a la que Potato no puede llegar, como una estación de trabajo tras NAT. potato training agent en 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:

yaml
model_training:
  enabled: true
  writeback:
    schemas: [sentiment]
    min_confidence: 0.6
    include_unlabeled: true

Con 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.

Una reseña de producto en la página de anotación de Potato con Positive ya seleccionado por el modelo, antes de que el anotador haya respondidoUn 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:

yaml
model_training:
  enabled: true
  auto_retrain:
    enabled: true
    trainer: sklearn-text
    schemas: [sentiment]
    update_frequency: 25
    min_interval_s: 600

Con 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:

Más información

Para detalles de implementación, consulta la documentación fuente.