Ultralytics YOLO27: Únete a la lista de espera.
Get Started
Desarrolla con Ultralytics Platform·Entrenar y evaluar·Lección 5/10
Lecciónintermedio

Entrenar, interpretar y ajustar ejecuciones

Inicia una ejecución en la nube con un presupuesto definido, evalúala a partir de las curvas por época y realiza un ajuste fino sin que el optimizador predeterminado ignore tu tasa de aprendizaje.

Una GPU en la nube se factura por cada minuto que sigue ejecutándose un entrenamiento condenado al fracaso; el error más habitual al ajustar un modelo no cuesta nada, pero desperdicia la ejecución en silencio: el optimizador predeterminado ignora la tasa de aprendizaje que configuras. En esta lección entrenarás un modelo real con el conjunto de datos medical pills, interpretarás sus curvas con una regla de decisión y ajustarás el modelo para que se apliquen tus parámetros.

Resultado

Puedes iniciar una ejecución de entrenamiento en Platform con un coste conocido, decidir a partir de sus curvas si debes detenerla, continuarla o conservarla, y realizar un ajuste fino a partir de un modelo anterior con la tasa de aprendizaje que quieres.

Vía rápida
Si ya tienes experiencia, aquí tienes un resumen.
  1. Haz clic en New Model, elige un modelo base YOLO26 y tu conjunto de datos, y activa Save Dataset Version.

  2. Mantén 100 épocas, el tamaño del lote automático y un tamaño de imagen de 640, salvo que tengas un motivo para cambiarlos; consulta la estimación del coste.

  3. Evalúa la ejecución: si sigue mejorando en la última época, necesita más épocas; si se ha estancado y aumenta la pérdida de validación, corrige los datos.

  4. Para realizar un ajuste fino con tu propio lr0, configura también optimizer en SGD o AdamW; auto ignora lr0.

  5. Entrena localmente con project="username/project" y ULTRALYTICS_API_KEY para enviar una ejecución a Platform en tiempo real.

Práctico

Iniciar una ejecución#

Haz clic en New Model en la página de un proyecto o conjunto de datos. La pestaña Cloud Training te guía por estos ajustes:

Cuadro de diálogo Train New Model de Ultralytics Platform, con yolo26n seleccionado como modelo base, el conjunto de datos COCO8, 100 épocas, tamaño de lote automático, la GPU RTX PRO 6000, el saldo de la cuenta y un coste estimado de 0,03 $

ParámetroPredeterminadoCuándo cambiarlo
Modelo baseElige uno en Official (se recomienda YOLO26)Si vas a ajustar un modelo, elige la ejecución anterior en My Models
Conjunto de datos—Activa siempre Save Dataset Version para vincular la ejecución a sus datos
Épocas100Prueba rápida (10–20) o conjuntos de datos muy grandes
Tamaño del lote-1 (se ajusta automáticamente a la memoria de la GPU)Necesitas dos ejecuciones para que sean exactamente comparables
Tamaño de imagen640Los objetos son pequeños: auméntalo (el control deslizante llega hasta 1280; el editor YAML admite hasta 4096)
Ajustes avanzadosValores predeterminadosMás de 50 argumentos model.train() en YAML, incluidos el optimizador, la tasa de aprendizaje y el aumento de datos

Son los mismos argumentos que model.train(...) acepta localmente; más adelante, la página del modelo muestra un comando yolo train que puedes copiar y que incluye los valores no predeterminados.

Elige la GPU y calcula el presupuesto de la ejecución#

CategoríaEjemplos (VRAM, precio por hora)Ideal para
EconómicaRTX 2000 Ada (16 GB, 0,24 $), RTX A5000 (24 GB, 0,27 $), RTX 4090 (24 GB, 0,69 $)Pruebas rápidas, modelos nano y pequeños
IntermediaL40S (48 GB, 0,86 $), RTX 5090 (32 GB, 0,99 $), A100 SXM (80 GB, 1,49 $)Modelos medianos y lotes más grandes
PredeterminadoRTX PRO 6000 (96 GB, 2,09 $)La mayoría de los trabajos
Gama altaH100 SXM (80 GB, 3,29 $), H200 SXM (141 GB, 4,39 $)Conjuntos de datos grandes cuando el tiempo importa
Pro y EnterpriseB200 (180 GB, 5,89 $), B300 (288 GB, 7,39 $)Los trabajos más grandes

