Skip to content

Release 0.3.0: v3 kernel, task-agnostic UI, speculative switch - #45

Merged
FonaTech merged 3 commits into
mainfrom
dev
Nov 6, 2026
Merged

FonaTech merged 3 commits into
mainfrom
dev

Conversation

@FonaTech

@FonaTech FonaTech commented Nov 6, 2026

Copy link
Copy Markdown
Owner

Summary

Release 0.3.0. The full list is in CHANGELOG.md → [0.3.0].

  • v3 recurrent-depth kernel
    • Attention modes: shared_first, per_iteration, first_only.
    • Tensor-only ACT exit.
    • top-2 MoE plus a shared expert, with sorted grouped dispatch.
    • MLA decode paths and int8 KV.
    • Single-dtype precision chain.
  • Self-speculative decoding
    • Runs on Torch and MLX, with full DRAM or lazy SSD experts.
    • Greedy output is exact.
    • The Web UI Inference tab gets a switch, draft depth and γ on all four runner paths.
  • Task-agnostic Web UI
    • The monitor discovers eval metrics, samples and inspections from whatever a run logs.
    • The Data tab detects chat / instruction / preference / QA / parallel / plain-text schemas in jsonl, json, csv, tsv, parquet and txt.
  • New commands: chronos serve (Ollama/OpenAI protocol), tokenizer, corpus, longrun, monitor, bundle, and the planner.
  • Fixes
    • The MLX engine forces eval mode. Training-mode expert masking had made greedy output random.
    • The lazy Torch engine uses no_grad. Experts paged in under inference_mode broke later calls.
    • The Inference tab now uses the checkpoint's own tokenizer.
  • Packaging and CI
    • torch>=2.6, because transformers 5 disables its torch backend below that version.
    • CI pins tested versions in .github/ci-constraints.txt.
    • Removed the dead token-based publish job. PyPI publishing stays in pypi.yml (trusted publishing).
    • Added .gitignore and stopped tracking __pycache__.

Speculative decoding: measured, not faster at 50M

Measured on the 50M en→zh pretrain checkpoint (step 13,996): greedy, batch 1, FLORES+ dev, draft depth 1, γ 4. Reports are in reports/speculative/.

Runtime Plain tok/s Spec tok/s Ratio Identical
MLX GPU bf16, full 112.0 107.4 0.96× 22/24
MLX GPU bf16, lazy 43.7 32.0 0.73× 22/24
Torch MPS fp32, full 32.1 25.9 0.81× 12/12
Torch MPS fp32, lazy (sync) 17.0 14.7 0.86× 12/12

The switch therefore stays off by default.

Tested

  • Full suite on macOS (M5 Max, torch 2.10, mlx 0.32.4, gradio): 328 passed, 2 skipped. The skips need local shards and the v2 reference checkpoint.
  • CI-equivalent environments built with uv, using the same installs as the workflows:
    • Python 3.11: ruff check . clean, flake8 fatal checks 0, pytest tests/ 249 passed, 49 skipped.
    • Python 3.10: the same result, plus bare pytest as python-app.yml runs it.
    • The skips are MLX, gradio and playwright tests, which are unavailable on Linux CI.
  • python -m build and twine check pass for the sdist and the wheel. The wheel contains no weights or run data.

Not included

  • Model weights, training runs, datasets and bundles. The training-data licences are unknown, so the weights are research-only.

🤖 Generated with Claude Code

FonaTech and others added 3 commits November 7, 2026 00:10
…ve switch

- v3 kernel: shared recurrent groups with contractive update, shared_first /
  per_iteration / first_only attention modes, tensor-only ACT exit, top-2 +
  shared-expert MoE with sorted grouped dispatch (Torch argsort, MLX gather_mm),
  MLA absorbed/expanded decode, int8 KV, single-dtype precision chain.
- Recurrent-depth self-speculative decoding on Torch and MLX, greedy-exact,
  with lazy-expert masks and lookahead prefetch; Inference tab switch, draft
  depth and gamma on all four runner paths.
- Web UI monitor and Data tab no longer assume a task: metrics, samples and
  dataset schemas are discovered from what a run or dataset contains.
- chronos serve (Ollama/OpenAI protocol), tokenizer builder, corpus pipeline,
  longrun trainer, monitor, model bundles, planner.
- Fixes: MLX engine forces eval mode; lazy Torch engine uses no_grad so paged
  experts stay usable; Inference tab uses the checkpoint's own tokenizer.
- tools/bench_speculative.py and measured reports in reports/speculative/
  (exact, not faster at 50M).
- torch >= 2.6 (transformers 5 needs it); CI pins tested versions in
  .github/ci-constraints.txt and drops the dead token-based publish job.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
They were uploaded with the source, are ignored by the new .gitignore and
carry paths from the build machine.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The local re-run (2026-09-09) is not part of this release and recorded a
machine-specific path.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@FonaTech
FonaTech merged commit fb3157a into main Nov 6, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant