Changelog
All notable changes to DantinoX are documented here. The format follows Keep a Changelog. DantinoX uses Semantic Versioning.
[0.3.0] — 2026-06-07
Added
Experiments & Results documentation —
docs/paper.mdpage with research questions, experimental design (180-checkpoint training matrix), full evaluation pipeline (B1–B3, E1–E4, F1–F3), and reproducibility instructionsFull Training Suite docs —
docs/training/emnlp-suite.mddocumenting the Part A size × attention × FFN matrix and Part B ablation suite with all flag derivations and progress-monitoring commandsdocs/paradigms/comparison.mdimprovements — Research Design section explaining the controlled experimental conditions; expanded placeholder tables for quality (WikiText-103/PTB/LAMBADA/C4 bpb), throughput (AR vs Diffusion simple vs DualCache), and generation quality (Distinct-1/2, Self-BLEU, Rep-4, MAUVE); “When to Use” sectionReadTheDocs migration — documentation now served from
dantinox.readthedocs.io; GitHub Pages workflow replaced with a CI-onlymkdocs build --strictvalidation step;site_urladded tomkdocs.yml
Fixed
train_ar_suite.shandtrain_diffusion_suite.shnow pass--gradient_checkpointing true(wasfalse). Without checkpointing, JAX’s@nnx.jitfully unrolls thegrad_accum=4loop, causing a ~29 GiB peak XLA allocation that OOMs the A100 40 GB on 512d/16-block modelsVRAM estimator in
dantinox/trainer.pynow correctly accounts forgrad_accumloop unrolling and usesmicro_bs(notbatch_size) for the activation estimateFAQ updated with accurate OOM diagnostics and gradient checkpointing guidance
0.2.0 — 2026-06-05
Added
Masked Diffusion Language Model —
DiffusionTransformer,DiffusionBlock,AdaLayerNorm, cosine/linear/sqrt noise schedules, masked cross-entropy loss (core/diffusion.py)Fast-dLLM DualCache — block-wise denoising with a prefix KV-cache and suffix KV-cache, reducing diffusion decode latency by ~2.1× over the naive sampler
Confidence-Aware Decoding — token-unmasking strategies based on per-position confidence thresholds and linear/exponential factor schedules
model_typeconfig field —"autoregressive"(default) or"diffusion"; a single YAML change switches the full training and inference pipelineattention_typeconfig field — explicit"mha"/"gqa"/"mla"selector; resolves automatically from legacymlaandkv_headsflags for backward compatibilityThree noise schedules —
"cosine"(default),"linear","sqrt"configurable vianoise_scheduleDiffusion training docs —
docs/training/diffusion.md,docs/paradigms/diffusion.md,docs/paradigms/fast-dllm.md,docs/paradigms/confidence.mdTutorial section — four step-by-step guides: Training Your First Model, LoRA Fine-Tuning, Masked Diffusion LM, Pushing to HuggingFace Hub
Changed
Transformer.from_pretrainednow accepts both local paths and HuggingFace Hub repository IDsGeneratorconstructor accepts atokenargument for private HuggingFace Hub repositoriesConfig.__post_init__validatesmodel_typeandattention_type; raisesValueErroron unknown valuesBenchmark suite extended to cover AR vs. Diffusion throughput comparison
Fixed
Static KV-cache initialisation now correctly handles
batch_size > 1in MLA modedantinox find-lrno longer overwrites an existing run directory when--run_diris specified
0.1.0 — 2026-01-15
Added
Core Transformer (
core/model.py) — Autoregressive Transformer with MHA, GQA, and Multi-Head Latent Attention (MLA)MLA — latent KV compression, decoupled RoPE, weight absorption at decode time (DeepSeek-V2 style)
Static KV-cache —
jax.lax.dynamic_update_slicefor O(1) writes; zero recompilation across decode stepsFlash Attention — opt-in
jax.nn.dot_product_attentionfast path for MHA/GQA training (JAX ≥ 0.4.25)Sparse MoE — top-K router with load-balancing auxiliary loss (
alpha_balance)LoRA fine-tuning —
LoRALinear,LoRAParamtype-level freezing,merge_weights()for deploymentNTK-aware RoPE scaling —
rope_scale_factorcompresses base frequency for long-context extrapolationSliding Window Attention — local causal window via
context_windowconfig fieldAttention gating (
no_sink) — sigmoid gate on attention output to prevent attention sink patternsTrainer— full training loop: bfloat16, gradient accumulation, gradient clipping, early stopping, LR finder, W&B logging, resume from checkpointFour LR schedules —
"cosine","linear","constant","wsd"(warmup → stable → cosine decay)Three optimisers — AdamW, Adafactor, Lion via Optax
Generator— single, batched, and streaming autoregressive generation with top-k, top-p, temperature samplingMulti-GPU SPMD — data-parallel training via
jax.sharding.Mesh; setn_devices=NHuggingFace Hub integration —
push()/pull()indantinox/hub.py;Generator("owner/repo")direct loadingCLI —
dantinox train,generate,find-lr,sweep,benchmark,push,pull,plotBenchmarkRunner— throughput, FLOPs, KV-cache profiling across attention typesCharTokenizer and BPETokenizer —
tokenizer_type: "char"or"bpe"in configGradient checkpointing —
nnx.rematfor activation recomputation (disabled automatically during inference)ModelOutputNamedTuple — named access tologits,kv_caches,aux_loss; backward-compatible with positional unpacking86 pytest tests — unit and integration coverage; mypy clean, ruff clean
ReadTheDocs — MkDocs Material documentation with full API reference, architecture docs, and benchmark results