Qwen3-32B — Grounded Personal-Voice (MLX 4-bit)
A fine-tune of
Qwen/Qwen3-32B that writes in one author's personal prose style, trained
so it can
respond grounded in a supplied source reading — the model behind a study
assistant's grounded-draft feature. It is the 32B sibling of
ericlmtn/qwen3-14b-personal-voice-mlx,
tuned toward source-grounded answers rather than bare style transfer.
This repo is the MLX 4-bit build (SFT, merged and quantized) — it runs locally on Apple
Silicon, fully offline.
How it was made
- Grounded SFT. A QLoRA fine-tune of Qwen3-32B on the author's own writing (~121K
words, verified human: GPTZero median 0% AI), loss only on the author's prose. Doc
selection is a 152-doc agent-audited keep list. For the 77 quote-bearing docs, the
source sentences each essay actually quotes are attached to that chunk's prompt — so the
model learns to ground quotes in supplied material instead of the confabulation seen
on bare prompts. Prompts were synthesized by instruction backtranslation.
- No RL. GRPO against the live GPTZero detector was tried on the 32B SFT and added
nothing — the SFT already emits ~0% AI, leaving no reward gradient to climb (KL pinned at
~4e-4). Unlike the 14B, which needed GRPO to close a gap, this build is SFT-only.
- Merge + convert. Adapter merged into the base, then converted to 4-bit MLX
(
group_size 64, affine).
Results (GPTZero AI %, lower = more human)
3 samples per prompt, temperature 0.9, non-thinking.
| Eval set | median | mean | < 15% |
|---|
| Held-out (backtranslated prompts) | 1% | 17% | 54/74 |
| Real past assignments — bare prompt | 1% | 2% | 9/9 |
| Real past assignments — reading attached | 1% | 7% | 8/9 |
Detector evasion is strong and matches the SFT sibling. The tail is the flowing,
reflective essay prompts where sentence-length variance collapses.
Grounding is enforced downstream, not by the model
Even with grounded training, the model still fabricates quotes when generating freely —
on the grounded eval it produced only 1/18 quoted spans verbatim (the rest paraphrased or
invented, while the citation looked plausible). Detector scores stay near 0% either way, so a
fabricated quote reads as human. The production pipeline therefore does not trust the
model's quotes: a deterministic post-generation pass verifies every quoted span against the
source, snaps near-misses to the real sentence, deletes fabrications, and injects the correct
page citation. Grounding is a guarantee by construction, not by asking the model nicely.
Run it (Apple Silicon)
1pip install mlx-lm
2python -m mlx_lm generate --model ericlmtn/qwen3-32b-grounded-voice-mlx \
3 --prompt "/no_think Using the reading below, answer in your own voice: ..." --max-tokens 1000
- Prefix the user message with
/no_think. The model was trained non-thinking; without
it, it spends the token budget on a hidden reasoning block and returns empty content.
- Attach the source as notes/context and let it write around it. Then verify quoted
spans against that source — do not ship the model's quotes unchecked (see above).
- Serve serially if scripting your own calls; concurrent requests to a single MLX
instance can return HTTP 500.
Intended use & limitations
- Intended use: drafting/responding to writing tasks in the author's voice, grounded in a
supplied reading, with a downstream quote-verification pass.
- Confabulation: on bare prompts (no reading) it invents details, quotes, and citations.
Only reliable when grounded on supplied source text and post-verified.
- First person of the notes. It writes in the first person of whatever voice the notes
are in — frame third-person source material in the third person, or it will impersonate the
source's author.
- One detector, moving target: tuned and evaluated against GPTZero only. Detectors
retrain; results will drift and won't transfer to other detectors.
- Length sweet spot ~250–430 words. Longer generations can repeat or fragment; cap
targets or add a stop string. Texts under ~150 words score higher AI.
- Style is one person's — a specific individual's register, not a general "human" style.
Responsible use
This model was trained to make one person's own writing read as their own, grounded in
their own sources. It is not a license to misrepresent AI-generated text as human work where
that is prohibited (e.g. coursework that bars AI assistance). Use it on writing you're
entitled to edit, and follow the rules of wherever you submit.
License & attribution
Inherits the
Apache-2.0 license of the base model,
Qwen/Qwen3-32B.
Quantized with
mlx-lm. Training data (the author's
personal corpus) is
not released.