La tarjeta de costes estima la duración y el precio antes de empezar: unos 0,23 $ por 1000 imágenes × YOLO26n × 100 épocas en la RTX PRO 6000 predeterminada, y unos 1,56 $ por 5000 imágenes × YOLO26s × 100 épocas en una H100 SXM, que entrena aproximadamente 3,4 veces más rápido que una RTX 4090. La facturación se basa en el tiempo real de GPU: se cobran las ejecuciones completadas, canceladas y fallidas una vez que se ha iniciado la GPU; una ejecución requiere un saldo que cubra su coste estimado (al menos 15 minutos de tiempo de GPU), y las ejecuciones activas se detienen si el saldo queda en negativo, así que activa la recarga automática en Settings > Billing para los trabajos largos. Si seleccionas una GPU más barata que la RTX PRO 6000, puedes obtener una mejora gratuita a esta cuando haya capacidad gestionada por Ultralytics inactiva, y se te seguirá cobrando la tarifa seleccionada.

Reglas para decidir: prueba primero un conjunto de datos nuevo con 10–20 épocas en la GPU predeterminada. Pásate a una H100 o H200 cuando una ejecución tarde horas y alguien esté esperando. Elige una GPU más barata, no más rápida, cuando la utilización de la GPU sea baja.

Supervisa la ejecución#

La pestaña Train de la página del modelo muestra tres subpestañas en tiempo real. Charts representa las métricas, las pérdidas de entrenamiento y validación, y la tasa de aprendizaje por época; Console conserva las últimas 2000 líneas y detiene la ejecución de inmediato si se produce un traceback o un error de falta de memoria de CUDA; System muestra la utilización, la memoria y la temperatura de la GPU:

Pestaña Train del modelo en Ultralytics Platform, con cuatro tarjetas de resumen de métricas y la subpestaña Charts con curvas de precisión, exhaustividad y mAP50-95 por época

Pestaña Train del modelo en Ultralytics Platform, con la subpestaña System abierta, una tarjeta del host que muestra el modelo de GPU y gráficos del uso de CPU y RAM por época

Una ejecución que no informa de nada durante 4 horas se marca como fallida. El mejor punto de control se carga periódicamente, por lo que una ejecución cancelada conserva la mejor época alcanzada hasta el momento, y las alertas de Slack pueden avisarte cuando las ejecuciones terminen o fallen.

Ejemplo práctico: entrena, transmite y consulta una ejecución#

Puedes entrenar en cualquier lugar y seguir la ejecución en Platform. Con una clave de API exportada desde Settings > API Keys como ULTRALYTICS_API_KEY, un project del formato username/project transmite los gráficos, la consola y el mejor punto de control a ese proyecto:

from ultralytics import YOLO

# export ULTRALYTICS_API_KEY="..." first to stream this run into your Platform project
model = YOLO("yolo26n.pt")
results = model.train(data="medical-pills.yaml", epochs=10, imgsz=320, project="username/pill-inspection", name="v1-baseline")
print(f"mAP50-95 {results.box.map:.3f}, best checkpoint: {model.trainer.best}")
                 Class     Images  Instances      Box(P          R      mAP50  mAP50-95)
                   all         23        399       0.97      0.957      0.977      0.659
mAP50-95 0.659, best checkpoint: .../runs/detect/username/pill-inspection/v1-baseline/weights/best.pt

El mismo comando se ejecuta en las GPU de Platform al hacer clic en New Model; localmente tardó menos de dos minutos en la CPU de un portátil con imgsz=320. El results.csv de la ejecución contiene las series por época que representa la subpestaña Charts, así que bastan unas pocas líneas para convertir «vigila las curvas» en una regla:

import pandas as pd

df = pd.read_csv("results.csv")  # the per-epoch metrics behind the Charts subtab
df.columns = df.columns.str.strip()
m = df["metrics/mAP50-95(B)"]
best_epoch = int(df.loc[m.idxmax(), "epoch"])
recent_gain = m.iloc[-1] - m.iloc[-4]  # change over the last 3 epochs
val_loss = df["val/box_loss"]
print(f"epochs={len(df)} best mAP50-95={m.max():.3f} at epoch {best_epoch}")
print(f"gain over last 3 epochs: {recent_gain:+.3f}")
print(f"val box loss: {val_loss.iloc[0]:.3f} -> {val_loss.iloc[-1]:.3f}")
if recent_gain < 0.005 and val_loss.iloc[-1] >= val_loss.iloc[-4]:
    print("verdict: plateaued - stop, and fix the data before training longer")
elif best_epoch == len(df):
    print("verdict: still improving at the last epoch - more epochs should help")
else:
    print("verdict: converged - keep best.pt")
epochs=10 best mAP50-95=0.659 at epoch 10
gain over last 3 epochs: +0.028
val box loss: 1.367 -> 1.045
verdict: still improving at the last epoch - more epochs should help

La mejor época es la última, mAP50-95 ha subido 2,8 puntos en las tres últimas épocas y la pérdida de validación sigue bajando: esta ejecución de 10 épocas se ha detenido antes de tiempo, y será útil alargarla o ajustar el modelo. Usa las mismas tres señales en la subpestaña Charts de cualquier ejecución de Platform: dónde se sitúa la mejor época, la mejora reciente y la tendencia de la pérdida de validación.

