Instructions to use mlx-community/Hy3-preview-MTP-4bit with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- MLX
How to use mlx-community/Hy3-preview-MTP-4bit with MLX:
# Download the model from the Hub pip install huggingface_hub[hf_xet] huggingface-cli download --local-dir Hy3-preview-MTP-4bit mlx-community/Hy3-preview-MTP-4bit
- Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- LM Studio
| license: other | |
| license_name: tencent-hunyuan-community | |
| base_model: tencent/Hy3-preview | |
| tags: | |
| - mlx | |
| - speculative-decoding | |
| - mtp | |
| - multi-token-prediction | |
| - hunyuan | |
| library_name: mlx | |
| # Hy3-preview-MTP-4bit | |
| Native **Multi-Token-Prediction (MTP)** sidecar for | |
| [`mlx-community/Hy3-preview-4bit`](https://huggingface.co/mlx-community/Hy3-preview-4bit), | |
| for use as a self-speculative draft head with | |
| [rapid-mlx](https://github.com/machinefi/rapid-mlx). | |
| ## What this is | |
| Tencent's Hunyuan 3 (`model_type=hy_v3`) ships a **DeepSeek-V3-style native MTP | |
| head** as the final decoder layer (`model.layers.80.*`) of the full-precision | |
| [`tencent/Hy3-preview`](https://huggingface.co/tencent/Hy3-preview) checkpoint. | |
| The 4-bit MLX conversion `mlx-community/Hy3-preview-4bit` keeps only layers | |
| `0..79` (the backbone) and **strips** the MTP head. | |
| This repo re-supplies just that head, quantized to match the base checkpoint, | |
| as a single-file sidecar (`model-mtp.safetensors`, 44 tensors). rapid-mlx loads | |
| the base 4-bit backbone and grafts this head at boot to run **self-speculative | |
| decoding** (one draft token per verify step, K=1 chain MTP). | |
| ## Provenance | |
| Extracted from `tencent/Hy3-preview` shards `model-00111-of-00112` + | |
| `model-00112-of-00112` (the two shards holding layer 80). The 593 layer-80 | |
| tensors are remapped to the rapid-mlx MTP param tree: | |
| * `enorm` / `hnorm` — RMSNorms on the next-token embedding and previous hidden | |
| state (DeepSeek-V3 convention). | |
| * `eh_proj` — the `2H -> H` fused projection, applied as | |
| `eh_proj(concat([enorm(embed_next), hnorm(prev_hidden)], -1))` (embedding | |
| first, confirmed against vLLM `deepseek_mtp.py` and SGLang `hunyuan` nextn). | |
| * one HY3 `DecoderLayer` on the MoE branch (QK-norm attention + sigmoid-router | |
| SwitchGLU MoE over 192 experts + a shared expert). | |
| * `norm` — the head's final RMSNorm (upstream `final_layernorm`). | |
| ## Quantization | |
| Matches the base checkpoint: **4-bit `group_size=64` affine** for every Linear | |
| (`eh_proj`, attention projections, `switch_mlp.*`, `shared_mlp.*`); **8-bit | |
| `group_size=64`** for `mlp.router.gate`; all RMSNorms and `router.expert_bias` | |
| kept in full precision. | |
| ## Usage | |
| ```bash | |
| rapid-mlx serve hy3-preview-4bit --speculative-config '{"method":"mtp"}' | |
| ``` | |
| rapid-mlx auto-resolves and downloads this sidecar. The base 4-bit backbone | |
| loads normally; the MTP head is grafted at boot for self-speculative decoding. | |
| ## Measured | |
| * Draft accept rate ~58% (K=1) across code / chinese / reasoning / list prompts. | |
| * Greedy output is batched-consistent lossless vs the MTP-off reference. | |
| The projection tree is byte-identical to a quantized backbone MoE layer, so the | |
| sidecar param names line up 1:1 with the runtime module. | |