Downloads · 30 days
25
7% of all-time downloads
xunkutech-ai/Qwythos-9B-v2-MLX-oQ6-mtp
Qwythos-9B-v2-MLX-oQ6-mtp is a image-text-to-text model from xunkutech-ai. Use it for the image-text-to-text task on the model card, and read the license before you ship it in a product. It is set up for mlx. The card lists the license as apache-2.0.
This repository, xunkutech-ai/Qwythos-9B-v2-MLX-oQ6-mtp, contains an oMLX-specific oQ6 quantization of xunkutech-ai/Qwythos-9B-v2-MLX-bf16-mtp. It retains the model's native Multi-Token Prediction (MTP) head for oMLX…
Downloads · 30 days
25
7% of all-time downloads
All-time downloads
358
Public
Parameters
9.7B
8.5 GB on disk
Likes
0
Public
Click a slice to open those files.
.safetensors8.5 GB · 100%
How the weights are stored.
U329.2B · 95%
From the Hugging Face model README
This repository, xunkutech-ai/Qwythos-9B-v2-MLX-oQ6-mtp, contains an oMLX-specific oQ6 quantization of xunkutech-ai/Qwythos-9B-v2-MLX-bf16-mtp. It retains the model's native Multi-Token Prediction (MTP) head for oMLX Lightning MTP and uses a sensitivity-aware quantization plan: eligible weights default to 6-bit affine quantization with group size 64, while 30 sensitive projections are stored at 8-bit.
No additional fine-tuning was performed. This artifact changes storage and inference precision only.
Compatibility notice: this embedded-MTP model is intended for oMLX. Standard MLX-VLM, MLX-LM, and LM Studio runtimes do not provide the embedded MTP loading, quantization, and Lightning MTP behavior required by this artifact. A local directory under
~/.lmstudio/modelsdoes not by itself make the model compatible with LM Studio's standard MLX runtime.
| Repository | Precision | Recommended use |
|---|---|---|
| xunkutech-ai/Qwythos-9B-v2-MLX-bf16-mtp | BF16 | Source model and highest-fidelity conversion |
| xunkutech-ai/Qwythos-9B-v2-MLX-oQ6-mtp | oQ6 with selected oQ8 projections | Minimum recommended quantization for reliable Hermes-style tool use |
| xunkutech-ai/Qwythos-9B-v2-MLX-oQ8-mtp | oQ8 | Recommended when maximum agent reliability matters |
The visual tower, image special tokens, one-million-token YaRN configuration, Qwen3.5 chat template, and embedded MTP head are retained from the BF16 source.
Qwythos-9B-v2 is an Empero AI reasoning model built on Qwen3.5-9B. The v2 release applies Final-Token Preference Optimization (FTPO) to reduce repetition loops while preserving the reasoning capability of the earlier checkpoint. It also restores the native Qwen3.5 MTP head.
The upstream developers describe v2 as a hygiene and reliability release rather than a new capability tier. The restored MTP head came from the Qwen3.5-9B base and was not co-trained with the FTPO-updated main weights, so Lightning MTP acceptance remains workload-dependent.
The following values come from the upstream model card and were not independently reproduced during this quantization:
| Benchmark | Upstream Qwythos-9B-v2 result |
|---|---|
| MMLU, chain-of-thought | 83.8% |
| MMLU, 5-shot log-likelihood | 69.6% |
| ARC-Challenge | 96.4% |
| GPQA-Diamond | 49.0% |
| GSM8K | 93.6% |
| HumanEval pass@1 | 77.4% |
| Looping rate, greedy | 0.0% |
| Refusal rate | 0.0% |
See the upstream model card for its full methodology, training description, and limitations.
Install and start oMLX:
brew tap jundot/omlx https://github.com/jundot/omlx
brew install omlx
omlx start
Alternatively, point oMLX at an explicit model directory:
omlx serve --model-dir /path/to/models
Place the complete Qwythos-9B-v2-MLX-oQ6-mtp directory under the selected
oMLX model directory. Then open the oMLX Admin UI, select the model, and enable
Lightning MTP. Use the embedded Lightning MTP mode, not a separate external
draft model.
If the Lightning MTP option is unavailable, verify that:
config.json still declares mtp_num_hidden_layers: 1;language_model.mtp.* entries;Use the exact model ID shown in the oMLX Models page if it differs from the directory name.
curl http://localhost:8000/v1/chat/completions \
-H "Content-Type: application/json" \
--data '{
"model": "Qwythos-9B-v2-MLX-oQ6-mtp",
"messages": [
{
"role": "user",
"content": "Explain how native MTP speculative decoding works."
}
],
"temperature": 0.6,
"top_p": 0.95,
"top_k": 20,
"repetition_penalty": 1.05,
"max_new_tokens": 16384
}'
Clients that expose the OpenAI-standard max_tokens field instead of
max_new_tokens may use that equivalent server-supported field.
The configuration below produced the strongest directly comparable result in the expanded Hermes tool-calling test:
{
"temperature": 0.6,
"top_p": 0.95,
"top_k": 20,
"repetition_penalty": 1.05,
"max_new_tokens": 16384
}
The 16,384-token budget is intended for difficult reasoning, coding, long context, or agent tasks. Use a smaller limit for ordinary chat and short tool calls. The upstream model was trained to reduce repetition loops, so the 1.05 repetition penalty is conservative rather than load-bearing.
The local configuration was inspected after quantization:
The extra 8-bit projections are part of the oQ6 sensitivity plan. This model is therefore not a uniform 6-bit conversion.
These tests evaluate operational tool-calling behavior, not general benchmark
quality. They were run through a local OpenAI-compatible oMLX endpoint using
tool_choice="auto".
Each test used two real model inference turns:
The harness covered three workflows:
A run passed only when the model returned the correct tool_calls and critical
arguments. A prose claim such as "the file was updated" did not count as
success. External side effects were simulated; the test did not modify a real
production service.
The first phase used the same file workflow, the same 15 seeds, and this configuration:
temperature: 0.6
top_p: 0.95
top_k: 60
min_p: 0
| Quantization | Passed | Success rate |
|---|---|---|
| oQ4 | 10 / 15 | 66.7% |
| oQ5 | 14 / 15 | 93.3% |
| oQ6 | 15 / 15 | 100% |
The main oQ4 failure mode was a correct first read followed by prose claiming that the write had completed without an actual write tool call.
The expanded phase used the recommended sampling configuration shown above. It did not set a seed, so it measures repeated operational stability rather than deterministic token-for-token equivalence.
| Quantization | File update | Service restart | Deployment rollback | Overall |
|---|---|---|---|---|
| oQ4, run 1 | 8 / 10 | 10 / 10 | 9 / 10 | 27 / 30 |
| oQ4, run 2 | 6 / 10 | 10 / 10 | 10 / 10 | 26 / 30 |
| oQ4 combined | 14 / 20 | 20 / 20 | 19 / 20 | 53 / 60 (88.3%) |
| oQ6 | 10 / 10 | 10 / 10 | 10 / 10 | 30 / 30 (100%) |
| oQ8 | 10 / 10 | 10 / 10 | 10 / 10 | 30 / 30 (100%) |
At temperature=0.7, top_p=0.95, top_k=60, and min_p=0, a paired
16-case test produced:
| Quantization | Success rate |
|---|---|
| oQ6 | 15 / 16 (93.8%) |
| oQ8 | 16 / 16 (100%) |
An additional 30-case oQ8 campaign passed 30/30, giving oQ8 a cumulative 46/46 under that higher-temperature configuration.
No quantization level makes side-effect execution inherently safe. The calling application should require real tool calls, validate arguments, enforce permissions, and retry or escalate when a required action is missing.
The local oQ6 artifact was checked for the following properties:
config.json declares 6-bit affine quantization with group size 64;mtp_num_hidden_layers is 1;| File | Size | Description |
|---|---|---|
config.json | 10.9 KB | Qwen3.5 configuration and sensitivity-aware oQ6 plan |
model-00001-of-00002.safetensors | 5.04 GB | Quantized model shard 1/2 |
model-00002-of-00002.safetensors | 3.47 GB | Quantized model shard 2/2, including preserved MTP data |
model.safetensors.index.json | 121 KB | Tensor-to-shard index |
tokenizer.json | 20.0 MB | Qwen3.5 tokenizer |
tokenizer_config.json | 1.2 KB | Tokenizer metadata |
chat_template.jinja | 8.0 KB | Qwen3.5 chat and tool-calling template |
preprocessor_config.json | 390 B | Image preprocessing configuration |
generation_config.json | 163 B | Generation token configuration |
--draft-model repository.This quantized conversion is released under the same Apache-2.0 license as the upstream model.