Instructions to use ericlmtn/qwen3-32b-grounded-voice-mlx with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- MLX
How to use ericlmtn/qwen3-32b-grounded-voice-mlx with MLX:
# Make sure mlx-lm is installed # pip install --upgrade mlx-lm # Generate text with mlx-lm from mlx_lm import load, generate model, tokenizer = load("ericlmtn/qwen3-32b-grounded-voice-mlx") prompt = "Write a story about Einstein" messages = [{"role": "user", "content": prompt}] prompt = tokenizer.apply_chat_template( messages, add_generation_prompt=True ) text = generate(model, tokenizer, prompt=prompt, verbose=True) - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- LM Studio
- Pi
How to use ericlmtn/qwen3-32b-grounded-voice-mlx with Pi:
Start the MLX server
# Install MLX LM: uv tool install mlx-lm # Start a local OpenAI-compatible server: mlx_lm.server --model "ericlmtn/qwen3-32b-grounded-voice-mlx"
Configure the model in Pi
# Install Pi: npm install -g @mariozechner/pi-coding-agent # Add to ~/.pi/agent/models.json: { "providers": { "mlx-lm": { "baseUrl": "http://localhost:8080/v1", "api": "openai-completions", "apiKey": "none", "models": [ { "id": "ericlmtn/qwen3-32b-grounded-voice-mlx" } ] } } }Run Pi
# Start Pi in your project directory: pi
- Hermes Agent new
How to use ericlmtn/qwen3-32b-grounded-voice-mlx with Hermes Agent:
Start the MLX server
# Install MLX LM: uv tool install mlx-lm # Start a local OpenAI-compatible server: mlx_lm.server --model "ericlmtn/qwen3-32b-grounded-voice-mlx"
Configure Hermes
# Install Hermes: curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash hermes setup # Point Hermes at the local server: hermes config set model.provider custom hermes config set model.base_url http://127.0.0.1:8080/v1 hermes config set model.default ericlmtn/qwen3-32b-grounded-voice-mlx
Run Hermes
hermes
- OpenClaw new
How to use ericlmtn/qwen3-32b-grounded-voice-mlx with OpenClaw:
Start the MLX server
# Install MLX LM: uv tool install mlx-lm # Start a local OpenAI-compatible server: mlx_lm.server --model "ericlmtn/qwen3-32b-grounded-voice-mlx"
Configure OpenClaw
# Install OpenClaw: npm install -g openclaw@latest # Register the local server and set it as the default model: openclaw onboard --non-interactive --mode local \ --auth-choice custom-api-key \ --custom-base-url http://127.0.0.1:8080/v1 \ --custom-model-id "ericlmtn/qwen3-32b-grounded-voice-mlx" \ --custom-provider-id mlx-lm \ --custom-compatibility openai \ --custom-text-input \ --accept-risk \ --skip-health
Run OpenClaw
openclaw agent --local --agent main --message "Hello from Hugging Face"
- MLX LM
How to use ericlmtn/qwen3-32b-grounded-voice-mlx with MLX LM:
Generate or start a chat session
# Install MLX LM uv tool install mlx-lm # Interactive chat REPL mlx_lm.chat --model "ericlmtn/qwen3-32b-grounded-voice-mlx"
Run an OpenAI-compatible server
# Install MLX LM uv tool install mlx-lm # Start the server mlx_lm.server --model "ericlmtn/qwen3-32b-grounded-voice-mlx" # Calling the OpenAI-compatible server with curl curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "ericlmtn/qwen3-32b-grounded-voice-mlx", "messages": [ {"role": "user", "content": "Hello"} ] }'
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)
pip install mlx-lm
python -m mlx_lm generate --model ericlmtn/qwen3-32b-grounded-voice-mlx \
--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.
- Downloads last month
- -
4-bit
Model tree for ericlmtn/qwen3-32b-grounded-voice-mlx
Base model
Qwen/Qwen3-32B