The model’s learnable weights, compressed here to one coordinate on the horizontal axis.
Gradient descent through a hidden loss landscape
Tune the optimizer
Space run / pause · Esc reset
From this toy to real training.
The curve is a map of one part of training—not a tiny replica of the whole thing. These are the exact ideas it stands in for, plus the pieces we have intentionally left outside the frame.
A score for how wrong the current model is. Lower points on the curve mean lower loss.
Backpropagation computes which weight changes would raise loss fastest; we go opposite.
The optimizer repeatedly changes weights. One breadcrumb is one training step.
Choices made by the trainer—not learned weights. They shape how learning behaves.
The curve visualizes steps 3–5.
Real training must first produce a mistake to learn from. Then the same loop runs again on another batch of examples.
Where the toy becomes a training config.
The visualization uses normalized units. Axolotl uses literal optimizer values, batches, schedules, and regularization. Treat this as a vocabulary map and starting experiment—not a universal recipe.
vₜ = βvₜ₋₁ − η∇L(θₜ) + σεₜ
θₜ₊₁ = θₜ + vₜ
B = micro_batch × accumulation × GPUs
learning_rate; search it logarithmically.adam_beta1 and adam_beta2.Axolotl YAML
# optimizer and run shape
adapter: qlora
optimizer: paged_adamw_32bit
learning_rate: 2.0e-4
lr_scheduler: cosine
warmup_ratio: 0.10
weight_decay: 0.0
# effective batch = 2 × 4 × GPU count
micro_batch_size: 2
gradient_accumulation_steps: 4
num_epochs: 4
max_grad_norm: 1.0