Skip to content

Training Systems¤

Status: Supported runtime training reference

artifex.generative_models.training keeps the shared owner set narrow: the shared package owns Trainer, typed optimizer and scheduler factories, callback modules, gradient accumulation helpers, distributed utilities, staged and streaming loop helpers, and typed RL trainer contracts. Family-specific trainer implementations live under artifex.generative_models.training.trainers.

Shared Trainer¤

Use Trainer when you want an explicit objective boundary and callback-aware training loop:

from artifex.generative_models.core.configuration import (
    OptimizerConfig,
    SchedulerConfig,
    TrainingConfig,
)
from artifex.generative_models.training import Trainer, create_optimizer, create_scheduler
from artifex.generative_models.training.callbacks import (
    CallbackList,
    ProgressBarCallback,
    ProgressBarConfig,
)

optimizer_config = OptimizerConfig(
    name="adamw",
    optimizer_type="adamw",
    learning_rate=1e-3,
    weight_decay=0.01,
)
scheduler_config = SchedulerConfig(
    name="cosine",
    scheduler_type="cosine",
    warmup_steps=1_000,
    cycle_length=100_000,
    min_lr_ratio=0.1,
)
training_config = TrainingConfig(
    name="baseline-training",
    optimizer=optimizer_config,
    scheduler=scheduler_config,
    batch_size=64,
    num_epochs=20,
)

schedule = create_scheduler(
    SchedulerConfig(
        name="cosine",
        scheduler_type="cosine",
        warmup_steps=1_000,
        cycle_length=100_000,
        min_lr_ratio=0.1,
    ),
    base_lr=optimizer_config.learning_rate,
)
optimizer = create_optimizer(
    OptimizerConfig(
        name="adamw",
        optimizer_type="adamw",
        learning_rate=1e-3,
        weight_decay=0.01,
    ),
    schedule=schedule,
)

trainer = Trainer(
    model=model,
    training_config=training_config,
    optimizer=optimizer,
    loss_fn=loss_fn,
    callbacks=CallbackList([
        ProgressBarCallback(ProgressBarConfig(show_metrics=True)),
    ]),
)

Family Trainers¤

The shared package does not hide model-specific objectives behind one universal trainer class. Use the trainer family that matches the model runtime you are actually training:

Distributed Utilities¤

Artifex ships distributed helpers as utilities, not as trainer subclasses. The retained owners are:

Advanced Shared Utilities¤

Current Training Pages¤

Coming Soon¤

Standalone optimizer and scheduler module pages remain roadmap-only until real modules exist. Use the current factory owners instead.