Trackio documentation

Migrar a Trackio

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Migrar a Trackio

Es fácil migrar a Trackio desde otras bibliotecas de seguimiento de experimentos con cambios mínimos en el código. Esta guía te muestra cómo migrar desde herramientas populares de seguimiento de experimentos.

Weights & Biases ( wandb )

Migrar de Weights & Biases a Trackio es extremadamente fácil porque Trackio utiliza exactamente la misma sintaxis de API que wandb. En la mayoría de los casos, ¡solo necesitas cambiar la declaración de importación!

Migración simple

La migración más básica solo requiere cambiar su importación:

- import wandb
+ import trackio as wandb

wandb.init(project="my-project")
wandb.log({"loss": 0.5, "accuracy": 0.8})
wandb.finish()

Ejemplo completo

Aquí tienes un ejemplo más completo que muestra cómo el resto de tu código permanece exactamente igual.

- import wandb
+ import trackio as wandb
import numpy as np

wandb.init(
    project="image-classification",
    name="experiment-1",
    config={
        "learning_rate": 0.01,
        "batch_size": 32,
        "epochs": 10
    }
)

for epoch in range(10):
    loss = np.random.random()
    accuracy = np.random.random()
    
    wandb.log({
        "epoch": epoch,
        "loss": loss,
        "accuracy": accuracy,
        "learning_rate": wandb.config.learning_rate
    })

wandb.finish()

Funciones avanzadas

Trackio permite registrar Tables, Images, Audio, objetos 3D, etc. - misma API que wandb:

- import wandb
+ import trackio as wandb
import numpy as np

wandb.init(project="data-analysis")

image_array = np.random.randint(0, 255, (100, 100, 3), dtype=np.uint8)
wandb.log({
    "sample_image": wandb.Image(image_array, caption="Generated sample"),
    "model_diagram": wandb.Image("architecture.png")
})

columns = ["epoch", "train_loss", "val_loss", "accuracy"]
data = [
    [1, 0.8, 0.6, 0.75],
    [2, 0.6, 0.5, 0.82],
    [3, 0.4, 0.45, 0.89]
]
table = wandb.Table(data=data, columns=columns)
wandb.log({"training_results": table})

wandb.finish()

Neptune (neptune)

Migrar desde Neptune requiere algunos cambios adicionales, ya que Neptune tiene una estructura de API diferente, pero la migración sigue siendo sencilla.

Migración de registros básicos

- import neptune

+ import trackio

- run = neptune.init_run(
-     project="my-workspace/my-project",
-     api_token="your-token"
- )

+ trackio.init(project="my-project")

- run["parameters"] = {"learning_rate": 0.01, "batch_size": 32}
- run["metrics/loss"].log(0.5)
- run["metrics/accuracy"].log(0.8)

+ trackio.config.update({"learning_rate": 0.01, "batch_size": 32})
+ trackio.log({"loss": 0.5, "accuracy": 0.8})

- run.stop()

+ trackio.finish()

Migración completa del bucle de entrenamiento

- import neptune
+ import trackio
import numpy as np

- run = neptune.init_run(
-     project="my-workspace/classification-project",
-     name="experiment-1",
-     tags=["pytorch", "cnn"]
- )

+ trackio.init(
+     project="classification-project",
+     name="experiment-1",
+     tags=["pytorch", "cnn"]
+ )

config = {"learning_rate": 0.01, "epochs": 10, "batch_size": 32}

- run["parameters"] = config
+ trackio.config.update(config)

for epoch in range(config["epochs"]):
    # Simulate training
    train_loss = np.random.random()
    val_accuracy = np.random.random()
    
    # Neptune logging
-     run["metrics/train/loss"].log(train_loss)
-     run["metrics/val/accuracy"].log(val_accuracy)
-     run["metrics/epoch"].log(epoch)

    # Trackio logging
+     trackio.log({
+         "train/loss": train_loss,
+         "val/accuracy": val_accuracy,
+         "epoch": epoch
+     })

- run["model/weights"].upload("model.pth")
+ trackio.save("model.pth")

- run.stop()
+ trackio.finish()

Puntos clave de la migración

  1. Inicialización: Reemplaza neptune.init_run() con trackio.init()
  2. Registro: Use trackio.log() con diccionarios en lugar de asignaciones individuales de métricas
  3. Limpieza: Reemplaza run.stop() con trackio.finish()

Ventajas de la migración

  • API más simple: registro mediante un diccionario plano frente al acceso a atributos anidados
  • Desarrollo local: Trabaja sin conexión de forma predeterminada
  • Alojamiento gratuito: Despliega paneles en Hugging Face Spaces sin costo
  • Interfaz familiar: Si has usado wandb antes, en particular, la API no ha cambiado
Update on GitHub