Axolotl AI · 2026-09-10 · notable
Axolotl v0.19.0 — ternary BitNet training and a 16.4x tokenizer speedup
Axolotl v0.19.0 adds native BitNet b1.58 ternary quantization-aware training, a declarative way to add model architectures, and two new optimizers. Tokenizing an 80-turn chat drops from 1,577.6 ms to 96.4 ms.
Axolotl can now train weights down to {-1, 0, 1} with no extra dependency, and stops hanging on long chat datasets.
What is it?
Ternary quantization-aware training arrives in Axolotl v0.19.0 behind a single config key: `qat: weight_dtype: ternary` restricts a model's weights to {-1, 0, 1} in the BitNet b1.58 style, natively and with no extra dependency. The release ships 72 commits since v0.18.0 and includes `examples/neutrino/`, the two-stage recipe Fermion used for Neutrino-1 — ternary continued pretraining, then instruction tuning on top.
How does it work?
Adding an architecture used to mean edits scattered across the loaders. A declarative model-support system replaces that: a model picks a family template such as `VANILLA_CAUSAL_LM` or `IMAGE_TEXT_TO_TEXT` and declares only what makes it different, with existing descriptors and configs unchanged. Two optimizers join as well — PoLoRA, a Muon-like optimizer for LoRA and QLoRA on single GPU, DDP or FSDP2, and AdamC, which scales weight decay by learning rate.
Why does it matter?
The tokenization fix removes a long-standing annoyance: preprocessing an 80-turn Qwen2.5 conversation now takes 96.4 ms instead of 1,577.6 ms, a 16.4x speedup that grows with conversation length, so long multi-turn datasets no longer look like a hung job. Fine-tuning coverage also widens — Qwen3.8-Flash-Next, a 176.94B multimodal mixture-of-experts, fits on a single B300 in as little as 120 GiB with `ple_cpu_offload: true`, and Ling 3.0, Muse Glimmer 30B, Cohere North Micro Vision Instruct, Shieldstral, Qwen3.8 27B and Nemotron 3.5 Lightning 30B-A3B each ship example configs.
Who is it for?
fine-tuning practitioners
Try it
pip install -U axolotl