Trackio · Cultiva Labs

Proyecto: intent-classifier-multilingual · Fine-tuning distilBERT · 3 runs activos

HF Space: cultivalabs/trackio
Mejor val/loss
0.128
run-003 · epoch 7
Mejor val/acc
94.7%
run-003 · epoch 8
Alertas disparadas
4
2 ERROR · 1 WARN · 1 INFO
Total steps
2.340
780 por run promedio
Curvas de entrenamiento
Validation Loss por Epoch
run-001
run-002
run-003
0.10 0.30 0.50 0.70 0.90 1 2 3 4 5 6
Validation Accuracy por Epoch
run-001
run-002
run-003
100% 91% 82% 73% 64% 1 2 3 4 5 6
Comparativa de runs
Run LR Batch Epochs Val Loss ↓ Val Acc ↑ Val F1 ↑ Alertas Estado
run-001
2e-5 32 5/5 0.340 88.5% 0.871 1 INFO Completado
run-002
5e-5 16 5/5 0.750 76.1% 0.743 2 ERROR, 1 WARN Overfitting
run-003
1e-5 32 8/8 0.128 94.7% 0.943 1 INFO Mejor run
Alertas disparadas
🔴

Loss divergence detectada

val/loss 0.750 no convergió tras 5 epochs. LR 5e-5 demasiado alto para este dataset.

run-002 · Epoch 5 · ERROR
🔴

Overfitting detectado

(train/loss − val/loss) = 0.61. El modelo memoriza el training set con batch 16.

run-002 · Epoch 4 · ERROR
⚠️

Val loss divergiendo en run-002

val/loss aumentó de 0.68 a 0.70 entre epoch 3 y epoch 4. Señal temprana de overfitting.

run-002 · Epoch 4 · WARN

Convergencia temprana — run-003

val/loss = 0.128. Por debajo del umbral 0.15. run-003 con warmup+lr bajo converge limpio.

run-003 · Epoch 8 · INFO
Script de entrenamiento con Trackio
train_intent_classifier.py Python · Trackio + distilBERT
import trackio
from transformers import AutoModelForSequenceClassification, TrainingArguments
from trl import SFTTrainer

# Inicializar tracking — sincroniza con HF Space
trackio.init(
    project="intent-classifier-multilingual",
    name="run-003",
    space_id="cultivalabs/trackio",
    config={"lr": 1e-5, "batch_size": 32, "epochs": 8, "warmup": True}
)

for epoch in range(8):
    train_loss, val_loss, val_acc = train_epoch()

    trackio.log({
        "train/loss": train_loss,
        "val/loss": val_loss,
        "val/accuracy": val_acc,
        "epoch": epoch
    })

    # Alerta de overfitting
    if (train_loss - val_loss) > 0.5:
        trackio.alert(
            title="Overfitting detectado",
            text=f"Gap train-val = {train_loss - val_loss:.3f}",
            level=trackio.AlertLevel.ERROR
        )

    # Convergencia temprana (buena señal)
    if val_loss < 0.15:
        trackio.alert(
            title="Convergencia temprana",
            text=f"val/loss={val_loss:.3f} bajo umbral 0.15",
            level=trackio.AlertLevel.INFO
        )

trackio.finish()

# Recuperar alertas via CLI para el agente IA:
# $ trackio list alerts --project intent-classifier-multilingual --json
Recomendacion del agente
Modelo ganador: run-003 → deploy a produccion
run-003 con LR bajo (1e-5) y warmup lineal es claramente superior. Alcanza val/loss=0.128 y val/accuracy=94.7% en 8 epochs sin senales de overfitting. run-002 con LR=5e-5 divergio (overfitting severo: 2 alertas ERROR) y debe descartarse. run-001 es aceptable (88.5%) pero suboptimo. Recomendacion: hacer deploy de run-003 al endpoint de inferencia de Cultiva Labs y lanzar run-004 explorando epochs=10 y data augmentation multilingue para superar 95% de accuracy.
lr=1e-5 batch=32 epochs=8 warmup=linear val_loss=0.128 val_acc=94.7% val_f1=0.943