import art
from art.serverless.backend import ServerlessBackend
from .rollout import rollout
from .scenarios load_train_scenarios
TRAINING_STEPS = 50
model = art.TrainableModel(
name="agent-001",
project="checkpoint-deletion-demo",
base_model="OpenPipe/Qwen3-14B-Instruct",
)
backend = ServerlessBackend()
await model.register(backend)
train_scenarios = load_train_scenarios()
# training loop
for _step in range(await model.get_step(), TRAINING_STEPS):
train_groups = await art.gather_trajectory_groups(
(
art.TrajectoryGroup(rollout(model, scenario, step) for _ in range(8))
for scenario in train_scenarios
),
pbar_desc=f"gather(train:{step})",
)
# trains model and automatically persists each LoRA as a W&B Artifact
# ~120MB per step
await model.train(
train_groups,
config=art.TrainConfig(learning_rate=5e-5),
)
# ~6GB of storage used by checkpoints