What's New
### **A Real-Time Training Visualizer**
You can now watch your model train. Open a browser. A 3D amber galaxy rotates in sync with your model's own layer structure, updating every step. Loss, learning rate, gradient norm, and memory pressure stream live via Socket.IO. Nothing to install: the visualizer auto-installs Flask and its dependencies on first run.
Fourteen commits went into this. It was redesigned from scratch halfway through — the first version worked, the final version is a quiet instrument. Toggle panels on and off. Dock it to idle. The galaxy changes shape when you change models.
Gemma 4 Instruction-Tuning: Label Masking Fixed
A silent bug was training the model on padding tokens during instruction-tuning. Labels are now masked correctly. If you fine-tuned Gemma 4 in instruction mode before this release, retrain. The LoRA learning rate has also been bumped to compensate for the corrected gradient signal.
Try It Without Bringing Your Own Data
A sample-text dataset is now bundled in the repo. Clone, install, run the wizard — it works on the first try without a CSV, a GCS bucket, or a BigQuery table.
What Changed (Full List)
- Training visualizer: wired callback into Gemma Trainer, Socket.IO live metrics, 3D galaxy, per-step logging
- Visualizer: amber galaxy, working toggles, idle dock, accessibility pass
- Visualizer: fixed Socket.IO emit, fixed DOMContentLoaded boot race, hardened JS, modularized dashboard
- Visualizer: auto-installs on first run; stopped the transformers downgrade loop that broke it
- CI: visualizer contract tests skipped on Gemma 4 jobs that run without Flask
- Gemma 4: fixed instruction-tuning label masking; bumped LoRA LR
- Gemma 4: aligned transformers pins with pyproject; hardened wizard dependency policy
- Sample dataset: bundled sample-text CSV; wizard now bootstraps config.ini on first run
- Root cleanup: configs, docs, requirements, entrypoints reorganized out of the top level
Why It's Still Alpha
The core caveats from v0.1.0-alpha stand. APIs and config schema will change. Image and audio paths have lighter test coverage than text. The vision memory estimator is a heuristic. Gemma 4 requires its own requirements-gemma4.txt stack.
The visualizer is new and has had one week of testing on one machine. It will surface bugs on yours.
Install & Upgrade
git pull
pip install -e ".[viz]" # or: uv pip install -e ".[viz]"
The wizard will auto-install visualizer dependencies if you haven't. Or install them explicitly:
pip install flask flask-socketio
Then run:
python train.py
The visualizer URL prints to the console when training starts. Open it in any browser.