Downloads · 30 days
15
11% of all-time downloads
goldenfox/marimo-0.6b-mlx
marimo-0.6b-mlx is a text generation model from goldenfox. Use it when you need the model to write or continue text. It is set up for mlx. The card lists the license as apache-2.0.
Marimo is a research retrofit of Qwen/Qwen3-0.6B into a hybrid autoregressive + discrete-diffusion chat model with two mechanisms trained in:
Downloads · 30 days
15
11% of all-time downloads
All-time downloads
142
Public
Parameters
596M
1.2 GB on disk
Likes
0
Public
Click a slice to open those files.
.safetensors1.2 GB · 99%
From the Hugging Face model README
Marimo is a research retrofit of Qwen/Qwen3-0.6B into a hybrid autoregressive + discrete-diffusion chat model with two mechanisms trained in:
<think> region is generated as a chain of
MDLM-style denoised blocks. Block size is a per-thought decision: the model
autoregressively emits a size token (<sz32>, <sz64>, <sz128>), the engine allocates
that many masked positions and denoises them in parallel (16 steps per block by default),
and the loop repeats until the model emits </think>. The visible answer is then decoded
autoregressively.Known so far: ledger carried in the system turn (one entry per key: value fact,
latest value wins). The prompt therefore stays near-constant in size regardless of
conversation length.This repository is the standalone MLX port: it depends only on mlx, numpy and
tokenizers, ships fp16 weights (model.safetensors, ~1.2 GB), and runs on Apple Silicon.
pip install -r requirements.txt
python chat.py
chat.py is an interactive terminal REPL. Useful flags: --show-thinking prints the
denoised thought blocks after each turn, --temperature / --top-p control sampling,
--keep-messages resizes the visible window, --system replaces the default system
prompt. The default system prompt frames the model as a note-taking intake assistant,
which is the register most of the fine-tuning data uses.
Requires macOS on Apple Silicon (MLX). Maximum sequence length is 2048 tokens; the REPL refuses turns that would overflow it.
Starting from Qwen3-0.6B, the model went through continued pretraining and then SFT on a synthetic conversational corpus (~15k dialogues with per-turn thinking traces, size-token supervision and note annotations), trained on a single RTX 3090. The tokenizer adds special tokens for the mask, thought padding and the size menu; everything else is the Qwen3 tokenizer unchanged.
The port is validated against the torch training stack before each release: mask builders and the ChatML+ledger rendering match bit/byte-exactly; teacher-forced logits of the shipped fp16 weights agree with the fp32 torch reference on top-1 for 99.97% of 13,156 probed rows (mean KL ≈ 4.6e-6); cached and uncached forwards agree within 1.6e-4.
On an M1 Pro at the production config, full turns take ~2.2–4.2 s and autoregressive decoding runs at ~15–24 tok/s with a 500-token prefix.
On an internal 40-turn "ledger needle" probe (10 planted facts recalled at the end, scored on the value core), this model recalled 6/10 at a constant ~500-token prompt, while the Qwen3-0.6B base with the full transcript in context recalled 1/10 — the base degenerates into echoing the probe in long repetitive multi-turn chat. Single seed, and the comparison bundles mechanism and training data, so read it as direction rather than a benchmark result.
Apache-2.0. The weights derive from Qwen3-0.6B (Apache-2.0); model.py vendors a
minimal Qwen3 forward pass in MLX.