Image-Text-to-Text
Transformers
Safetensors
mimo_v2
text-generation
Mixture of Experts
pruned
expert-pruning
reap
hope
mxfp4
fp8
multimodal
vision
audio
video
mtp
custom_code
conversational
8-bit precision
Instructions to use patrickbdevaney/MiMo-V2.6-Flash-REAP50 with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use patrickbdevaney/MiMo-V2.6-Flash-REAP50 with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("image-text-to-text", model="patrickbdevaney/MiMo-V2.6-Flash-REAP50", trust_remote_code=True) messages = [ { "role": "user", "content": [ {"type": "image", "url": "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/p-blog/candy.JPG"}, {"type": "text", "text": "What animal is on the candy?"} ] }, ] pipe(text=messages)# pip install -U transformers accelerate # Load model directly from transformers import AutoModelForCausalLM model = AutoModelForCausalLM.from_pretrained("patrickbdevaney/MiMo-V2.6-Flash-REAP50", trust_remote_code=True, device_map="auto") - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- vLLM
How to use patrickbdevaney/MiMo-V2.6-Flash-REAP50 with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "patrickbdevaney/MiMo-V2.6-Flash-REAP50" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "patrickbdevaney/MiMo-V2.6-Flash-REAP50", "messages": [ { "role": "user", "content": [ { "type": "text", "text": "Describe this image in one sentence." }, { "type": "image_url", "image_url": { "url": "https://cdn.britannica.com/61/93061-050-99147DCE/Statue-of-Liberty-Island-New-York-Bay.jpg" } } ] } ] }'Use Docker
docker model run hf.co/patrickbdevaney/MiMo-V2.6-Flash-REAP50
- SGLang
How to use patrickbdevaney/MiMo-V2.6-Flash-REAP50 with SGLang:
Install from pip and serve model
# Install SGLang from pip: pip install sglang # Start the SGLang server: python3 -m sglang.launch_server \ --model-path "patrickbdevaney/MiMo-V2.6-Flash-REAP50" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "patrickbdevaney/MiMo-V2.6-Flash-REAP50", "messages": [ { "role": "user", "content": [ { "type": "text", "text": "Describe this image in one sentence." }, { "type": "image_url", "image_url": { "url": "https://cdn.britannica.com/61/93061-050-99147DCE/Statue-of-Liberty-Island-New-York-Bay.jpg" } } ] } ] }'Use Docker images
docker run --gpus all \ --shm-size 32g \ -p 30000:30000 \ -v ~/.cache/huggingface:/root/.cache/huggingface \ --env "HF_TOKEN=<secret>" \ --ipc=host \ lmsysorg/sglang:latest \ python3 -m sglang.launch_server \ --model-path "patrickbdevaney/MiMo-V2.6-Flash-REAP50" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "patrickbdevaney/MiMo-V2.6-Flash-REAP50", "messages": [ { "role": "user", "content": [ { "type": "text", "text": "Describe this image in one sentence." }, { "type": "image_url", "image_url": { "url": "https://cdn.britannica.com/61/93061-050-99147DCE/Statue-of-Liberty-Island-New-York-Bay.jpg" } } ] } ] }' - Docker Model Runner
How to use patrickbdevaney/MiMo-V2.6-Flash-REAP50 with Docker Model Runner:
docker model run hf.co/patrickbdevaney/MiMo-V2.6-Flash-REAP50
Model card rewritten and verified against repo files and build artifacts (2026-11-06)
Browse files
README.md
CHANGED
|
@@ -1,146 +1,165 @@
|
|
| 1 |
---
|
| 2 |
-
license:
|
| 3 |
-
base_model: XiaomiMiMo/MiMo-V2.6-Flash
|
| 4 |
base_model_relation: quantized
|
| 5 |
-
library_name:
|
| 6 |
pipeline_tag: image-text-to-text
|
| 7 |
-
language:
|
| 8 |
-
- en
|
| 9 |
-
- zh
|
| 10 |
tags:
|
| 11 |
-
|
| 12 |
-
|
| 13 |
-
|
| 14 |
-
|
| 15 |
-
|
| 16 |
-
|
| 17 |
-
|
| 18 |
-
|
| 19 |
-
|
| 20 |
-
|
| 21 |
-
|
|
|
|
|
|
|
|
|
|
| 22 |
---
|
| 23 |
|
| 24 |
-
|
| 25 |
|
| 26 |
-
|
| 27 |
|
| 28 |
-
|
| 29 |
-
|
| 30 |
-
|
| 31 |
-
|
| 32 |
-
[](https://opensource.org/licenses/Apache-2.0)
|
| 33 |
|
| 34 |
-
|
| 35 |
|
| 36 |
-
|
|
| 37 |
-
|---|---|
|
| 38 |
-
|
|
| 39 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 40 |
|
| 41 |
-
|
| 42 |
|
| 43 |
-
|
| 44 |
|
| 45 |
-
|
|
|
|
|
|
|
|
|
|
| 46 |
|
| 47 |
-
|
| 48 |
|
| 49 |
-
|
| 50 |
|
| 51 |
-
|
| 52 |
|
| 53 |
-
|
| 54 |
-
|
| 55 |
-
|
| 56 |
-
- **Single-Box 128 GB Fit:** Leaves **~42 GiB of unified-memory headroom** on a 128 GB Jetson AGX Thor or DGX Spark for KV cache and multimodal activations.
|
| 57 |
|
| 58 |
-
---
|
| 59 |
|
| 60 |
-
##
|
| 61 |
|
| 62 |
-
|
| 63 |
-
|---|---|---|
|
| 64 |
-
| **Total Parameters** | ~315B | **~164B** |
|
| 65 |
-
| **Active Parameters / Token** | ~11B | **~11B (unchanged)** |
|
| 66 |
-
| **Decoder Layers** | 60 (Layer 0 dense + Layers 1–59 MoE) | **60 (Layer 0 dense + Layers 1–59 MoE; [`./config.json`](./config.json))** |
|
| 67 |
-
| **Routed Experts per MoE Layer** | 256 (`n_group=8`, `topk_group=4`) | **128 (`n_group=8`, `topk_group=4`, 16 experts/group)** |
|
| 68 |
-
| **Active Experts per Token (`num_experts_per_tok`)** | 8 (`routed_scaling_factor=2.827`) | **8 (`routed_scaling_factor=2.827`)** |
|
| 69 |
-
| **Expert Precision** | Native MXFP4 (`E2M1` + `E8M0` scale, block=32) | **Native MXFP4 (bit-exact slice, zero re-quantization)** |
|
| 70 |
-
| **Attention Precision** | Native FP8 (`E4M3` + `F32` block scale 128×128) | **Native FP8 (bit-exact copy)** |
|
| 71 |
-
| **Vision / Video / Audio Encoders** | BF16 (`vision_tower`, `video_tower`, `audio_tower`) | **BF16 (bit-exact copy, unpruned; [`./audio_tokenizer/model.safetensors`](./audio_tokenizer/model.safetensors))** |
|
| 72 |
-
| **MTP Draft Head (`mtp.layers.0..2`)** | 3 dense+attention layers (FP8/BF16) | **Preserved bit-exact ([`./model_mtp.safetensors`](./model_mtp.safetensors))** |
|
| 73 |
-
| **Total Checkpoint Size** | 157 GiB | **85.8 GiB (64 EP shards `model_pp0_ep0..63_shard0.safetensors` + [`./model_mtp.safetensors`](./model_mtp.safetensors); [`./model.safetensors.index.json`](./model.safetensors.index.json))** |
|
| 74 |
-
| **License** | Apache-2.0 | **Apache-2.0** |
|
| 75 |
|
| 76 |
-
--
|
|
|
|
|
|
|
|
|
|
| 77 |
|
| 78 |
-
|
| 79 |
|
| 80 |
-
|
| 81 |
-
- **Teacher-vs-student KL / NLL benchmark status:** A paired held-out teacher-vs-student KL/NLL table (of the kind published on [`GLM-5.3-Flash-REAP50-FP8-v2`](https://huggingface.co/patrickbdevaney/GLM-5.3-Flash-REAP50-FP8-v2) and [`DeepSeek-V4.1-Flash-1017-REAP192-MXFP4`](https://huggingface.co/patrickbdevaney/DeepSeek-V4.1-Flash-1017-REAP192-MXFP4)) has **not yet been run** for `MiMo-V2.6-Flash-REAP50` because `MiMo-V2.6-Flash`'s custom `mimo_v2_flash` architecture ([`./modeling_mimo_v2.py`](./modeling_mimo_v2.py)) is not yet wired into our standalone teacher-logit evaluation harness. See the companion [`MiMo-V2.6-Flash-REAP50-GGUF`](https://huggingface.co/patrickbdevaney/MiMo-V2.6-Flash-REAP50-GGUF) card for additional details on GGUF conversion and runtime support.
|
| 82 |
|
| 83 |
-
-
|
|
|
|
|
|
|
| 84 |
|
| 85 |
-
##
|
| 86 |
|
| 87 |
-
|
| 88 |
-
- **Layer 0 (Dense MLP + Full MLA Attention):** 100% untouched.
|
| 89 |
-
- **All 60 Attention Layers (`self_attn` + `layer_scale`):** Full MLA layers (`0, 5, 11, 17, 23, 29, 35, 41, 47, 53, 59`) and Sliding-Window MLA layers (all others, `sliding_window_size=512`) are copied byte-for-byte in native FP8 (`F8_E4M3` + `F32` `weight_scale_inv`).
|
| 90 |
-
- **Multimodal Towers (`vision_tower`, `video_tower`, `audio_tower`, `multi_modal_projector`):** 100% untouched in `BF16` (plus [`./audio_tokenizer/model.safetensors`](./audio_tokenizer/model.safetensors)).
|
| 91 |
-
- **MTP Speculative Decoding Head (`mtp.layers.0..2`):** 100% untouched in [`./model_mtp.safetensors`](./model_mtp.safetensors).
|
| 92 |
-
- **Surviving 128 Routed Experts per Layer:** Their MXFP4 `weight_packed` (`U8`) and `weight_scale` (`F8_E8M0`) bytes are sliced directly from the base tensors without dequantizing or re-quantizing ([`scripts/mimo_shards.py`](https://github.com/patrickbdevaney/xiaomi-2.6-flash-REAP/blob/main/scripts/mimo_shards.py)).
|
| 93 |
|
| 94 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 95 |
|
| 96 |
-
|
| 97 |
|
| 98 |
-
|
| 99 |
-
`MiMo-V2.6-Flash` uses **grouped sigmoid top-k routing** (`n_routed_experts = 256`, `n_group = 8` groups of 32 experts, `topk_group = 4`, `num_experts_per_tok = 8`, `routed_scaling_factor = 2.827`; see [`research/MIMO_V26_FLASH_SURVEY_2026-09-23.md`](https://github.com/patrickbdevaney/xiaomi-2.6-flash-REAP/blob/main/research/MIMO_V26_FLASH_SURVEY_2026-09-23.md)). Because the router reshapes experts into `[n_group, n_routed_experts // n_group]`, pruning **exactly 16 of 32 experts within each of the 8 routing groups** preserves the exact group topology (`n_group = 8`, 16 experts per group) so existing inference kernels (`vLLM`, `SGLang`, `Transformers`, `llama.cpp`) work out-of-the-box with only `n_routed_experts: 128` updated in [`./config.json`](./config.json).
|
| 100 |
|
| 101 |
-
|
| 102 |
|
| 103 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 104 |
|
| 105 |
-
|
| 106 |
-
Calibration data (`298 sequences × 2048 tokens = 610,304 tokens`; defined in [`scripts/mimo_corpus_spec.py`](https://github.com/patrickbdevaney/xiaomi-2.6-flash-REAP/blob/main/scripts/mimo_corpus_spec.py) and [`wiki/91-capability-coverage.md`](https://github.com/patrickbdevaney/xiaomi-2.6-flash-REAP/blob/main/wiki/91-capability-coverage.md)) was balanced across 6 buckets:
|
| 107 |
-
1. **`general`** — English encyclopedic & long-form analytical text
|
| 108 |
-
2. **`code`** — Multi-language software engineering, algorithms, systems code
|
| 109 |
-
3. **`math`** — Olympiad & undergraduate mathematical proofs and derivations
|
| 110 |
-
4. **`zh`** — Simplified & Traditional Chinese technical and literary text
|
| 111 |
-
5. **`tool`** — Multi-turn agentic tool-calling, JSON schemas, and reasoning traces
|
| 112 |
-
6. **`multimodal`** — Text sequences interleaved with synthetic vision/audio projector embeddings matching the empirical norm/distribution of `multi_modal_projector` outputs ([`scripts/media_loaders.py`](https://github.com/patrickbdevaney/xiaomi-2.6-flash-REAP/blob/main/scripts/media_loaders.py))
|
| 113 |
|
| 114 |
-
|
| 115 |
-
- The **top-16 experts per domain** (by per-domain REAP score $S_j^{(d)}$ with $f_j^{(d)} \ge 16$) are locked as protected domain specialists (35 to 75 specialists locked per layer; [`scripts/reap_select.py`](https://github.com/patrickbdevaney/xiaomi-2.6-flash-REAP/blob/main/scripts/reap_select.py)).
|
| 116 |
-
- Remaining slots in each of the 8 routing groups (`32 → 16` experts per group) are filled by cross-domain normalized REAP score (with a frequency floor $f_j \ge 40$).
|
| 117 |
|
| 118 |
-
---
|
| 119 |
|
| 120 |
-
|
| 121 |
|
| 122 |
-
|
| 123 |
|
| 124 |
-
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 125 |
|
| 126 |
-
##
|
| 127 |
|
| 128 |
-
|
|
|
|
|
|
|
| 129 |
|
| 130 |
-
|
| 131 |
-
|---|---|
|
| 132 |
-
| **Upstream Base Model (`315B` MXFP4+FP8, Apache-2.0)** | [`XiaomiMiMo/MiMo-V2.6-Flash`](https://huggingface.co/XiaomiMiMo/MiMo-V2.6-Flash) · [`./README_upstream.md`](./README_upstream.md) |
|
| 133 |
-
| **REAP Pruning Formulation** | Lasby et al., 2025 — [*REAP the Experts: Why Pruning Prevails for One-Shot MoE Compression*](https://arxiv.org/abs/2510.13999) (`arXiv:2510.13999`) |
|
| 134 |
-
| **Model Config, Modeling Code & Shard Index** | [`./config.json`](./config.json) · [`./modeling_mimo_v2.py`](./modeling_mimo_v2.py) · [`./configuration_mimo_v2.py`](./configuration_mimo_v2.py) · [`./model.safetensors.index.json`](./model.safetensors.index.json) |
|
| 135 |
-
| **MTP Draft Head & Audio Tokenizer Weights** | [`./model_mtp.safetensors`](./model_mtp.safetensors) · [`./audio_tokenizer/model.safetensors`](./audio_tokenizer/model.safetensors) · [`./audio_tokenizer/config.json`](./audio_tokenizer/config.json) |
|
| 136 |
-
| **MiMo-V2.6-Flash REAP-50 Pipeline Repository** | [`patrickbdevaney/xiaomi-2.6-flash-REAP`](https://github.com/patrickbdevaney/xiaomi-2.6-flash-REAP) (`main` @ `329123f`) · [`wiki/README.md`](https://github.com/patrickbdevaney/xiaomi-2.6-flash-REAP/blob/main/wiki/README.md) · [`wiki/00-log.md`](https://github.com/patrickbdevaney/xiaomi-2.6-flash-REAP/blob/main/wiki/00-log.md) |
|
| 137 |
-
| **Architecture Survey & SOTA REAP Methodology** | [`research/MIMO_V26_FLASH_SURVEY_2026-09-23.md`](https://github.com/patrickbdevaney/xiaomi-2.6-flash-REAP/blob/main/research/MIMO_V26_FLASH_SURVEY_2026-09-23.md) · [`research/REAP_METHODOLOGY_SOTA_2026-09-23.md`](https://github.com/patrickbdevaney/xiaomi-2.6-flash-REAP/blob/main/research/REAP_METHODOLOGY_SOTA_2026-09-23.md) |
|
| 138 |
-
| **Saliency Streaming, Selection & Bit-Exact Shard Slicing** | [`scripts/mimo_saliency.py`](https://github.com/patrickbdevaney/xiaomi-2.6-flash-REAP/blob/main/scripts/mimo_saliency.py) · [`scripts/reap_select.py`](https://github.com/patrickbdevaney/xiaomi-2.6-flash-REAP/blob/main/scripts/reap_select.py) · [`scripts/apply_mask.py`](https://github.com/patrickbdevaney/xiaomi-2.6-flash-REAP/blob/main/scripts/apply_mask.py) · [`scripts/mimo_shards.py`](https://github.com/patrickbdevaney/xiaomi-2.6-flash-REAP/blob/main/scripts/mimo_shards.py) |
|
| 139 |
|
| 140 |
-
---
|
| 141 |
|
| 142 |
-
## Citation
|
| 143 |
|
| 144 |
-
|
| 145 |
-
|
| 146 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
---
|
| 2 |
+
license: mit
|
| 3 |
+
base_model: XiaomiMiMo/MiMo-V2.6-Flash-RL
|
| 4 |
base_model_relation: quantized
|
| 5 |
+
library_name: transformers
|
| 6 |
pipeline_tag: image-text-to-text
|
|
|
|
|
|
|
|
|
|
| 7 |
tags:
|
| 8 |
+
- mimo_v2
|
| 9 |
+
- moe
|
| 10 |
+
- pruned
|
| 11 |
+
- expert-pruning
|
| 12 |
+
- reap
|
| 13 |
+
- hope
|
| 14 |
+
- mxfp4
|
| 15 |
+
- fp8
|
| 16 |
+
- multimodal
|
| 17 |
+
- vision
|
| 18 |
+
- audio
|
| 19 |
+
- video
|
| 20 |
+
- mtp
|
| 21 |
+
- custom_code
|
| 22 |
---
|
| 23 |
|
| 24 |
+
# MiMo-V2.6-Flash-REAP50
|
| 25 |
|
| 26 |
+
This is [`XiaomiMiMo/MiMo-V2.6-Flash-RL`](https://huggingface.co/XiaomiMiMo/MiMo-V2.6-Flash-RL) with half of its routed experts removed: each of the 47 MoE layers goes from 256 experts to 128. The weights come to **86.1 GiB** in 65 safetensors shards, small enough to fit a single 128 GB unified-memory machine (NVIDIA Jetson AGX Thor). That fit is an estimate, not a test. It is meant for people who want the omni-modal MiMo-V2.6-Flash model on one box of that size.
|
| 27 |
|
| 28 |
+
> **Status: never served, never benchmarked.** The checkpoint was published without being run for generation.
|
| 29 |
+
> There is no serve log, no quality evaluation, no needle-in-a-haystack test and no measured throughput on any
|
| 30 |
+
> hardware. Any decode speed you may have seen attached to this release (for example "~5 tok/s on Thor") came from
|
| 31 |
+
> memory-bandwidth arithmetic. Nobody measured it.
|
|
|
|
| 32 |
|
| 33 |
+
## Model overview
|
| 34 |
|
| 35 |
+
| | |
|
| 36 |
+
|---|---|
|
| 37 |
+
| Base model | [`XiaomiMiMo/MiMo-V2.6-Flash-RL`](https://huggingface.co/XiaomiMiMo/MiMo-V2.6-Flash-RL) (MIT) |
|
| 38 |
+
| Architecture | `MiMoV2ForCausalLM` (`model_type: mimo_v2`), custom code included (`modeling_mimo_v2.py`) |
|
| 39 |
+
| Parameters | about 157B in the language model after pruning (about 309B before); about 15B active per token. These are computed from the safetensors headers, not taken from a card (see the note below) |
|
| 40 |
+
| Layers | 48: layer 0 is dense, layers 1–47 are MoE. 9 full-attention layers (0, 5, 11, 17, 23, 29, 35, 41, 47) and 39 sliding-window layers (window 128) |
|
| 41 |
+
| Experts | **128 of 256** routed experts kept per MoE layer, top-8 routing, no shared expert (`sigmoid` scoring, `noaux_tc`, `n_group 1`) |
|
| 42 |
+
| Attention | 64 query heads; 4 KV heads on full-attention layers and 8 on SWA layers; head dim 192 (K) / 128 (V) |
|
| 43 |
+
| Context length | 1,048,576 in `config.json`. Not tested: calibration sequences were at most 4,095 tokens |
|
| 44 |
+
| Vocabulary | 152,576, untied embeddings |
|
| 45 |
+
| MTP | 3 next-token-prediction layers (`num_nextn_predict_layers: 3`) in `model_mtp.safetensors`. They have dense FFNs, so pruning did not touch them |
|
| 46 |
+
| Input modalities | text, image, video and audio (vision tower, audio encoder, and `audio_tokenizer/`). The towers are unchanged. **None of these modalities has been tested on the pruned model** |
|
| 47 |
+
| Size on disk | 92,448,660,520 bytes = **86.10 GiB** of model weights (64 `model_pp0_ep*_shard0.safetensors` + `model_mtp.safetensors`). The whole repository is 87.86 GiB once you add `audio_tokenizer/model.safetensors` (1.74 GiB) and the tokenizer files |
|
| 48 |
+
| Licence | MIT, inherited from the base model |
|
| 49 |
+
|
| 50 |
+
Parameter note: 6,016 expert tensors (47 layers × 128 experts) × 3 projections × 4096 × 2048 = 151.4B expert parameters, plus 6.0B non-expert language-model parameters (attention, layer-0 FFN, routers, embeddings, LM head). Restoring the 128 dropped experts per layer gives 308.8B, which matches the base model's stated 309B. Active parameters (8 experts per layer plus all non-expert weights) are about 15.4B, the same as the base, because pruning does not change top-k. The vision tower (0.73B), audio encoder (0.26B) and MTP layers (0.99B) are counted separately.
|
| 51 |
+
|
| 52 |
+
### Precision per component (from the safetensors headers)
|
| 53 |
+
|
| 54 |
+
| Component | Stored as | Changed by this release? |
|
| 55 |
+
|---|---|---|
|
| 56 |
+
| Routed experts (`mlp.experts.*`) | MXFP4: packed E2M1 nibbles (`U8`) + E8M0 block scales (`U8`), block 32. This is Xiaomi's source format | Dropped or kept whole. Kept experts' bytes are copied unchanged and renumbered 0–127 |
|
| 57 |
+
| Routers (`mlp.gate.weight`, `e_score_correction_bias`) | BF16 / F32 | Sliced to the 128 kept rows. Values unchanged (see *Routers*) |
|
| 58 |
+
| Attention `qkv_proj` | FP8 E4M3 with F32 128×128 block scales | No |
|
| 59 |
+
| Attention `o_proj` | BF16 (excluded from FP8 at source) | No |
|
| 60 |
+
| Layer-0 dense FFN | FP8 E4M3 with block scales | No |
|
| 61 |
+
| Embeddings, LM head, norms | BF16 | No |
|
| 62 |
+
| Vision tower, audio encoder | BF16 | No |
|
| 63 |
+
| MTP layers | FP8 E4M3 (`qkv_proj`, FFN) + BF16 | No |
|
| 64 |
|
| 65 |
+
Experts already ship as 4-bit MXFP4 in the source checkpoint, so re-quantizing them buys almost nothing. Pruning is the only real compression lever, and this release uses only that.
|
| 66 |
|
| 67 |
+
## Which version should I use
|
| 68 |
|
| 69 |
+
| Repository | Format | Size | Notes |
|
| 70 |
+
|---|---|---|---|
|
| 71 |
+
| **MiMo-V2.6-Flash-REAP50** (this repo) | safetensors: MXFP4 experts, FP8 / BF16 elsewhere | 86.10 GiB weights | The only artifact here that keeps the model's native video path. Needs a runtime with MiMo-V2 support and a 128-expert config. Untested |
|
| 72 |
+
| [MiMo-V2.6-Flash-REAP50-GGUF](https://huggingface.co/patrickbdevaney/MiMo-V2.6-Flash-REAP50-GGUF) | GGUF `MXFP4_MOE` (86.06 GiB) and a mixed MXFP4/Q2_K file named `Q2_K` (61.64 GiB), plus `mmproj` and `mtp` GGUFs | 61.6–86.1 GiB | For llama.cpp. Text, image and audio at most: llama.cpp has no native path for MiMo video. Never loaded |
|
| 73 |
|
| 74 |
+
Nothing has been measured, so neither repo can be recommended on quality or speed.
|
| 75 |
|
| 76 |
+
## Quickstart
|
| 77 |
|
| 78 |
+
No inference command has been run against this checkpoint. All that is known to work is downloading it:
|
| 79 |
|
| 80 |
+
```bash
|
| 81 |
+
hf download patrickbdevaney/MiMo-V2.6-Flash-REAP50 --local-dir MiMo-V2.6-Flash-REAP50
|
| 82 |
+
```
|
|
|
|
| 83 |
|
| 84 |
+
The repo ships Xiaomi's remote code (`modeling_mimo_v2.py`, `configuration_mimo_v2.py`, `auto_map` in `config.json`) and the base model's chat template and processor config. A runtime that loads the base `MiMo-V2.6-Flash-RL` checkpoint should load this one, because only the expert count changed (`n_routed_experts: 128`). **That is untested.** It needs about 86 GiB for the weights alone, before any KV cache.
|
| 85 |
|
| 86 |
+
## Evaluation
|
| 87 |
|
| 88 |
+
**Not yet evaluated.** This checkpoint has no end-to-end measurement of any kind:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 89 |
|
| 90 |
+
- no perplexity, no teacher-forced agreement against the unpruned model, and no generative or task benchmark;
|
| 91 |
+
- no image, audio or video test;
|
| 92 |
+
- no long-context or needle-in-a-haystack test;
|
| 93 |
+
- no throughput or memory measurement.
|
| 94 |
|
| 95 |
+
The only numbers that exist are selection-time diagnostics on the calibration corpus (see *How it was made*). They measure how much routed output mass the kept experts carry on the data used to pick them. They are not a quality result and should not be read as one.
|
| 96 |
|
| 97 |
+
## Hardware & memory
|
|
|
|
| 98 |
|
| 99 |
+
- **Produced on:** one NVIDIA Jetson AGX Thor (128 GB unified memory). That machine ran the calibration pass, the expert selection and the checkpoint write.
|
| 100 |
+
- **Run on:** nothing. The model has not been loaded for inference anywhere.
|
| 101 |
+
- **Fit estimate (arithmetic only).** The 86.1 GiB of weights plus an FP8 KV cache at the full 1,048,576 tokens comes to about 97.4 GiB before runtime workspace. The KV figure is about 11.25 GiB: 9 full-attention layers × 4 KV heads × (192 + 128) dims × 1 byte, about 11.5 KB per token, while the 39 SWA layers hold only a 128-token window. That total sits under the roughly 117 GiB usable on Thor, but it has not been tried. A BF16 KV cache would double the KV term.
|
| 102 |
|
| 103 |
+
## How it was made
|
| 104 |
|
| 105 |
+
1. **Calibration.** Expert statistics were accumulated over **49.0M tokens** in 27 chunks of packed 4,096-token rows. Every document was truncated at 4,095 tokens. The pass ran layer by layer through the unpruned model, one layer resident at a time. The corpus has nine domains:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 106 |
|
| 107 |
+
| domain | tokens | | domain | tokens |
|
| 108 |
+
|---|---:|---|---|---:|
|
| 109 |
+
| agentic | 11,501,033 | | image | 3,001,238 |
|
| 110 |
+
| ballast (general) | 10,003,073 | | science | 2,980,200 |
|
| 111 |
+
| code | 9,503,748 | | audio | 1,502,892 |
|
| 112 |
+
| math | 7,502,972 | | video | 1,502,610 |
|
| 113 |
+
| finance | 1,503,455 | | | |
|
| 114 |
|
| 115 |
+
The image, audio and video domains are real media run through the model's own towers and processor (with their captions), 6.0M tokens in all, rather than text captions alone. Sources were limited to permissively licensed datasets, with licences checked against the Hugging Face API; a source with no declared licence was excluded. Non-English coverage was not measured separately.
|
| 116 |
|
| 117 |
+
2. **Selection.** Per-expert saliency used the REAP criterion (`reap_1_1_1`, router-weighted expert activation; [Lasby et al., 2025](https://arxiv.org/abs/2510.13999)). The prune set was solved with the **HOPE** objective (arXiv 2609.18916). HOPE minimises `pᵀFp`, the output error of a prune set, interaction terms between experts included; REAP corresponds to the same objective with those off-diagonal terms set to zero. The ratio was 0.50, uniform across all 47 MoE layers (128 kept per layer). The top 8% of experts in each domain were protected from pruning (`protect_frac 0.08`), and candidates were compared by their **worst** domain rather than their mean.
|
|
|
|
| 118 |
|
| 119 |
+
Selection-time diagnostics for the published mask (`artifacts/masks/mask.json` in the pipeline repo). These are retained routed output mass on the calibration corpus, a proxy and not an evaluation:
|
| 120 |
|
| 121 |
+
| domain | retained | | domain | retained |
|
| 122 |
+
|---|---:|---|---|---:|
|
| 123 |
+
| audio (worst) | 0.9935 | | finance | 0.9974 |
|
| 124 |
+
| image | 0.9937 | | ballast | 0.9976 |
|
| 125 |
+
| video | 0.9938 | | code | 0.9983 |
|
| 126 |
+
| science | 0.9973 | | agentic | 0.9983 |
|
| 127 |
+
| math | 0.9974 | | **mean** | **0.9964** |
|
| 128 |
|
| 129 |
+
HOPE objective `pᵀFp` = 0.01624.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 130 |
|
| 131 |
+
3. **Routers.** A router-only refit by output matching against the unpruned teacher was tried on all 47 layers. In every layer the refit failed to beat simply slicing the teacher's router (improvement +0.0%), so all 47 routers are the teacher's weights sliced to the kept experts. Only about 1.1% of routed slots in the calibration data had gone to experts that were pruned.
|
|
|
|
|
|
|
| 132 |
|
| 133 |
+
4. **Write-out.** Whole expert tensors were dropped and the survivors renumbered, with each router's row order checked against the new numbering. No weights were re-quantized and no healing or fine-tuning was applied.
|
| 134 |
|
| 135 |
+
Code, gates and the method write-ups are in the pipeline repository: [patrickbdevaney/xiaomi-2.6-flash-REAP](https://github.com/patrickbdevaney/xiaomi-2.6-flash-REAP).
|
| 136 |
|
| 137 |
+
## Limitations
|
| 138 |
|
| 139 |
+
- **Unevaluated.** Nothing shows that this model performs as well as the original. Pruning 50% of experts is lossy and cannot be undone, and losses can be concentrated in one capability even when the averages look fine.
|
| 140 |
+
- **Long context is unverified.** Calibration never saw more than 4,095 tokens, and the 1M figure is config plus memory arithmetic.
|
| 141 |
+
- **Multimodal inputs are untested.** The towers are unchanged, and the calibration fed real image, audio and video through them. No multimodal output from the pruned model has been checked.
|
| 142 |
+
- **Draft heads.** The base repo's separate `dflash/` speculative-decoding drafter is **not** included: it was trained against the unpruned model, and nobody has checked it against this one. The 3 native MTP layers are included unchanged; their acceptance rate on the pruned trunk has not been measured.
|
| 143 |
+
- `README_upstream.md` in this repo is an early draft of this card, not Xiaomi's model card. Some of its wording (for example "fits and serves") was never verified. Use this README instead.
|
| 144 |
+
- Calibration covered the nine domains above. Other domains and languages were not measured.
|
| 145 |
|
| 146 |
+
## Changelog / corrections
|
| 147 |
|
| 148 |
+
- **2026-09-25:** checkpoint published (weights unchanged since then).
|
| 149 |
+
- **2026-10-24:** correction: never served or benchmarked; "~5 tok/s" was bandwidth arithmetic; the 1M-context fit is sizing arithmetic; per-domain retention is a selection-time proxy. No weights were changed.
|
| 150 |
+
- **2026-11-06:** card rewritten and verified against repo files and build artifacts; a 2026-10-26 automated rewrite contained errors.
|
| 151 |
|
| 152 |
+
## License & attribution
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 153 |
|
| 154 |
+
MIT, inherited from the base model. The base model, its architecture, its multimodal towers and its MTP layers are the work of the Xiaomi MiMo team: [`XiaomiMiMo/MiMo-V2.6-Flash-RL`](https://huggingface.co/XiaomiMiMo/MiMo-V2.6-Flash-RL). This is an independent community derivative, not affiliated with or endorsed by Xiaomi. The expert-saliency criterion is REAP ([arXiv 2510.13999](https://arxiv.org/abs/2510.13999)); the prune-set objective is HOPE (arXiv 2609.18916).
|
| 155 |
|
| 156 |
+
## Citation
|
| 157 |
|
| 158 |
+
```bibtex
|
| 159 |
+
@misc{devaney2026mimov26flashreap50,
|
| 160 |
+
title = {MiMo-V2.6-Flash-REAP50: 50\% routed-expert pruning of MiMo-V2.6-Flash-RL},
|
| 161 |
+
author = {Patrick Devaney},
|
| 162 |
+
year = {2026},
|
| 163 |
+
howpublished = {\url{https://huggingface.co/patrickbdevaney/MiMo-V2.6-Flash-REAP50}}
|
| 164 |
+
}
|
| 165 |
+
```
|