Ajusta un modelo anterior#

Elige tu modelo anterior en My Models como modelo base; Platform crea un modelo nuevo que parte de ese punto de control y deja el anterior sin cambios. Lo habitual es usar una tasa de aprendizaje menor, pero con el valor predeterminado optimizer: auto, el entrenamiento elige su propio optimizador y tasa de aprendizaje e ignora lr0. La consola lo indica en las primeras líneas:

optimizer: 'optimizer=auto' found, ignoring 'lr0=0.01' and determining best 'optimizer' and 'lr0' automatically...
optimizer: AdamW(lr=0.002, momentum=0.9) with parameter groups 114 weight(decay=0.0), 126 weight(decay=0.0005), 126 bias(decay=0.0)

Establece explícitamente optimizer en Advanced Settings para que se aplique el valor. Los registros del ajuste del modelo de pastillas durante 5 épocas más con optimizer: SGD y lr0: 0.001 son:

optimizer: SGD(lr=0.001, momentum=0.937) with parameter groups 114 weight(decay=0.0), 126 weight(decay=0.0005), 126 bias(decay=0.0)
                   all         23        399      0.969      0.962      0.983      0.687

mAP50-95 ha subido de 0,659 a 0,687. En la siguiente lección someterás este candidato a un proceso de promoción.

Cuadro de diálogo Train New Model de Ultralytics Platform con Advanced Settings desplegado, donde se muestra el editor YAML con ajustes de entrenamiento como epochs, batch, imgsz, patience y seed

Para reproducir una ejecución anterior, abre su tabla Training Configuration en la página del modelo, elige Copy JSON y pégalo en Advanced Settings. La guía de ajuste fino explica cómo congelar capas, y la guía de ajuste de hiperparámetros explica cómo realizar barridos sistemáticos.

Errores habituales#

Se ignora la tasa de aprendizaje del ajuste fino

Síntoma: estableces lr0: 0.001 y la consola muestra ignoring 'lr0=...'. Solución: con optimizer: auto, el entrenamiento elige el optimizador y la tasa de aprendizaje por sí mismo. Establece optimizer en SGD o AdamW, junto con lr0, y confirma después la línea optimizer: en la consola.

Pagar por una GPU infrautilizada

Síntoma: la pestaña secundaria Sistema muestra una utilización de la GPU muy inferior al 80 % durante toda la ejecución. Solución: el cuello de botella es la carga de datos, no la GPU, así que una GPU más rápida solo cuesta más. Elige una GPU más barata o aumenta el tamaño del lote si la memoria lo permite.

Entrenar más allá del punto de no retorno

Síntoma: el mAP50-95 de validación lleva 10 épocas estancado mientras la pérdida de validación aumenta poco a poco. Solución: cancela. Se conserva el mejor punto de control hasta el momento, y la siguiente mejora vendrá de los datos (lecciones 3 y 4), no de entrenar más épocas.

Pruébalo

Entrena un modelo YOLO26n con tu conjunto de datos (en la nube con Save Dataset Version, o en local mediante transmisión con project="username/project") durante 10–20 épocas. Ejecuta read_run.py sobre su results.csv o aplica las mismas tres comprobaciones a su subpestaña Charts. Después, ajústalo con un optimizer explícito y lr0, y confirma que la línea optimizer: de la consola utiliza tus valores.

Cuándo se considera terminado
Has terminado la lección cuando se cumplen todas estas condiciones.
  • Hay una ejecución completada en tu proyecto de Platform, vinculada a una versión del conjunto de datos o a un conjunto de datos ul://.

  • Has escrito el veredicto de la ejecución (detener, continuar o conservar) junto con las tres cifras que lo justifican.

  • La consola de una ejecución ajustada muestra el optimizador y la tasa de aprendizaje que has elegido, no optimizer=auto.

Mostrar solución

Ejemplo resuelto con pastillas médicas: la línea base de 10 épocas alcanza su máximo en la época 10 con mAP50-95 de 0,659, una mejora de 0,028 en las tres últimas épocas y una pérdida de caja de validación que baja de 1,367 a 1,045; por tanto, el veredicto es «continuar». En lugar de volver a entrenar desde cero, ajusta el modelo: modelo base v1-baseline en My Models, 5 épocas, Advanced Settings optimizer: SGD y lr0: 0.001. La consola confirma SGD(lr=0.001, momentum=0.937) y mAP50-95 alcanza 0,687. El coste en la GPU predeterminada es de unos céntimos; la tarjeta de costes muestra la estimación antes de hacer clic en Start Training, y Settings > Billing muestra el importe real después.

Qué viene después

Tienes una línea base y un candidato. A continuación decidirás, con criterios definidos de antemano, si el candidato merece publicarse.