Skip to content

Training Logging¤

Artifex logging lives at the shared Trainer layer. Model-family trainers own objectives; callback-driven logging, checkpointing, and progress reporting are attached through CallbackList.

Core Pattern¤

from artifex.generative_models.training import Trainer
from artifex.generative_models.training.callbacks import CallbackList

trainer = Trainer(
    model=model,
    training_config=training_config,
    loss_fn=loss_fn,
    callbacks=CallbackList([]),
)

trainer.train(train_data=train_data, num_epochs=10, batch_size=64, val_data=val_data)

TensorBoard¤

Install TensorBoard with:

pip install tensorboard

Then configure the callback:

from artifex.generative_models.training.callbacks import (
    CallbackList,
    TensorBoardLoggerCallback,
    TensorBoardLoggerConfig,
)

callbacks = CallbackList(
    [
        TensorBoardLoggerCallback(
            TensorBoardLoggerConfig(
                log_dir="logs/tensorboard",
                flush_secs=60,
                max_queue=20,
                log_every_n_steps=10,
                log_on_epoch_end=True,
            )
        )
    ]
)

TensorBoardLoggerConfig supports only the live runtime knobs above.

Progress Bars¤

from artifex.generative_models.training.callbacks import (
    CallbackList,
    ProgressBarCallback,
    ProgressBarConfig,
)

callbacks = CallbackList(
    [
        ProgressBarCallback(
            ProgressBarConfig(
                show_eta=True,
                show_metrics=True,
                leave=False,
            )
        )
    ]
)

ProgressBarConfig is intentionally small:

Parameter Description
show_eta Render estimated time remaining
show_metrics Render up to a few metrics inline
leave Keep finished bars visible
disable Turn the callback off entirely

WandB¤

Install W&B with:

pip install wandb

Example:

from artifex.generative_models.training.callbacks import (
    CallbackList,
    WandbLoggerCallback,
    WandbLoggerConfig,
)

callbacks = CallbackList(
    [
        WandbLoggerCallback(
            WandbLoggerConfig(
                project="artifex",
                name="experiment-01",
                tags=["baseline"],
                config={"learning_rate": 1e-4, "batch_size": 64},
            )
        )
    ]
)

Combining Logging Callbacks¤

from artifex.generative_models.training.callbacks import (
    CallbackList,
    ProgressBarCallback,
    ProgressBarConfig,
    TensorBoardLoggerCallback,
    TensorBoardLoggerConfig,
)

callbacks = CallbackList(
    [
        TensorBoardLoggerCallback(
            TensorBoardLoggerConfig(log_dir="logs/tensorboard", log_every_n_steps=10)
        ),
        ProgressBarCallback(ProgressBarConfig(show_metrics=True, show_eta=True)),
    ]
)