Commit ·
d07994b
0
Parent(s):
Duplicate from ctech123/Qwen3.8-Flash-Next-E384-FP4-V2
Browse filesThis view is limited to 50 files because it contains too many changes. See raw diff
- .gitattributes +37 -0
- README.md +108 -0
- behavior_results.json +135 -0
- benchmark_results.json +73 -0
- chat_template.jinja +170 -0
- config.json +1682 -0
- expert_selection.json +1 -0
- generation_config.json +12 -0
- merges.txt +0 -0
- model-00001-of-00021.safetensors +3 -0
- model-00002-of-00021.safetensors +3 -0
- model-00003-of-00021.safetensors +3 -0
- model-00004-of-00021.safetensors +3 -0
- model-00005-of-00021.safetensors +3 -0
- model-00006-of-00021.safetensors +3 -0
- model-00007-of-00021.safetensors +3 -0
- model-00008-of-00021.safetensors +3 -0
- model-00009-of-00021.safetensors +3 -0
- model-00010-of-00021.safetensors +3 -0
- model-00011-of-00021.safetensors +3 -0
- model-00012-of-00021.safetensors +3 -0
- model-00013-of-00021.safetensors +3 -0
- model-00014-of-00021.safetensors +3 -0
- model-00015-of-00021.safetensors +3 -0
- model-00016-of-00021.safetensors +3 -0
- model-00017-of-00021.safetensors +3 -0
- model-00018-of-00021.safetensors +3 -0
- model-00019-of-00021.safetensors +3 -0
- model-00020-of-00021.safetensors +3 -0
- model-00021-of-00021.safetensors +3 -0
- model.safetensors.index.json +3 -0
- mtp_draft/artifacts/draft_vocab_64k.pt +3 -0
- mtp_draft/bench_mtp_client.py +72 -0
- mtp_draft/compare_outputs.py +22 -0
- mtp_draft/nvfp4_ops.py +54 -0
- mtp_draft/plugin/pyproject.toml +15 -0
- mtp_draft/plugin/q38_mtp_draft.py +19 -0
- mtp_draft/q38_draft.py +112 -0
- mtp_draft/results/e384_k0.json +1 -0
- mtp_draft/results/e384_native_k3.json +1 -0
- mtp_draft/results/e384_native_k5.json +1 -0
- mtp_draft/results/e384_native_k7.json +1 -0
- mtp_draft/results/e384_recipe64k_k3.json +1 -0
- mtp_draft/results/e384_recipe64k_k5.json +1 -0
- mtp_draft/results/e384_recipe64k_k7.json +1 -0
- mtp_draft/results/e384_recipe64k_k9.json +1 -0
- mtp_draft/results/orig_native_k5.json +1 -0
- mtp_draft/run_mtp_serve.sh +27 -0
- preprocessor_config.json +21 -0
- serve_vllm.sh +16 -0
.gitattributes
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
*.7z filter=lfs diff=lfs merge=lfs -text
|
| 2 |
+
*.arrow filter=lfs diff=lfs merge=lfs -text
|
| 3 |
+
*.bin filter=lfs diff=lfs merge=lfs -text
|
| 4 |
+
*.bz2 filter=lfs diff=lfs merge=lfs -text
|
| 5 |
+
*.ckpt filter=lfs diff=lfs merge=lfs -text
|
| 6 |
+
*.ftz filter=lfs diff=lfs merge=lfs -text
|
| 7 |
+
*.gz filter=lfs diff=lfs merge=lfs -text
|
| 8 |
+
*.h5 filter=lfs diff=lfs merge=lfs -text
|
| 9 |
+
*.joblib filter=lfs diff=lfs merge=lfs -text
|
| 10 |
+
*.lfs.* filter=lfs diff=lfs merge=lfs -text
|
| 11 |
+
*.mlmodel filter=lfs diff=lfs merge=lfs -text
|
| 12 |
+
*.model filter=lfs diff=lfs merge=lfs -text
|
| 13 |
+
*.msgpack filter=lfs diff=lfs merge=lfs -text
|
| 14 |
+
*.npy filter=lfs diff=lfs merge=lfs -text
|
| 15 |
+
*.npz filter=lfs diff=lfs merge=lfs -text
|
| 16 |
+
*.onnx filter=lfs diff=lfs merge=lfs -text
|
| 17 |
+
*.ot filter=lfs diff=lfs merge=lfs -text
|
| 18 |
+
*.parquet filter=lfs diff=lfs merge=lfs -text
|
| 19 |
+
*.pb filter=lfs diff=lfs merge=lfs -text
|
| 20 |
+
*.pickle filter=lfs diff=lfs merge=lfs -text
|
| 21 |
+
*.pkl filter=lfs diff=lfs merge=lfs -text
|
| 22 |
+
*.pt filter=lfs diff=lfs merge=lfs -text
|
| 23 |
+
*.pth filter=lfs diff=lfs merge=lfs -text
|
| 24 |
+
*.rar filter=lfs diff=lfs merge=lfs -text
|
| 25 |
+
*.safetensors filter=lfs diff=lfs merge=lfs -text
|
| 26 |
+
saved_model/**/* filter=lfs diff=lfs merge=lfs -text
|
| 27 |
+
*.tar.* filter=lfs diff=lfs merge=lfs -text
|
| 28 |
+
*.tar filter=lfs diff=lfs merge=lfs -text
|
| 29 |
+
*.tflite filter=lfs diff=lfs merge=lfs -text
|
| 30 |
+
*.tgz filter=lfs diff=lfs merge=lfs -text
|
| 31 |
+
*.wasm filter=lfs diff=lfs merge=lfs -text
|
| 32 |
+
*.xz filter=lfs diff=lfs merge=lfs -text
|
| 33 |
+
*.zip filter=lfs diff=lfs merge=lfs -text
|
| 34 |
+
*.zst filter=lfs diff=lfs merge=lfs -text
|
| 35 |
+
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
| 36 |
+
model.safetensors.index.json filter=lfs diff=lfs merge=lfs -text
|
| 37 |
+
tokenizer.json filter=lfs diff=lfs merge=lfs -text
|
README.md
ADDED
|
@@ -0,0 +1,108 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
license: other
|
| 3 |
+
license_name: nvidia-open-model-agreement
|
| 4 |
+
license_link: https://www.nvidia.com/en-us/agreements/enterprise-software/nvidia-open-model-agreement/
|
| 5 |
+
base_model: autotrust/Qwen3.8-Flash-Next-E384-FP4-Local
|
| 6 |
+
base_model_relation: merge
|
| 7 |
+
pipeline_tag: image-text-to-text
|
| 8 |
+
library_name: vllm
|
| 9 |
+
language:
|
| 10 |
+
- en
|
| 11 |
+
- zh
|
| 12 |
+
tags:
|
| 13 |
+
- qwen3.8
|
| 14 |
+
- moe
|
| 15 |
+
- nvfp4
|
| 16 |
+
- modelopt
|
| 17 |
+
- mtp
|
| 18 |
+
- rl
|
| 19 |
+
- grpo
|
| 20 |
+
---
|
| 21 |
+
|
| 22 |
+
# Qwen3.8-Flash-Next-E384-FP4-V2
|
| 23 |
+
|
| 24 |
+
A compact build of [nvidia/Qwen3.8-Flash-Next-FP4-Local](https://huggingface.co/nvidia/Qwen3.8-Flash-Next-FP4-Local) found by
|
| 25 |
+
**Neural Architecture Search (NAS)** over the routed-expert configuration: it keeps **384 of the 512 routed experts** in every
|
| 26 |
+
decoder MoE layer and in the MTP layer.
|
| 27 |
+
|
| 28 |
+
Unchanged from the original:
|
| 29 |
+
- top-10 routing and the shared experts;
|
| 30 |
+
- attention, the n-gram PLE table, the vision tower and the tokenizer.
|
| 31 |
+
|
| 32 |
+
This is an unofficial derivative, not produced or endorsed by Alibaba or NVIDIA.
|
| 33 |
+
|
| 34 |
+
| | original (512 experts) | **E384** |
|
| 35 |
+
|---|---|---|
|
| 36 |
+
| weights | 102.14 GB = 95.12 GiB | **85.66 GB = 79.78 GiB** (−15.35 GiB, −16.1 %) |
|
| 37 |
+
| routed experts / layer (decoder + MTP) | 512 | 384 |
|
| 38 |
+
| active experts / token | 10 + shared | 10 + shared |
|
| 39 |
+
|
| 40 |
+
Full merged checkpoint of the E384 FP4 model after GRPO-style reinforcement learning with a LoRA
|
| 41 |
+
adapter. **This is a complete model, not an adapter**: all 21 weight shards, the tokenizer, configs and
|
| 42 |
+
MTP files are included. It is an unofficial derivative and is not endorsed by Alibaba or NVIDIA.
|
| 43 |
+
|
| 44 |
+
## Serving
|
| 45 |
+
|
| 46 |
+
Validated with vLLM 0.31 on one B200. The included `vllm_patch/sitecustomize.py` is needed for this
|
| 47 |
+
checkpoint's FP4/CSF/PLE weight layout. From this directory:
|
| 48 |
+
|
| 49 |
+
```bash
|
| 50 |
+
export PYTHONPATH="$PWD/vllm_patch${PYTHONPATH:+:$PYTHONPATH}"
|
| 51 |
+
vllm serve . --served-model-name e384-rl --port 8000 \
|
| 52 |
+
--tensor-parallel-size 1 --dtype bfloat16 --kv-cache-dtype fp8 \
|
| 53 |
+
--quantization modelopt_mixed --mamba-cache-mode align \
|
| 54 |
+
--enable-prefix-caching --enable-chunked-prefill \
|
| 55 |
+
--max-model-len 72000 --max-num-seqs 128 --gpu-memory-utilization 0.90 \
|
| 56 |
+
--reasoning-parser qwen3 --tool-call-parser qwen3_xml --enable-auto-tool-choice
|
| 57 |
+
```
|
| 58 |
+
|
| 59 |
+
`serve_vllm.sh` is the equivalent portable launcher. The model was benchmarked through this serving
|
| 60 |
+
path, including the FP8 KV cache and the Qwen reasoning/tool parsers.
|
| 61 |
+
|
| 62 |
+
## Training and checkpoint contents
|
| 63 |
+
|
| 64 |
+
- Three GRPO-style LoRA updates with verifiable rewards; the final round targets short-budget CVSS
|
| 65 |
+
completion and structured findings emission.
|
| 66 |
+
- LoRA rank 32, alpha 64. The routed experts, router, shared expert and PLE are frozen.
|
| 67 |
+
- The GDN projection deltas are folded at full precision and those projections are stored as BF16;
|
| 68 |
+
the corresponding entries are removed from `quantization_config.quantized_layers`. Other model
|
| 69 |
+
tensors retain the base checkpoint format.
|
| 70 |
+
- The final adapter was merged into the weights before this repository was created. No adapter loading
|
| 71 |
+
step is needed.
|
| 72 |
+
|
| 73 |
+
## Full benchmark results
|
| 74 |
+
|
| 75 |
+
Same benchmark harness and serving settings for all rows. These are single runs; GPQA has only 198
|
| 76 |
+
questions and is correspondingly noisy. AIME 2026 uses 30 problems x 4 samples with xhigh reasoning and
|
| 77 |
+
a 64k generation budget. Base numbers are the previously published reference numbers, not a rerun.
|
| 78 |
+
|
| 79 |
+
| benchmark | base reference | this model |
|
| 80 |
+
|---|---:|---:|
|
| 81 |
+
| GPQA-Diamond (low, 32k) | 77.3 | **75.76** |
|
| 82 |
+
| MMLU (14,042) | 86.9 | **87.37** |
|
| 83 |
+
| C-Eval val (1,346) | 89.0 | **89.97** |
|
| 84 |
+
| AIME 2026 (xhigh, 64k) | 93.3 | **95.0** |
|
| 85 |
+
| HumanEval (164, greedy) | 97.6 | **98.78** |
|
| 86 |
+
| MMMU val (900) | 79.4 | **78.22** |
|
| 87 |
+
| tool calling (800) | — | **77.88** |
|
| 88 |
+
|
| 89 |
+
Detailed per-task counts and truncation statistics are in `benchmark_results.json`.
|
| 90 |
+
|
| 91 |
+
### AIME reasoning length
|
| 92 |
+
|
| 93 |
+
Compared with the preceding RL checkpoint on the same 120 AIME samples, total completion tokens fell
|
| 94 |
+
2.05% (19,897 to 19,490 per answer on average), while accuracy rose from 92.5 to 95.0. The median was
|
| 95 |
+
essentially unchanged (16,528 to 16,675 tokens); the reduction came mainly from the long tail (P90
|
| 96 |
+
58,272 to 45,339) and fewer 65,536-token truncations (9 to 6). `completion_tokens` includes both the
|
| 97 |
+
reasoning trace and the final answer.
|
| 98 |
+
|
| 99 |
+
## Behavior notes and limitations
|
| 100 |
+
|
| 101 |
+
On the same training-prompt evaluation used during the final RL round, CVSS3 completion within a 2,200
|
| 102 |
+
token budget rose from 39% to 70%, CVSS4 from 18% to 60%, and structured-findings emission reward from
|
| 103 |
+
0.609 to 0.917. Math and guard rewards did not degrade in that evaluation. These are training-prompt
|
| 104 |
+
measurements, not an independent behavior benchmark.
|
| 105 |
+
|
| 106 |
+
**CVSS arithmetic is still not reliable**: among completed answers, exact agreement with the reference
|
| 107 |
+
implementation was about 4.5% for CVSS3 and 4.2% for CVSS4 in that evaluation. This checkpoint should not
|
| 108 |
+
be described as having fully fixed CVSS scoring. See `behavior_results.json` for the detailed comparison.
|
behavior_results.json
ADDED
|
@@ -0,0 +1,135 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"description": "Iteration-2 short-budget CVSS RL round; same 351 training prompts x 8 samples for both evaluations, temperature 1.0/top_p 0.95. iter2 file = it1 policy before the update; iter3 file = it2 policy after the update. Not held-out.",
|
| 3 |
+
"changes": {
|
| 4 |
+
"cvss_max_tokens": 2200,
|
| 5 |
+
"reward": "lenient score extraction + continuous absolute-error reward + exact bonus + cvss3 severity credit",
|
| 6 |
+
"training": "group by full (task,prompt), skip empty CVSS truncations from backpropagation",
|
| 7 |
+
"warm_start": "grpo/lora_it1/ckpt"
|
| 8 |
+
},
|
| 9 |
+
"it1_policy": {
|
| 10 |
+
"tasks": {
|
| 11 |
+
"cvss3": {
|
| 12 |
+
"samples": 880,
|
| 13 |
+
"mean_reward": 0.1678,
|
| 14 |
+
"avg_completion_tokens": 1998
|
| 15 |
+
},
|
| 16 |
+
"cvss4": {
|
| 17 |
+
"samples": 440,
|
| 18 |
+
"mean_reward": 0.0545,
|
| 19 |
+
"avg_completion_tokens": 2167
|
| 20 |
+
},
|
| 21 |
+
"emission": {
|
| 22 |
+
"samples": 360,
|
| 23 |
+
"mean_reward": 0.6089,
|
| 24 |
+
"avg_completion_tokens": 973
|
| 25 |
+
},
|
| 26 |
+
"format": {
|
| 27 |
+
"samples": 240,
|
| 28 |
+
"mean_reward": 1.0,
|
| 29 |
+
"avg_completion_tokens": 36
|
| 30 |
+
},
|
| 31 |
+
"guard": {
|
| 32 |
+
"samples": 128,
|
| 33 |
+
"mean_reward": 0.8047,
|
| 34 |
+
"avg_completion_tokens": 761
|
| 35 |
+
},
|
| 36 |
+
"math": {
|
| 37 |
+
"samples": 720,
|
| 38 |
+
"mean_reward": 0.7542,
|
| 39 |
+
"avg_completion_tokens": 333
|
| 40 |
+
},
|
| 41 |
+
"retire": {
|
| 42 |
+
"samples": 40,
|
| 43 |
+
"mean_reward": 0.66,
|
| 44 |
+
"avg_completion_tokens": 1040
|
| 45 |
+
}
|
| 46 |
+
},
|
| 47 |
+
"cvss_detail": {
|
| 48 |
+
"cvss3": {
|
| 49 |
+
"samples": 880,
|
| 50 |
+
"finished": 344,
|
| 51 |
+
"parsed": 279,
|
| 52 |
+
"exact": 16,
|
| 53 |
+
"within_0.3": 36,
|
| 54 |
+
"fake_zero": 31,
|
| 55 |
+
"exact_over_all": 0.0182,
|
| 56 |
+
"exact_over_finished": 0.0465,
|
| 57 |
+
"within_0.3_over_finished": 0.1047
|
| 58 |
+
},
|
| 59 |
+
"cvss4": {
|
| 60 |
+
"samples": 440,
|
| 61 |
+
"finished": 77,
|
| 62 |
+
"parsed": 39,
|
| 63 |
+
"exact": 2,
|
| 64 |
+
"within_0.3": 9,
|
| 65 |
+
"fake_zero": 0,
|
| 66 |
+
"exact_over_all": 0.0045,
|
| 67 |
+
"exact_over_finished": 0.026,
|
| 68 |
+
"within_0.3_over_finished": 0.1169
|
| 69 |
+
}
|
| 70 |
+
}
|
| 71 |
+
},
|
| 72 |
+
"it2_policy": {
|
| 73 |
+
"tasks": {
|
| 74 |
+
"cvss3": {
|
| 75 |
+
"samples": 880,
|
| 76 |
+
"mean_reward": 0.3527,
|
| 77 |
+
"avg_completion_tokens": 1783
|
| 78 |
+
},
|
| 79 |
+
"cvss4": {
|
| 80 |
+
"samples": 440,
|
| 81 |
+
"mean_reward": 0.2948,
|
| 82 |
+
"avg_completion_tokens": 1991
|
| 83 |
+
},
|
| 84 |
+
"emission": {
|
| 85 |
+
"samples": 360,
|
| 86 |
+
"mean_reward": 0.9169,
|
| 87 |
+
"avg_completion_tokens": 838
|
| 88 |
+
},
|
| 89 |
+
"format": {
|
| 90 |
+
"samples": 240,
|
| 91 |
+
"mean_reward": 1.0,
|
| 92 |
+
"avg_completion_tokens": 35
|
| 93 |
+
},
|
| 94 |
+
"guard": {
|
| 95 |
+
"samples": 128,
|
| 96 |
+
"mean_reward": 0.8125,
|
| 97 |
+
"avg_completion_tokens": 876
|
| 98 |
+
},
|
| 99 |
+
"math": {
|
| 100 |
+
"samples": 720,
|
| 101 |
+
"mean_reward": 0.8347,
|
| 102 |
+
"avg_completion_tokens": 348
|
| 103 |
+
},
|
| 104 |
+
"retire": {
|
| 105 |
+
"samples": 40,
|
| 106 |
+
"mean_reward": 0.64,
|
| 107 |
+
"avg_completion_tokens": 1019
|
| 108 |
+
}
|
| 109 |
+
},
|
| 110 |
+
"cvss_detail": {
|
| 111 |
+
"cvss3": {
|
| 112 |
+
"samples": 880,
|
| 113 |
+
"finished": 617,
|
| 114 |
+
"parsed": 553,
|
| 115 |
+
"exact": 28,
|
| 116 |
+
"within_0.3": 74,
|
| 117 |
+
"fake_zero": 26,
|
| 118 |
+
"exact_over_all": 0.0318,
|
| 119 |
+
"exact_over_finished": 0.0454,
|
| 120 |
+
"within_0.3_over_finished": 0.1199
|
| 121 |
+
},
|
| 122 |
+
"cvss4": {
|
| 123 |
+
"samples": 440,
|
| 124 |
+
"finished": 264,
|
| 125 |
+
"parsed": 201,
|
| 126 |
+
"exact": 11,
|
| 127 |
+
"within_0.3": 39,
|
| 128 |
+
"fake_zero": 1,
|
| 129 |
+
"exact_over_all": 0.025,
|
| 130 |
+
"exact_over_finished": 0.0417,
|
| 131 |
+
"within_0.3_over_finished": 0.1477
|
| 132 |
+
}
|
| 133 |
+
}
|
| 134 |
+
}
|
| 135 |
+
}
|
benchmark_results.json
ADDED
|
@@ -0,0 +1,73 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"mmmu": {
|
| 3 |
+
"n": 900,
|
| 4 |
+
"ok": 704,
|
| 5 |
+
"trunc": 1,
|
| 6 |
+
"errors": 0,
|
| 7 |
+
"tokens": 1044906,
|
| 8 |
+
"acc": 78.22,
|
| 9 |
+
"total": 900,
|
| 10 |
+
"minutes": 11.3
|
| 11 |
+
},
|
| 12 |
+
"toolcall": {
|
| 13 |
+
"n": 800,
|
| 14 |
+
"ok": 623,
|
| 15 |
+
"trunc": 1,
|
| 16 |
+
"errors": 0,
|
| 17 |
+
"tokens": 149727,
|
| 18 |
+
"name_ok": 667,
|
| 19 |
+
"acc": 77.88,
|
| 20 |
+
"total": 800,
|
| 21 |
+
"minutes": 12.4
|
| 22 |
+
},
|
| 23 |
+
"gpqa": {
|
| 24 |
+
"n": 198,
|
| 25 |
+
"ok": 150,
|
| 26 |
+
"trunc": 3,
|
| 27 |
+
"errors": 0,
|
| 28 |
+
"tokens": 812122,
|
| 29 |
+
"acc": 75.76,
|
| 30 |
+
"total": 198,
|
| 31 |
+
"minutes": 25.8
|
| 32 |
+
},
|
| 33 |
+
"ceval": {
|
| 34 |
+
"n": 1346,
|
| 35 |
+
"ok": 1211,
|
| 36 |
+
"trunc": 0,
|
| 37 |
+
"errors": 0,
|
| 38 |
+
"tokens": 917558,
|
| 39 |
+
"acc": 89.97,
|
| 40 |
+
"total": 1346,
|
| 41 |
+
"minutes": 26.9
|
| 42 |
+
},
|
| 43 |
+
"aime26": {
|
| 44 |
+
"n": 120,
|
| 45 |
+
"ok": 114,
|
| 46 |
+
"trunc": 6,
|
| 47 |
+
"errors": 0,
|
| 48 |
+
"tokens": 2338742,
|
| 49 |
+
"acc": 95.0,
|
| 50 |
+
"total": 120,
|
| 51 |
+
"minutes": 54.1
|
| 52 |
+
},
|
| 53 |
+
"humaneval": {
|
| 54 |
+
"n": 164,
|
| 55 |
+
"ok": 162,
|
| 56 |
+
"trunc": 0,
|
| 57 |
+
"errors": 0,
|
| 58 |
+
"tokens": 110345,
|
| 59 |
+
"acc": 98.78,
|
| 60 |
+
"total": 164,
|
| 61 |
+
"minutes": 79.3
|
| 62 |
+
},
|
| 63 |
+
"mmlu": {
|
| 64 |
+
"n": 14042,
|
| 65 |
+
"ok": 12269,
|
| 66 |
+
"trunc": 8,
|
| 67 |
+
"errors": 0,
|
| 68 |
+
"tokens": 9486427,
|
| 69 |
+
"acc": 87.37,
|
| 70 |
+
"total": 14042,
|
| 71 |
+
"minutes": 81.0
|
| 72 |
+
}
|
| 73 |
+
}
|
chat_template.jinja
ADDED
|
@@ -0,0 +1,170 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{%- set image_count = namespace(value=0) %}
|
| 2 |
+
{%- set video_count = namespace(value=0) %}
|
| 3 |
+
{%- macro render_content(content, do_vision_count, is_system_content=false) %}
|
| 4 |
+
{%- if content is string %}
|
| 5 |
+
{{- content }}
|
| 6 |
+
{%- elif content is iterable and content is not mapping %}
|
| 7 |
+
{%- for item in content %}
|
| 8 |
+
{%- if 'image' in item or 'image_url' in item or item.type == 'image' %}
|
| 9 |
+
{%- if is_system_content %}
|
| 10 |
+
{{- raise_exception('System message cannot contain images.') }}
|
| 11 |
+
{%- endif %}
|
| 12 |
+
{%- if do_vision_count %}
|
| 13 |
+
{%- set image_count.value = image_count.value + 1 %}
|
| 14 |
+
{%- endif %}
|
| 15 |
+
{%- if add_vision_id %}
|
| 16 |
+
{{- 'Picture ' ~ image_count.value ~ ': ' }}
|
| 17 |
+
{%- endif %}
|
| 18 |
+
{{- '<|vision_start|><|image_pad|><|vision_end|>' }}
|
| 19 |
+
{%- elif 'video' in item or item.type == 'video' %}
|
| 20 |
+
{%- if is_system_content %}
|
| 21 |
+
{{- raise_exception('System message cannot contain videos.') }}
|
| 22 |
+
{%- endif %}
|
| 23 |
+
{%- if do_vision_count %}
|
| 24 |
+
{%- set video_count.value = video_count.value + 1 %}
|
| 25 |
+
{%- endif %}
|
| 26 |
+
{%- if add_vision_id %}
|
| 27 |
+
{{- 'Video ' ~ video_count.value ~ ': ' }}
|
| 28 |
+
{%- endif %}
|
| 29 |
+
{{- '<|vision_start|><|video_pad|><|vision_end|>' }}
|
| 30 |
+
{%- elif 'text' in item %}
|
| 31 |
+
{{- item.text }}
|
| 32 |
+
{%- else %}
|
| 33 |
+
{{- raise_exception('Unexpected item type in content.') }}
|
| 34 |
+
{%- endif %}
|
| 35 |
+
{%- endfor %}
|
| 36 |
+
{%- elif content is none or content is undefined %}
|
| 37 |
+
{{- '' }}
|
| 38 |
+
{%- else %}
|
| 39 |
+
{{- raise_exception('Unexpected content type.') }}
|
| 40 |
+
{%- endif %}
|
| 41 |
+
{%- endmacro %}
|
| 42 |
+
{%- if not messages %}
|
| 43 |
+
{{- raise_exception('No messages provided.') }}
|
| 44 |
+
{%- endif %}
|
| 45 |
+
{%- set reasoning_instructions = '' %}
|
| 46 |
+
{%- if enable_thinking is undefined or enable_thinking is true %}
|
| 47 |
+
{%- set resolved_reasoning_effort = reasoning_effort|default('xhigh') %}
|
| 48 |
+
{%- if resolved_reasoning_effort not in ('xhigh', 'medium', 'low') %}
|
| 49 |
+
{{- raise_exception('Unexpected reasoning effort ' ~ reasoning_effort ~ '. Supported types are xhigh (default), medium, and low.') }}
|
| 50 |
+
{%- endif %}
|
| 51 |
+
{%- if resolved_reasoning_effort == 'xhigh' %}
|
| 52 |
+
{%- set reasoning_instructions = 'Reasoning effort is set to xhigh. Please think carefully through the task, validate key assumptions, consider plausible alternatives, and prioritize correctness, consistency, and clarity in the final answer.' %}
|
| 53 |
+
{%- elif resolved_reasoning_effort == 'low' %}
|
| 54 |
+
{%- set reasoning_instructions = 'Reasoning effort is set to low. Keep your thinking brief and focused, moving directly to the conclusion without unnecessary elaboration.' %}
|
| 55 |
+
{%- endif %}
|
| 56 |
+
{%- endif %}
|
| 57 |
+
{%- if tools and tools is iterable and tools is not mapping %}
|
| 58 |
+
{{- '<|im_start|>system\n' }}
|
| 59 |
+
{%- if reasoning_instructions %}
|
| 60 |
+
{{- reasoning_instructions + '\n\n' }}
|
| 61 |
+
{%- endif %}
|
| 62 |
+
{{- "# Tools\n\nYou have access to the following functions:\n\n<tools>" }}
|
| 63 |
+
{%- for tool in tools %}
|
| 64 |
+
{{- "\n" }}
|
| 65 |
+
{{- tool | tojson }}
|
| 66 |
+
{%- endfor %}
|
| 67 |
+
{{- "\n</tools>" }}
|
| 68 |
+
{{- '\n\nIf you choose to call a function ONLY reply in the following format with NO suffix:\n\n<tool_call>\n<function=example_function_name>\n<parameter=example_parameter_1>\nvalue_1\n</parameter>\n<parameter=example_parameter_2>\nThis is the value for the second parameter\nthat can span\nmultiple lines\n</parameter>\n</function>\n</tool_call>\n\n<IMPORTANT>\nReminder:\n- Function calls MUST follow the specified format: an inner <function=...></function> block must be nested within <tool_call></tool_call> XML tags\n- Required parameters MUST be specified\n- You may provide optional reasoning for your function call in natural language BEFORE the function call, but NOT after\n- If there is no function call available, answer the question like normal with your current knowledge and do not tell the user about function calls\n</IMPORTANT>' }}
|
| 69 |
+
{%- if messages[0].role == 'system' %}
|
| 70 |
+
{%- set content = render_content(messages[0].content, false, true)|trim %}
|
| 71 |
+
{%- if content %}
|
| 72 |
+
{{- '\n\n' + content }}
|
| 73 |
+
{%- endif %}
|
| 74 |
+
{%- endif %}
|
| 75 |
+
{{- '<|im_end|>\n' }}
|
| 76 |
+
{%- else %}
|
| 77 |
+
{%- if messages[0].role == 'system' %}
|
| 78 |
+
{%- set content = render_content(messages[0].content, false, true)|trim %}
|
| 79 |
+
{%- if content %}
|
| 80 |
+
{{- '<|im_start|>system\n' + (reasoning_instructions + '\n\n' if reasoning_instructions else '') + content + '<|im_end|>\n' }}
|
| 81 |
+
{%- elif reasoning_instructions %}
|
| 82 |
+
{{- '<|im_start|>system\n' + reasoning_instructions + '<|im_end|>\n' }}
|
| 83 |
+
{%- endif %}
|
| 84 |
+
{%- elif reasoning_instructions %}
|
| 85 |
+
{{- '<|im_start|>system\n' + reasoning_instructions + '<|im_end|>\n' }}
|
| 86 |
+
{%- endif %}
|
| 87 |
+
{%- endif %}
|
| 88 |
+
{%- set ns = namespace(multi_step_tool=true, last_query_index=messages|length - 1) %}
|
| 89 |
+
{%- for message in messages[::-1] %}
|
| 90 |
+
{%- set index = (messages|length - 1) - loop.index0 %}
|
| 91 |
+
{%- if ns.multi_step_tool and message.role == "user" %}
|
| 92 |
+
{%- set content = render_content(message.content, false)|trim %}
|
| 93 |
+
{%- if not(content.startswith('<tool_response>') and content.endswith('</tool_response>')) %}
|
| 94 |
+
{%- set ns.multi_step_tool = false %}
|
| 95 |
+
{%- set ns.last_query_index = index %}
|
| 96 |
+
{%- endif %}
|
| 97 |
+
{%- endif %}
|
| 98 |
+
{%- endfor %}
|
| 99 |
+
{%- if ns.multi_step_tool %}
|
| 100 |
+
{{- raise_exception('No user query found in messages.') }}
|
| 101 |
+
{%- endif %}
|
| 102 |
+
{%- for message in messages %}
|
| 103 |
+
{%- set content = render_content(message.content, true)|trim %}
|
| 104 |
+
{%- if message.role == "system" %}
|
| 105 |
+
{%- if not loop.first %}
|
| 106 |
+
{{- raise_exception('System message must be at the beginning.') }}
|
| 107 |
+
{%- endif %}
|
| 108 |
+
{%- elif message.role == "user" %}
|
| 109 |
+
{{- '<|im_start|>' + message.role + '\n' + content + '<|im_end|>' + '\n' }}
|
| 110 |
+
{%- elif message.role == "assistant" %}
|
| 111 |
+
{%- set reasoning_content = '' %}
|
| 112 |
+
{%- if message.reasoning_content is string %}
|
| 113 |
+
{%- set reasoning_content = message.reasoning_content %}
|
| 114 |
+
{%- endif %}
|
| 115 |
+
{%- set reasoning_content = reasoning_content|trim %}
|
| 116 |
+
{%- if preserve_thinking is undefined or preserve_thinking is true or loop.index0 > ns.last_query_index %}
|
| 117 |
+
{{- '<|im_start|>' + message.role + '\n<think>\n' + reasoning_content + '\n</think>\n\n' + content }}
|
| 118 |
+
{%- else %}
|
| 119 |
+
{{- '<|im_start|>' + message.role + '\n' + content }}
|
| 120 |
+
{%- endif %}
|
| 121 |
+
{%- if message.tool_calls and message.tool_calls is iterable and message.tool_calls is not mapping %}
|
| 122 |
+
{%- for tool_call in message.tool_calls %}
|
| 123 |
+
{%- if tool_call.function is defined %}
|
| 124 |
+
{%- set tool_call = tool_call.function %}
|
| 125 |
+
{%- endif %}
|
| 126 |
+
{%- if loop.first %}
|
| 127 |
+
{%- if content|trim %}
|
| 128 |
+
{{- '\n\n<tool_call>\n<function=' + tool_call.name + '>\n' }}
|
| 129 |
+
{%- else %}
|
| 130 |
+
{{- '<tool_call>\n<function=' + tool_call.name + '>\n' }}
|
| 131 |
+
{%- endif %}
|
| 132 |
+
{%- else %}
|
| 133 |
+
{{- '\n<tool_call>\n<function=' + tool_call.name + '>\n' }}
|
| 134 |
+
{%- endif %}
|
| 135 |
+
{%- if tool_call.arguments is defined and tool_call.arguments != '' %}
|
| 136 |
+
{%- for args_name, args_value in tool_call.arguments|items %}
|
| 137 |
+
{{- '<parameter=' + args_name + '>\n' }}
|
| 138 |
+
{%- set args_value = args_value | string if args_value is string else args_value | tojson | safe %}
|
| 139 |
+
{{- args_value }}
|
| 140 |
+
{{- '\n</parameter>\n' }}
|
| 141 |
+
{%- endfor %}
|
| 142 |
+
{%- endif %}
|
| 143 |
+
{{- '</function>\n</tool_call>' }}
|
| 144 |
+
{%- endfor %}
|
| 145 |
+
{%- endif %}
|
| 146 |
+
{{- '<|im_end|>\n' }}
|
| 147 |
+
{%- elif message.role == "tool" %}
|
| 148 |
+
{%- if loop.previtem and loop.previtem.role != "tool" %}
|
| 149 |
+
{{- '<|im_start|>user' }}
|
| 150 |
+
{%- endif %}
|
| 151 |
+
{{- '\n<tool_response>\n' }}
|
| 152 |
+
{{- content }}
|
| 153 |
+
{{- '\n</tool_response>' }}
|
| 154 |
+
{%- if not loop.last and loop.nextitem.role != "tool" %}
|
| 155 |
+
{{- '<|im_end|>\n' }}
|
| 156 |
+
{%- elif loop.last %}
|
| 157 |
+
{{- '<|im_end|>\n' }}
|
| 158 |
+
{%- endif %}
|
| 159 |
+
{%- else %}
|
| 160 |
+
{{- raise_exception('Unexpected message role.') }}
|
| 161 |
+
{%- endif %}
|
| 162 |
+
{%- endfor %}
|
| 163 |
+
{%- if add_generation_prompt %}
|
| 164 |
+
{{- '<|im_start|>assistant\n' }}
|
| 165 |
+
{%- if enable_thinking is defined and enable_thinking is false %}
|
| 166 |
+
{{- '<think>\n\n</think>\n\n' }}
|
| 167 |
+
{%- else %}
|
| 168 |
+
{{- '<think>\n' }}
|
| 169 |
+
{%- endif %}
|
| 170 |
+
{%- endif %}
|
config.json
ADDED
|
@@ -0,0 +1,1682 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"architectures": [
|
| 3 |
+
"Qwen4ExpForConditionalGeneration"
|
| 4 |
+
],
|
| 5 |
+
"image_token_id": 248056,
|
| 6 |
+
"language_model_only": false,
|
| 7 |
+
"model_type": "qwen4_exp",
|
| 8 |
+
"text_config": {
|
| 9 |
+
"attention_bias": false,
|
| 10 |
+
"attention_dropout": 0.0,
|
| 11 |
+
"bos_token_id": 248044,
|
| 12 |
+
"dtype": "bfloat16",
|
| 13 |
+
"eos_token_id": 248044,
|
| 14 |
+
"full_attention_interval": 4,
|
| 15 |
+
"hc_count": 4,
|
| 16 |
+
"hc_lowrank": 320,
|
| 17 |
+
"head_dim": 256,
|
| 18 |
+
"heads_per_ngram": 8,
|
| 19 |
+
"hidden_act": "silu",
|
| 20 |
+
"hidden_size": 2560,
|
| 21 |
+
"indexer_budget": 2048,
|
| 22 |
+
"indexer_compress_ratio": 4,
|
| 23 |
+
"indexer_head_dim": 128,
|
| 24 |
+
"indexer_kv_heads": 1,
|
| 25 |
+
"indexer_n_heads": 4,
|
| 26 |
+
"initializer_range": 0.02,
|
| 27 |
+
"layer_types": [
|
| 28 |
+
"linear_attention",
|
| 29 |
+
"linear_attention",
|
| 30 |
+
"linear_attention",
|
| 31 |
+
"full_attention",
|
| 32 |
+
"linear_attention",
|
| 33 |
+
"linear_attention",
|
| 34 |
+
"linear_attention",
|
| 35 |
+
"full_attention",
|
| 36 |
+
"linear_attention",
|
| 37 |
+
"linear_attention",
|
| 38 |
+
"linear_attention",
|
| 39 |
+
"full_attention",
|
| 40 |
+
"linear_attention",
|
| 41 |
+
"linear_attention",
|
| 42 |
+
"linear_attention",
|
| 43 |
+
"full_attention",
|
| 44 |
+
"linear_attention",
|
| 45 |
+
"linear_attention",
|
| 46 |
+
"linear_attention",
|
| 47 |
+
"full_attention",
|
| 48 |
+
"linear_attention",
|
| 49 |
+
"linear_attention",
|
| 50 |
+
"linear_attention",
|
| 51 |
+
"full_attention",
|
| 52 |
+
"linear_attention",
|
| 53 |
+
"linear_attention",
|
| 54 |
+
"linear_attention",
|
| 55 |
+
"full_attention",
|
| 56 |
+
"linear_attention",
|
| 57 |
+
"linear_attention",
|
| 58 |
+
"linear_attention",
|
| 59 |
+
"full_attention",
|
| 60 |
+
"linear_attention",
|
| 61 |
+
"linear_attention",
|
| 62 |
+
"linear_attention",
|
| 63 |
+
"full_attention",
|
| 64 |
+
"linear_attention",
|
| 65 |
+
"linear_attention",
|
| 66 |
+
"linear_attention",
|
| 67 |
+
"full_attention",
|
| 68 |
+
"linear_attention",
|
| 69 |
+
"linear_attention",
|
| 70 |
+
"linear_attention",
|
| 71 |
+
"full_attention",
|
| 72 |
+
"linear_attention",
|
| 73 |
+
"linear_attention",
|
| 74 |
+
"linear_attention",
|
| 75 |
+
"full_attention"
|
| 76 |
+
],
|
| 77 |
+
"linear_conv_kernel_dim": 4,
|
| 78 |
+
"linear_key_head_dim": 128,
|
| 79 |
+
"linear_num_key_heads": 16,
|
| 80 |
+
"linear_num_value_heads": 48,
|
| 81 |
+
"linear_value_head_dim": 128,
|
| 82 |
+
"make_ngram_vocab_size_divisible_by": 128,
|
| 83 |
+
"mamba_ssm_dtype": "float32",
|
| 84 |
+
"max_position_embeddings": 262144,
|
| 85 |
+
"model_type": "qwen4_exp_text",
|
| 86 |
+
"moe_intermediate_size": 640,
|
| 87 |
+
"mtp": {
|
| 88 |
+
"hybrid": true,
|
| 89 |
+
"layer_types": [
|
| 90 |
+
"full_attention"
|
| 91 |
+
],
|
| 92 |
+
"mtp_use_hidden_state_from_layer": null,
|
| 93 |
+
"num_hidden_layers": 1,
|
| 94 |
+
"rope_theta": 10000000
|
| 95 |
+
},
|
| 96 |
+
"mtp_num_hidden_layers": 1,
|
| 97 |
+
"mtp_use_dedicated_embeddings": false,
|
| 98 |
+
"ngram_size": 3,
|
| 99 |
+
"ngram_vocab_size_base": 20000000,
|
| 100 |
+
"num_attention_heads": 24,
|
| 101 |
+
"num_experts": 384,
|
| 102 |
+
"num_experts_per_tok": 10,
|
| 103 |
+
"num_hidden_layers": 48,
|
| 104 |
+
"num_key_value_heads": 2,
|
| 105 |
+
"output_gate_type": "sigmoid",
|
| 106 |
+
"output_router_logits": false,
|
| 107 |
+
"pad_token_id": null,
|
| 108 |
+
"partial_rotary_factor": 0.25,
|
| 109 |
+
"ple_conv_kernel_size": 4,
|
| 110 |
+
"ple_embed_dim": 2560,
|
| 111 |
+
"ple_layer_ids": [
|
| 112 |
+
2
|
| 113 |
+
],
|
| 114 |
+
"rms_norm_eps": 1e-06,
|
| 115 |
+
"rope_parameters": {
|
| 116 |
+
"mrope_interleaved": true,
|
| 117 |
+
"mrope_section": [
|
| 118 |
+
11,
|
| 119 |
+
11,
|
| 120 |
+
10
|
| 121 |
+
],
|
| 122 |
+
"partial_rotary_factor": 0.25,
|
| 123 |
+
"rope_theta": 10000000,
|
| 124 |
+
"rope_type": "default"
|
| 125 |
+
},
|
| 126 |
+
"router_aux_loss_coef": 0.001,
|
| 127 |
+
"shared_expert_intermediate_size": 640,
|
| 128 |
+
"split_ngram_parts": 128,
|
| 129 |
+
"tie_word_embeddings": false,
|
| 130 |
+
"use_cache": true,
|
| 131 |
+
"vocab_size": 248320,
|
| 132 |
+
"ple_embedding_dtype": "nvfp4"
|
| 133 |
+
},
|
| 134 |
+
"tie_word_embeddings": false,
|
| 135 |
+
"transformers_version": "5.8.0.dev0",
|
| 136 |
+
"video_token_id": 248057,
|
| 137 |
+
"vision_config": {
|
| 138 |
+
"deepstack_visual_indexes": [],
|
| 139 |
+
"depth": 27,
|
| 140 |
+
"hidden_act": "gelu_pytorch_tanh",
|
| 141 |
+
"hidden_size": 1152,
|
| 142 |
+
"in_channels": 3,
|
| 143 |
+
"initializer_range": 0.02,
|
| 144 |
+
"intermediate_size": 4304,
|
| 145 |
+
"model_type": "qwen4_exp",
|
| 146 |
+
"num_heads": 16,
|
| 147 |
+
"num_position_embeddings": 2304,
|
| 148 |
+
"out_hidden_size": 2560,
|
| 149 |
+
"patch_size": 16,
|
| 150 |
+
"spatial_merge_size": 2,
|
| 151 |
+
"temporal_patch_size": 2
|
| 152 |
+
},
|
| 153 |
+
"vision_end_token_id": 248054,
|
| 154 |
+
"vision_start_token_id": 248053,
|
| 155 |
+
"quantization_config": {
|
| 156 |
+
"quant_method": "modelopt",
|
| 157 |
+
"quant_algo": "MIXED_PRECISION",
|
| 158 |
+
"kv_cache_quant_algo": null,
|
| 159 |
+
"ignore": [
|
| 160 |
+
"lm_head",
|
| 161 |
+
"mtp.fc_embedding",
|
| 162 |
+
"mtp.fc_hidden",
|
| 163 |
+
"mtp.pre_fc_norm_*",
|
| 164 |
+
"mtp.hyper_connection_mixer*",
|
| 165 |
+
"mtp.layers.0.self_attn*",
|
| 166 |
+
"mtp.layers.0.attn_hyper_connection*",
|
| 167 |
+
"mtp.layers.0.mlp_hyper_connection*",
|
| 168 |
+
"mtp.layers.0.mlp.gate",
|
| 169 |
+
"mtp.layers.0.mlp.shared_expert*"
|
| 170 |
+
],
|
| 171 |
+
"quantized_layers": {
|
| 172 |
+
"model.language_model.layers.0.mlp.experts": {
|
| 173 |
+
"quant_algo": "NVFP4",
|
| 174 |
+
"group_size": 16,
|
| 175 |
+
"weight_scale_encoding": "csf"
|
| 176 |
+
},
|
| 177 |
+
"model.language_model.layers.1.mlp.experts": {
|
| 178 |
+
"quant_algo": "NVFP4",
|
| 179 |
+
"group_size": 16,
|
| 180 |
+
"weight_scale_encoding": "csf"
|
| 181 |
+
},
|
| 182 |
+
"model.language_model.layers.2.mlp.experts": {
|
| 183 |
+
"quant_algo": "NVFP4",
|
| 184 |
+
"group_size": 16,
|
| 185 |
+
"weight_scale_encoding": "csf"
|
| 186 |
+
},
|
| 187 |
+
"model.language_model.layers.3.mlp.experts": {
|
| 188 |
+
"quant_algo": "NVFP4",
|
| 189 |
+
"group_size": 16,
|
| 190 |
+
"weight_scale_encoding": "csf"
|
| 191 |
+
},
|
| 192 |
+
"model.language_model.layers.4.mlp.experts": {
|
| 193 |
+
"quant_algo": "NVFP4",
|
| 194 |
+
"group_size": 16,
|
| 195 |
+
"weight_scale_encoding": "csf"
|
| 196 |
+
},
|
| 197 |
+
"model.language_model.layers.5.mlp.experts": {
|
| 198 |
+
"quant_algo": "NVFP4",
|
| 199 |
+
"group_size": 16,
|
| 200 |
+
"weight_scale_encoding": "csf"
|
| 201 |
+
},
|
| 202 |
+
"model.language_model.layers.6.mlp.experts": {
|
| 203 |
+
"quant_algo": "NVFP4",
|
| 204 |
+
"group_size": 16,
|
| 205 |
+
"weight_scale_encoding": "csf"
|
| 206 |
+
},
|
| 207 |
+
"model.language_model.layers.7.mlp.experts": {
|
| 208 |
+
"quant_algo": "NVFP4",
|
| 209 |
+
"group_size": 16,
|
| 210 |
+
"weight_scale_encoding": "csf"
|
| 211 |
+
},
|
| 212 |
+
"model.language_model.layers.8.mlp.experts": {
|
| 213 |
+
"quant_algo": "NVFP4",
|
| 214 |
+
"group_size": 16,
|
| 215 |
+
"weight_scale_encoding": "csf"
|
| 216 |
+
},
|
| 217 |
+
"model.language_model.layers.9.mlp.experts": {
|
| 218 |
+
"quant_algo": "NVFP4",
|
| 219 |
+
"group_size": 16,
|
| 220 |
+
"weight_scale_encoding": "csf"
|
| 221 |
+
},
|
| 222 |
+
"model.language_model.layers.10.mlp.experts": {
|
| 223 |
+
"quant_algo": "NVFP4",
|
| 224 |
+
"group_size": 16,
|
| 225 |
+
"weight_scale_encoding": "csf"
|
| 226 |
+
},
|
| 227 |
+
"model.language_model.layers.11.mlp.experts": {
|
| 228 |
+
"quant_algo": "NVFP4",
|
| 229 |
+
"group_size": 16,
|
| 230 |
+
"weight_scale_encoding": "csf"
|
| 231 |
+
},
|
| 232 |
+
"model.language_model.layers.12.mlp.experts": {
|
| 233 |
+
"quant_algo": "NVFP4",
|
| 234 |
+
"group_size": 16,
|
| 235 |
+
"weight_scale_encoding": "csf"
|
| 236 |
+
},
|
| 237 |
+
"model.language_model.layers.13.mlp.experts": {
|
| 238 |
+
"quant_algo": "NVFP4",
|
| 239 |
+
"group_size": 16,
|
| 240 |
+
"weight_scale_encoding": "csf"
|
| 241 |
+
},
|
| 242 |
+
"model.language_model.layers.14.mlp.experts": {
|
| 243 |
+
"quant_algo": "NVFP4",
|
| 244 |
+
"group_size": 16,
|
| 245 |
+
"weight_scale_encoding": "csf"
|
| 246 |
+
},
|
| 247 |
+
"model.language_model.layers.15.mlp.experts": {
|
| 248 |
+
"quant_algo": "NVFP4",
|
| 249 |
+
"group_size": 16,
|
| 250 |
+
"weight_scale_encoding": "csf"
|
| 251 |
+
},
|
| 252 |
+
"model.language_model.layers.16.mlp.experts": {
|
| 253 |
+
"quant_algo": "NVFP4",
|
| 254 |
+
"group_size": 16,
|
| 255 |
+
"weight_scale_encoding": "csf"
|
| 256 |
+
},
|
| 257 |
+
"model.language_model.layers.17.mlp.experts": {
|
| 258 |
+
"quant_algo": "NVFP4",
|
| 259 |
+
"group_size": 16,
|
| 260 |
+
"weight_scale_encoding": "csf"
|
| 261 |
+
},
|
| 262 |
+
"model.language_model.layers.18.mlp.experts": {
|
| 263 |
+
"quant_algo": "NVFP4",
|
| 264 |
+
"group_size": 16,
|
| 265 |
+
"weight_scale_encoding": "csf"
|
| 266 |
+
},
|
| 267 |
+
"model.language_model.layers.19.mlp.experts": {
|
| 268 |
+
"quant_algo": "NVFP4",
|
| 269 |
+
"group_size": 16,
|
| 270 |
+
"weight_scale_encoding": "csf"
|
| 271 |
+
},
|
| 272 |
+
"model.language_model.layers.20.mlp.experts": {
|
| 273 |
+
"quant_algo": "NVFP4",
|
| 274 |
+
"group_size": 16,
|
| 275 |
+
"weight_scale_encoding": "csf"
|
| 276 |
+
},
|
| 277 |
+
"model.language_model.layers.21.mlp.experts": {
|
| 278 |
+
"quant_algo": "NVFP4",
|
| 279 |
+
"group_size": 16,
|
| 280 |
+
"weight_scale_encoding": "csf"
|
| 281 |
+
},
|
| 282 |
+
"model.language_model.layers.22.mlp.experts": {
|
| 283 |
+
"quant_algo": "NVFP4",
|
| 284 |
+
"group_size": 16,
|
| 285 |
+
"weight_scale_encoding": "csf"
|
| 286 |
+
},
|
| 287 |
+
"model.language_model.layers.23.mlp.experts": {
|
| 288 |
+
"quant_algo": "NVFP4",
|
| 289 |
+
"group_size": 16,
|
| 290 |
+
"weight_scale_encoding": "csf"
|
| 291 |
+
},
|
| 292 |
+
"model.language_model.layers.24.mlp.experts": {
|
| 293 |
+
"quant_algo": "NVFP4",
|
| 294 |
+
"group_size": 16,
|
| 295 |
+
"weight_scale_encoding": "csf"
|
| 296 |
+
},
|
| 297 |
+
"model.language_model.layers.25.mlp.experts": {
|
| 298 |
+
"quant_algo": "NVFP4",
|
| 299 |
+
"group_size": 16,
|
| 300 |
+
"weight_scale_encoding": "csf"
|
| 301 |
+
},
|
| 302 |
+
"model.language_model.layers.26.mlp.experts": {
|
| 303 |
+
"quant_algo": "NVFP4",
|
| 304 |
+
"group_size": 16,
|
| 305 |
+
"weight_scale_encoding": "csf"
|
| 306 |
+
},
|
| 307 |
+
"model.language_model.layers.27.mlp.experts": {
|
| 308 |
+
"quant_algo": "NVFP4",
|
| 309 |
+
"group_size": 16,
|
| 310 |
+
"weight_scale_encoding": "csf"
|
| 311 |
+
},
|
| 312 |
+
"model.language_model.layers.28.mlp.experts": {
|
| 313 |
+
"quant_algo": "NVFP4",
|
| 314 |
+
"group_size": 16,
|
| 315 |
+
"weight_scale_encoding": "csf"
|
| 316 |
+
},
|
| 317 |
+
"model.language_model.layers.29.mlp.experts": {
|
| 318 |
+
"quant_algo": "NVFP4",
|
| 319 |
+
"group_size": 16,
|
| 320 |
+
"weight_scale_encoding": "csf"
|
| 321 |
+
},
|
| 322 |
+
"model.language_model.layers.30.mlp.experts": {
|
| 323 |
+
"quant_algo": "NVFP4",
|
| 324 |
+
"group_size": 16,
|
| 325 |
+
"weight_scale_encoding": "csf"
|
| 326 |
+
},
|
| 327 |
+
"model.language_model.layers.31.mlp.experts": {
|
| 328 |
+
"quant_algo": "NVFP4",
|
| 329 |
+
"group_size": 16,
|
| 330 |
+
"weight_scale_encoding": "csf"
|
| 331 |
+
},
|
| 332 |
+
"model.language_model.layers.32.mlp.experts": {
|
| 333 |
+
"quant_algo": "NVFP4",
|
| 334 |
+
"group_size": 16,
|
| 335 |
+
"weight_scale_encoding": "csf"
|
| 336 |
+
},
|
| 337 |
+
"model.language_model.layers.33.mlp.experts": {
|
| 338 |
+
"quant_algo": "NVFP4",
|
| 339 |
+
"group_size": 16,
|
| 340 |
+
"weight_scale_encoding": "csf"
|
| 341 |
+
},
|
| 342 |
+
"model.language_model.layers.34.mlp.experts": {
|
| 343 |
+
"quant_algo": "NVFP4",
|
| 344 |
+
"group_size": 16,
|
| 345 |
+
"weight_scale_encoding": "csf"
|
| 346 |
+
},
|
| 347 |
+
"model.language_model.layers.35.mlp.experts": {
|
| 348 |
+
"quant_algo": "NVFP4",
|
| 349 |
+
"group_size": 16,
|
| 350 |
+
"weight_scale_encoding": "csf"
|
| 351 |
+
},
|
| 352 |
+
"model.language_model.layers.36.mlp.experts": {
|
| 353 |
+
"quant_algo": "NVFP4",
|
| 354 |
+
"group_size": 16,
|
| 355 |
+
"weight_scale_encoding": "csf"
|
| 356 |
+
},
|
| 357 |
+
"model.language_model.layers.37.mlp.experts": {
|
| 358 |
+
"quant_algo": "NVFP4",
|
| 359 |
+
"group_size": 16,
|
| 360 |
+
"weight_scale_encoding": "csf"
|
| 361 |
+
},
|
| 362 |
+
"model.language_model.layers.38.mlp.experts": {
|
| 363 |
+
"quant_algo": "NVFP4",
|
| 364 |
+
"group_size": 16,
|
| 365 |
+
"weight_scale_encoding": "csf"
|
| 366 |
+
},
|
| 367 |
+
"model.language_model.layers.39.mlp.experts": {
|
| 368 |
+
"quant_algo": "NVFP4",
|
| 369 |
+
"group_size": 16,
|
| 370 |
+
"weight_scale_encoding": "csf"
|
| 371 |
+
},
|
| 372 |
+
"model.language_model.layers.40.mlp.experts": {
|
| 373 |
+
"quant_algo": "NVFP4",
|
| 374 |
+
"group_size": 16,
|
| 375 |
+
"weight_scale_encoding": "csf"
|
| 376 |
+
},
|
| 377 |
+
"model.language_model.layers.41.mlp.experts": {
|
| 378 |
+
"quant_algo": "NVFP4",
|
| 379 |
+
"group_size": 16,
|
| 380 |
+
"weight_scale_encoding": "csf"
|
| 381 |
+
},
|
| 382 |
+
"model.language_model.layers.42.mlp.experts": {
|
| 383 |
+
"quant_algo": "NVFP4",
|
| 384 |
+
"group_size": 16,
|
| 385 |
+
"weight_scale_encoding": "csf"
|
| 386 |
+
},
|
| 387 |
+
"model.language_model.layers.43.mlp.experts": {
|
| 388 |
+
"quant_algo": "NVFP4",
|
| 389 |
+
"group_size": 16,
|
| 390 |
+
"weight_scale_encoding": "csf"
|
| 391 |
+
},
|
| 392 |
+
"model.language_model.layers.44.mlp.experts": {
|
| 393 |
+
"quant_algo": "NVFP4",
|
| 394 |
+
"group_size": 16,
|
| 395 |
+
"weight_scale_encoding": "csf"
|
| 396 |
+
},
|
| 397 |
+
"model.language_model.layers.45.mlp.experts": {
|
| 398 |
+
"quant_algo": "NVFP4",
|
| 399 |
+
"group_size": 16,
|
| 400 |
+
"weight_scale_encoding": "csf"
|
| 401 |
+
},
|
| 402 |
+
"model.language_model.layers.46.mlp.experts": {
|
| 403 |
+
"quant_algo": "NVFP4",
|
| 404 |
+
"group_size": 16,
|
| 405 |
+
"weight_scale_encoding": "csf"
|
| 406 |
+
},
|
| 407 |
+
"model.language_model.layers.47.mlp.experts": {
|
| 408 |
+
"quant_algo": "NVFP4",
|
| 409 |
+
"group_size": 16,
|
| 410 |
+
"weight_scale_encoding": "csf"
|
| 411 |
+
},
|
| 412 |
+
"model.language_model.layers.0.mlp.shared_expert.gate_proj": {
|
| 413 |
+
"quant_algo": "MXFP8",
|
| 414 |
+
"group_size": 32
|
| 415 |
+
},
|
| 416 |
+
"model.language_model.layers.0.mlp.shared_expert.up_proj": {
|
| 417 |
+
"quant_algo": "MXFP8",
|
| 418 |
+
"group_size": 32
|
| 419 |
+
},
|
| 420 |
+
"model.language_model.layers.0.mlp.shared_expert.down_proj": {
|
| 421 |
+
"quant_algo": "MXFP8",
|
| 422 |
+
"group_size": 32
|
| 423 |
+
},
|
| 424 |
+
"model.language_model.layers.1.mlp.shared_expert.gate_proj": {
|
| 425 |
+
"quant_algo": "MXFP8",
|
| 426 |
+
"group_size": 32
|
| 427 |
+
},
|
| 428 |
+
"model.language_model.layers.1.mlp.shared_expert.up_proj": {
|
| 429 |
+
"quant_algo": "MXFP8",
|
| 430 |
+
"group_size": 32
|
| 431 |
+
},
|
| 432 |
+
"model.language_model.layers.1.mlp.shared_expert.down_proj": {
|
| 433 |
+
"quant_algo": "MXFP8",
|
| 434 |
+
"group_size": 32
|
| 435 |
+
},
|
| 436 |
+
"model.language_model.layers.2.mlp.shared_expert.gate_proj": {
|
| 437 |
+
"quant_algo": "MXFP8",
|
| 438 |
+
"group_size": 32
|
| 439 |
+
},
|
| 440 |
+
"model.language_model.layers.2.mlp.shared_expert.up_proj": {
|
| 441 |
+
"quant_algo": "MXFP8",
|
| 442 |
+
"group_size": 32
|
| 443 |
+
},
|
| 444 |
+
"model.language_model.layers.2.mlp.shared_expert.down_proj": {
|
| 445 |
+
"quant_algo": "MXFP8",
|
| 446 |
+
"group_size": 32
|
| 447 |
+
},
|
| 448 |
+
"model.language_model.layers.3.mlp.shared_expert.gate_proj": {
|
| 449 |
+
"quant_algo": "MXFP8",
|
| 450 |
+
"group_size": 32
|
| 451 |
+
},
|
| 452 |
+
"model.language_model.layers.3.mlp.shared_expert.up_proj": {
|
| 453 |
+
"quant_algo": "MXFP8",
|
| 454 |
+
"group_size": 32
|
| 455 |
+
},
|
| 456 |
+
"model.language_model.layers.3.mlp.shared_expert.down_proj": {
|
| 457 |
+
"quant_algo": "MXFP8",
|
| 458 |
+
"group_size": 32
|
| 459 |
+
},
|
| 460 |
+
"model.language_model.layers.4.mlp.shared_expert.gate_proj": {
|
| 461 |
+
"quant_algo": "MXFP8",
|
| 462 |
+
"group_size": 32
|
| 463 |
+
},
|
| 464 |
+
"model.language_model.layers.4.mlp.shared_expert.up_proj": {
|
| 465 |
+
"quant_algo": "MXFP8",
|
| 466 |
+
"group_size": 32
|
| 467 |
+
},
|
| 468 |
+
"model.language_model.layers.4.mlp.shared_expert.down_proj": {
|
| 469 |
+
"quant_algo": "MXFP8",
|
| 470 |
+
"group_size": 32
|
| 471 |
+
},
|
| 472 |
+
"model.language_model.layers.5.mlp.shared_expert.gate_proj": {
|
| 473 |
+
"quant_algo": "MXFP8",
|
| 474 |
+
"group_size": 32
|
| 475 |
+
},
|
| 476 |
+
"model.language_model.layers.5.mlp.shared_expert.up_proj": {
|
| 477 |
+
"quant_algo": "MXFP8",
|
| 478 |
+
"group_size": 32
|
| 479 |
+
},
|
| 480 |
+
"model.language_model.layers.5.mlp.shared_expert.down_proj": {
|
| 481 |
+
"quant_algo": "MXFP8",
|
| 482 |
+
"group_size": 32
|
| 483 |
+
},
|
| 484 |
+
"model.language_model.layers.6.mlp.shared_expert.gate_proj": {
|
| 485 |
+
"quant_algo": "MXFP8",
|
| 486 |
+
"group_size": 32
|
| 487 |
+
},
|
| 488 |
+
"model.language_model.layers.6.mlp.shared_expert.up_proj": {
|
| 489 |
+
"quant_algo": "MXFP8",
|
| 490 |
+
"group_size": 32
|
| 491 |
+
},
|
| 492 |
+
"model.language_model.layers.6.mlp.shared_expert.down_proj": {
|
| 493 |
+
"quant_algo": "MXFP8",
|
| 494 |
+
"group_size": 32
|
| 495 |
+
},
|
| 496 |
+
"model.language_model.layers.7.mlp.shared_expert.gate_proj": {
|
| 497 |
+
"quant_algo": "MXFP8",
|
| 498 |
+
"group_size": 32
|
| 499 |
+
},
|
| 500 |
+
"model.language_model.layers.7.mlp.shared_expert.up_proj": {
|
| 501 |
+
"quant_algo": "MXFP8",
|
| 502 |
+
"group_size": 32
|
| 503 |
+
},
|
| 504 |
+
"model.language_model.layers.7.mlp.shared_expert.down_proj": {
|
| 505 |
+
"quant_algo": "MXFP8",
|
| 506 |
+
"group_size": 32
|
| 507 |
+
},
|
| 508 |
+
"model.language_model.layers.8.mlp.shared_expert.gate_proj": {
|
| 509 |
+
"quant_algo": "MXFP8",
|
| 510 |
+
"group_size": 32
|
| 511 |
+
},
|
| 512 |
+
"model.language_model.layers.8.mlp.shared_expert.up_proj": {
|
| 513 |
+
"quant_algo": "MXFP8",
|
| 514 |
+
"group_size": 32
|
| 515 |
+
},
|
| 516 |
+
"model.language_model.layers.8.mlp.shared_expert.down_proj": {
|
| 517 |
+
"quant_algo": "MXFP8",
|
| 518 |
+
"group_size": 32
|
| 519 |
+
},
|
| 520 |
+
"model.language_model.layers.9.mlp.shared_expert.gate_proj": {
|
| 521 |
+
"quant_algo": "MXFP8",
|
| 522 |
+
"group_size": 32
|
| 523 |
+
},
|
| 524 |
+
"model.language_model.layers.9.mlp.shared_expert.up_proj": {
|
| 525 |
+
"quant_algo": "MXFP8",
|
| 526 |
+
"group_size": 32
|
| 527 |
+
},
|
| 528 |
+
"model.language_model.layers.9.mlp.shared_expert.down_proj": {
|
| 529 |
+
"quant_algo": "MXFP8",
|
| 530 |
+
"group_size": 32
|
| 531 |
+
},
|
| 532 |
+
"model.language_model.layers.10.mlp.shared_expert.gate_proj": {
|
| 533 |
+
"quant_algo": "MXFP8",
|
| 534 |
+
"group_size": 32
|
| 535 |
+
},
|
| 536 |
+
"model.language_model.layers.10.mlp.shared_expert.up_proj": {
|
| 537 |
+
"quant_algo": "MXFP8",
|
| 538 |
+
"group_size": 32
|
| 539 |
+
},
|
| 540 |
+
"model.language_model.layers.10.mlp.shared_expert.down_proj": {
|
| 541 |
+
"quant_algo": "MXFP8",
|
| 542 |
+
"group_size": 32
|
| 543 |
+
},
|
| 544 |
+
"model.language_model.layers.11.mlp.shared_expert.gate_proj": {
|
| 545 |
+
"quant_algo": "MXFP8",
|
| 546 |
+
"group_size": 32
|
| 547 |
+
},
|
| 548 |
+
"model.language_model.layers.11.mlp.shared_expert.up_proj": {
|
| 549 |
+
"quant_algo": "MXFP8",
|
| 550 |
+
"group_size": 32
|
| 551 |
+
},
|
| 552 |
+
"model.language_model.layers.11.mlp.shared_expert.down_proj": {
|
| 553 |
+
"quant_algo": "MXFP8",
|
| 554 |
+
"group_size": 32
|
| 555 |
+
},
|
| 556 |
+
"model.language_model.layers.12.mlp.shared_expert.gate_proj": {
|
| 557 |
+
"quant_algo": "MXFP8",
|
| 558 |
+
"group_size": 32
|
| 559 |
+
},
|
| 560 |
+
"model.language_model.layers.12.mlp.shared_expert.up_proj": {
|
| 561 |
+
"quant_algo": "MXFP8",
|
| 562 |
+
"group_size": 32
|
| 563 |
+
},
|
| 564 |
+
"model.language_model.layers.12.mlp.shared_expert.down_proj": {
|
| 565 |
+
"quant_algo": "MXFP8",
|
| 566 |
+
"group_size": 32
|
| 567 |
+
},
|
| 568 |
+
"model.language_model.layers.13.mlp.shared_expert.gate_proj": {
|
| 569 |
+
"quant_algo": "MXFP8",
|
| 570 |
+
"group_size": 32
|
| 571 |
+
},
|
| 572 |
+
"model.language_model.layers.13.mlp.shared_expert.up_proj": {
|
| 573 |
+
"quant_algo": "MXFP8",
|
| 574 |
+
"group_size": 32
|
| 575 |
+
},
|
| 576 |
+
"model.language_model.layers.13.mlp.shared_expert.down_proj": {
|
| 577 |
+
"quant_algo": "MXFP8",
|
| 578 |
+
"group_size": 32
|
| 579 |
+
},
|
| 580 |
+
"model.language_model.layers.14.mlp.shared_expert.gate_proj": {
|
| 581 |
+
"quant_algo": "MXFP8",
|
| 582 |
+
"group_size": 32
|
| 583 |
+
},
|
| 584 |
+
"model.language_model.layers.14.mlp.shared_expert.up_proj": {
|
| 585 |
+
"quant_algo": "MXFP8",
|
| 586 |
+
"group_size": 32
|
| 587 |
+
},
|
| 588 |
+
"model.language_model.layers.14.mlp.shared_expert.down_proj": {
|
| 589 |
+
"quant_algo": "MXFP8",
|
| 590 |
+
"group_size": 32
|
| 591 |
+
},
|
| 592 |
+
"model.language_model.layers.15.mlp.shared_expert.gate_proj": {
|
| 593 |
+
"quant_algo": "MXFP8",
|
| 594 |
+
"group_size": 32
|
| 595 |
+
},
|
| 596 |
+
"model.language_model.layers.15.mlp.shared_expert.up_proj": {
|
| 597 |
+
"quant_algo": "MXFP8",
|
| 598 |
+
"group_size": 32
|
| 599 |
+
},
|
| 600 |
+
"model.language_model.layers.15.mlp.shared_expert.down_proj": {
|
| 601 |
+
"quant_algo": "MXFP8",
|
| 602 |
+
"group_size": 32
|
| 603 |
+
},
|
| 604 |
+
"model.language_model.layers.16.mlp.shared_expert.gate_proj": {
|
| 605 |
+
"quant_algo": "MXFP8",
|
| 606 |
+
"group_size": 32
|
| 607 |
+
},
|
| 608 |
+
"model.language_model.layers.16.mlp.shared_expert.up_proj": {
|
| 609 |
+
"quant_algo": "MXFP8",
|
| 610 |
+
"group_size": 32
|
| 611 |
+
},
|
| 612 |
+
"model.language_model.layers.16.mlp.shared_expert.down_proj": {
|
| 613 |
+
"quant_algo": "MXFP8",
|
| 614 |
+
"group_size": 32
|
| 615 |
+
},
|
| 616 |
+
"model.language_model.layers.17.mlp.shared_expert.gate_proj": {
|
| 617 |
+
"quant_algo": "MXFP8",
|
| 618 |
+
"group_size": 32
|
| 619 |
+
},
|
| 620 |
+
"model.language_model.layers.17.mlp.shared_expert.up_proj": {
|
| 621 |
+
"quant_algo": "MXFP8",
|
| 622 |
+
"group_size": 32
|
| 623 |
+
},
|
| 624 |
+
"model.language_model.layers.17.mlp.shared_expert.down_proj": {
|
| 625 |
+
"quant_algo": "MXFP8",
|
| 626 |
+
"group_size": 32
|
| 627 |
+
},
|
| 628 |
+
"model.language_model.layers.18.mlp.shared_expert.gate_proj": {
|
| 629 |
+
"quant_algo": "MXFP8",
|
| 630 |
+
"group_size": 32
|
| 631 |
+
},
|
| 632 |
+
"model.language_model.layers.18.mlp.shared_expert.up_proj": {
|
| 633 |
+
"quant_algo": "MXFP8",
|
| 634 |
+
"group_size": 32
|
| 635 |
+
},
|
| 636 |
+
"model.language_model.layers.18.mlp.shared_expert.down_proj": {
|
| 637 |
+
"quant_algo": "MXFP8",
|
| 638 |
+
"group_size": 32
|
| 639 |
+
},
|
| 640 |
+
"model.language_model.layers.19.mlp.shared_expert.gate_proj": {
|
| 641 |
+
"quant_algo": "MXFP8",
|
| 642 |
+
"group_size": 32
|
| 643 |
+
},
|
| 644 |
+
"model.language_model.layers.19.mlp.shared_expert.up_proj": {
|
| 645 |
+
"quant_algo": "MXFP8",
|
| 646 |
+
"group_size": 32
|
| 647 |
+
},
|
| 648 |
+
"model.language_model.layers.19.mlp.shared_expert.down_proj": {
|
| 649 |
+
"quant_algo": "MXFP8",
|
| 650 |
+
"group_size": 32
|
| 651 |
+
},
|
| 652 |
+
"model.language_model.layers.20.mlp.shared_expert.gate_proj": {
|
| 653 |
+
"quant_algo": "MXFP8",
|
| 654 |
+
"group_size": 32
|
| 655 |
+
},
|
| 656 |
+
"model.language_model.layers.20.mlp.shared_expert.up_proj": {
|
| 657 |
+
"quant_algo": "MXFP8",
|
| 658 |
+
"group_size": 32
|
| 659 |
+
},
|
| 660 |
+
"model.language_model.layers.20.mlp.shared_expert.down_proj": {
|
| 661 |
+
"quant_algo": "MXFP8",
|
| 662 |
+
"group_size": 32
|
| 663 |
+
},
|
| 664 |
+
"model.language_model.layers.21.mlp.shared_expert.gate_proj": {
|
| 665 |
+
"quant_algo": "MXFP8",
|
| 666 |
+
"group_size": 32
|
| 667 |
+
},
|
| 668 |
+
"model.language_model.layers.21.mlp.shared_expert.up_proj": {
|
| 669 |
+
"quant_algo": "MXFP8",
|
| 670 |
+
"group_size": 32
|
| 671 |
+
},
|
| 672 |
+
"model.language_model.layers.21.mlp.shared_expert.down_proj": {
|
| 673 |
+
"quant_algo": "MXFP8",
|
| 674 |
+
"group_size": 32
|
| 675 |
+
},
|
| 676 |
+
"model.language_model.layers.22.mlp.shared_expert.gate_proj": {
|
| 677 |
+
"quant_algo": "MXFP8",
|
| 678 |
+
"group_size": 32
|
| 679 |
+
},
|
| 680 |
+
"model.language_model.layers.22.mlp.shared_expert.up_proj": {
|
| 681 |
+
"quant_algo": "MXFP8",
|
| 682 |
+
"group_size": 32
|
| 683 |
+
},
|
| 684 |
+
"model.language_model.layers.22.mlp.shared_expert.down_proj": {
|
| 685 |
+
"quant_algo": "MXFP8",
|
| 686 |
+
"group_size": 32
|
| 687 |
+
},
|
| 688 |
+
"model.language_model.layers.23.mlp.shared_expert.gate_proj": {
|
| 689 |
+
"quant_algo": "MXFP8",
|
| 690 |
+
"group_size": 32
|
| 691 |
+
},
|
| 692 |
+
"model.language_model.layers.23.mlp.shared_expert.up_proj": {
|
| 693 |
+
"quant_algo": "MXFP8",
|
| 694 |
+
"group_size": 32
|
| 695 |
+
},
|
| 696 |
+
"model.language_model.layers.23.mlp.shared_expert.down_proj": {
|
| 697 |
+
"quant_algo": "MXFP8",
|
| 698 |
+
"group_size": 32
|
| 699 |
+
},
|
| 700 |
+
"model.language_model.layers.24.mlp.shared_expert.gate_proj": {
|
| 701 |
+
"quant_algo": "MXFP8",
|
| 702 |
+
"group_size": 32
|
| 703 |
+
},
|
| 704 |
+
"model.language_model.layers.24.mlp.shared_expert.up_proj": {
|
| 705 |
+
"quant_algo": "MXFP8",
|
| 706 |
+
"group_size": 32
|
| 707 |
+
},
|
| 708 |
+
"model.language_model.layers.24.mlp.shared_expert.down_proj": {
|
| 709 |
+
"quant_algo": "MXFP8",
|
| 710 |
+
"group_size": 32
|
| 711 |
+
},
|
| 712 |
+
"model.language_model.layers.25.mlp.shared_expert.gate_proj": {
|
| 713 |
+
"quant_algo": "MXFP8",
|
| 714 |
+
"group_size": 32
|
| 715 |
+
},
|
| 716 |
+
"model.language_model.layers.25.mlp.shared_expert.up_proj": {
|
| 717 |
+
"quant_algo": "MXFP8",
|
| 718 |
+
"group_size": 32
|
| 719 |
+
},
|
| 720 |
+
"model.language_model.layers.25.mlp.shared_expert.down_proj": {
|
| 721 |
+
"quant_algo": "MXFP8",
|
| 722 |
+
"group_size": 32
|
| 723 |
+
},
|
| 724 |
+
"model.language_model.layers.26.mlp.shared_expert.gate_proj": {
|
| 725 |
+
"quant_algo": "MXFP8",
|
| 726 |
+
"group_size": 32
|
| 727 |
+
},
|
| 728 |
+
"model.language_model.layers.26.mlp.shared_expert.up_proj": {
|
| 729 |
+
"quant_algo": "MXFP8",
|
| 730 |
+
"group_size": 32
|
| 731 |
+
},
|
| 732 |
+
"model.language_model.layers.26.mlp.shared_expert.down_proj": {
|
| 733 |
+
"quant_algo": "MXFP8",
|
| 734 |
+
"group_size": 32
|
| 735 |
+
},
|
| 736 |
+
"model.language_model.layers.27.mlp.shared_expert.gate_proj": {
|
| 737 |
+
"quant_algo": "MXFP8",
|
| 738 |
+
"group_size": 32
|
| 739 |
+
},
|
| 740 |
+
"model.language_model.layers.27.mlp.shared_expert.up_proj": {
|
| 741 |
+
"quant_algo": "MXFP8",
|
| 742 |
+
"group_size": 32
|
| 743 |
+
},
|
| 744 |
+
"model.language_model.layers.27.mlp.shared_expert.down_proj": {
|
| 745 |
+
"quant_algo": "MXFP8",
|
| 746 |
+
"group_size": 32
|
| 747 |
+
},
|
| 748 |
+
"model.language_model.layers.28.mlp.shared_expert.gate_proj": {
|
| 749 |
+
"quant_algo": "MXFP8",
|
| 750 |
+
"group_size": 32
|
| 751 |
+
},
|
| 752 |
+
"model.language_model.layers.28.mlp.shared_expert.up_proj": {
|
| 753 |
+
"quant_algo": "MXFP8",
|
| 754 |
+
"group_size": 32
|
| 755 |
+
},
|
| 756 |
+
"model.language_model.layers.28.mlp.shared_expert.down_proj": {
|
| 757 |
+
"quant_algo": "MXFP8",
|
| 758 |
+
"group_size": 32
|
| 759 |
+
},
|
| 760 |
+
"model.language_model.layers.29.mlp.shared_expert.gate_proj": {
|
| 761 |
+
"quant_algo": "MXFP8",
|
| 762 |
+
"group_size": 32
|
| 763 |
+
},
|
| 764 |
+
"model.language_model.layers.29.mlp.shared_expert.up_proj": {
|
| 765 |
+
"quant_algo": "MXFP8",
|
| 766 |
+
"group_size": 32
|
| 767 |
+
},
|
| 768 |
+
"model.language_model.layers.29.mlp.shared_expert.down_proj": {
|
| 769 |
+
"quant_algo": "MXFP8",
|
| 770 |
+
"group_size": 32
|
| 771 |
+
},
|
| 772 |
+
"model.language_model.layers.30.mlp.shared_expert.gate_proj": {
|
| 773 |
+
"quant_algo": "MXFP8",
|
| 774 |
+
"group_size": 32
|
| 775 |
+
},
|
| 776 |
+
"model.language_model.layers.30.mlp.shared_expert.up_proj": {
|
| 777 |
+
"quant_algo": "MXFP8",
|
| 778 |
+
"group_size": 32
|
| 779 |
+
},
|
| 780 |
+
"model.language_model.layers.30.mlp.shared_expert.down_proj": {
|
| 781 |
+
"quant_algo": "MXFP8",
|
| 782 |
+
"group_size": 32
|
| 783 |
+
},
|
| 784 |
+
"model.language_model.layers.31.mlp.shared_expert.gate_proj": {
|
| 785 |
+
"quant_algo": "MXFP8",
|
| 786 |
+
"group_size": 32
|
| 787 |
+
},
|
| 788 |
+
"model.language_model.layers.31.mlp.shared_expert.up_proj": {
|
| 789 |
+
"quant_algo": "MXFP8",
|
| 790 |
+
"group_size": 32
|
| 791 |
+
},
|
| 792 |
+
"model.language_model.layers.31.mlp.shared_expert.down_proj": {
|
| 793 |
+
"quant_algo": "MXFP8",
|
| 794 |
+
"group_size": 32
|
| 795 |
+
},
|
| 796 |
+
"model.language_model.layers.32.mlp.shared_expert.gate_proj": {
|
| 797 |
+
"quant_algo": "MXFP8",
|
| 798 |
+
"group_size": 32
|
| 799 |
+
},
|
| 800 |
+
"model.language_model.layers.32.mlp.shared_expert.up_proj": {
|
| 801 |
+
"quant_algo": "MXFP8",
|
| 802 |
+
"group_size": 32
|
| 803 |
+
},
|
| 804 |
+
"model.language_model.layers.32.mlp.shared_expert.down_proj": {
|
| 805 |
+
"quant_algo": "MXFP8",
|
| 806 |
+
"group_size": 32
|
| 807 |
+
},
|
| 808 |
+
"model.language_model.layers.33.mlp.shared_expert.gate_proj": {
|
| 809 |
+
"quant_algo": "MXFP8",
|
| 810 |
+
"group_size": 32
|
| 811 |
+
},
|
| 812 |
+
"model.language_model.layers.33.mlp.shared_expert.up_proj": {
|
| 813 |
+
"quant_algo": "MXFP8",
|
| 814 |
+
"group_size": 32
|
| 815 |
+
},
|
| 816 |
+
"model.language_model.layers.33.mlp.shared_expert.down_proj": {
|
| 817 |
+
"quant_algo": "MXFP8",
|
| 818 |
+
"group_size": 32
|
| 819 |
+
},
|
| 820 |
+
"model.language_model.layers.34.mlp.shared_expert.gate_proj": {
|
| 821 |
+
"quant_algo": "MXFP8",
|
| 822 |
+
"group_size": 32
|
| 823 |
+
},
|
| 824 |
+
"model.language_model.layers.34.mlp.shared_expert.up_proj": {
|
| 825 |
+
"quant_algo": "MXFP8",
|
| 826 |
+
"group_size": 32
|
| 827 |
+
},
|
| 828 |
+
"model.language_model.layers.34.mlp.shared_expert.down_proj": {
|
| 829 |
+
"quant_algo": "MXFP8",
|
| 830 |
+
"group_size": 32
|
| 831 |
+
},
|
| 832 |
+
"model.language_model.layers.35.mlp.shared_expert.gate_proj": {
|
| 833 |
+
"quant_algo": "MXFP8",
|
| 834 |
+
"group_size": 32
|
| 835 |
+
},
|
| 836 |
+
"model.language_model.layers.35.mlp.shared_expert.up_proj": {
|
| 837 |
+
"quant_algo": "MXFP8",
|
| 838 |
+
"group_size": 32
|
| 839 |
+
},
|
| 840 |
+
"model.language_model.layers.35.mlp.shared_expert.down_proj": {
|
| 841 |
+
"quant_algo": "MXFP8",
|
| 842 |
+
"group_size": 32
|
| 843 |
+
},
|
| 844 |
+
"model.language_model.layers.36.mlp.shared_expert.gate_proj": {
|
| 845 |
+
"quant_algo": "MXFP8",
|
| 846 |
+
"group_size": 32
|
| 847 |
+
},
|
| 848 |
+
"model.language_model.layers.36.mlp.shared_expert.up_proj": {
|
| 849 |
+
"quant_algo": "MXFP8",
|
| 850 |
+
"group_size": 32
|
| 851 |
+
},
|
| 852 |
+
"model.language_model.layers.36.mlp.shared_expert.down_proj": {
|
| 853 |
+
"quant_algo": "MXFP8",
|
| 854 |
+
"group_size": 32
|
| 855 |
+
},
|
| 856 |
+
"model.language_model.layers.37.mlp.shared_expert.gate_proj": {
|
| 857 |
+
"quant_algo": "MXFP8",
|
| 858 |
+
"group_size": 32
|
| 859 |
+
},
|
| 860 |
+
"model.language_model.layers.37.mlp.shared_expert.up_proj": {
|
| 861 |
+
"quant_algo": "MXFP8",
|
| 862 |
+
"group_size": 32
|
| 863 |
+
},
|
| 864 |
+
"model.language_model.layers.37.mlp.shared_expert.down_proj": {
|
| 865 |
+
"quant_algo": "MXFP8",
|
| 866 |
+
"group_size": 32
|
| 867 |
+
},
|
| 868 |
+
"model.language_model.layers.38.mlp.shared_expert.gate_proj": {
|
| 869 |
+
"quant_algo": "MXFP8",
|
| 870 |
+
"group_size": 32
|
| 871 |
+
},
|
| 872 |
+
"model.language_model.layers.38.mlp.shared_expert.up_proj": {
|
| 873 |
+
"quant_algo": "MXFP8",
|
| 874 |
+
"group_size": 32
|
| 875 |
+
},
|
| 876 |
+
"model.language_model.layers.38.mlp.shared_expert.down_proj": {
|
| 877 |
+
"quant_algo": "MXFP8",
|
| 878 |
+
"group_size": 32
|
| 879 |
+
},
|
| 880 |
+
"model.language_model.layers.39.mlp.shared_expert.gate_proj": {
|
| 881 |
+
"quant_algo": "MXFP8",
|
| 882 |
+
"group_size": 32
|
| 883 |
+
},
|
| 884 |
+
"model.language_model.layers.39.mlp.shared_expert.up_proj": {
|
| 885 |
+
"quant_algo": "MXFP8",
|
| 886 |
+
"group_size": 32
|
| 887 |
+
},
|
| 888 |
+
"model.language_model.layers.39.mlp.shared_expert.down_proj": {
|
| 889 |
+
"quant_algo": "MXFP8",
|
| 890 |
+
"group_size": 32
|
| 891 |
+
},
|
| 892 |
+
"model.language_model.layers.40.mlp.shared_expert.gate_proj": {
|
| 893 |
+
"quant_algo": "MXFP8",
|
| 894 |
+
"group_size": 32
|
| 895 |
+
},
|
| 896 |
+
"model.language_model.layers.40.mlp.shared_expert.up_proj": {
|
| 897 |
+
"quant_algo": "MXFP8",
|
| 898 |
+
"group_size": 32
|
| 899 |
+
},
|
| 900 |
+
"model.language_model.layers.40.mlp.shared_expert.down_proj": {
|
| 901 |
+
"quant_algo": "MXFP8",
|
| 902 |
+
"group_size": 32
|
| 903 |
+
},
|
| 904 |
+
"model.language_model.layers.41.mlp.shared_expert.gate_proj": {
|
| 905 |
+
"quant_algo": "MXFP8",
|
| 906 |
+
"group_size": 32
|
| 907 |
+
},
|
| 908 |
+
"model.language_model.layers.41.mlp.shared_expert.up_proj": {
|
| 909 |
+
"quant_algo": "MXFP8",
|
| 910 |
+
"group_size": 32
|
| 911 |
+
},
|
| 912 |
+
"model.language_model.layers.41.mlp.shared_expert.down_proj": {
|
| 913 |
+
"quant_algo": "MXFP8",
|
| 914 |
+
"group_size": 32
|
| 915 |
+
},
|
| 916 |
+
"model.language_model.layers.42.mlp.shared_expert.gate_proj": {
|
| 917 |
+
"quant_algo": "MXFP8",
|
| 918 |
+
"group_size": 32
|
| 919 |
+
},
|
| 920 |
+
"model.language_model.layers.42.mlp.shared_expert.up_proj": {
|
| 921 |
+
"quant_algo": "MXFP8",
|
| 922 |
+
"group_size": 32
|
| 923 |
+
},
|
| 924 |
+
"model.language_model.layers.42.mlp.shared_expert.down_proj": {
|
| 925 |
+
"quant_algo": "MXFP8",
|
| 926 |
+
"group_size": 32
|
| 927 |
+
},
|
| 928 |
+
"model.language_model.layers.43.mlp.shared_expert.gate_proj": {
|
| 929 |
+
"quant_algo": "MXFP8",
|
| 930 |
+
"group_size": 32
|
| 931 |
+
},
|
| 932 |
+
"model.language_model.layers.43.mlp.shared_expert.up_proj": {
|
| 933 |
+
"quant_algo": "MXFP8",
|
| 934 |
+
"group_size": 32
|
| 935 |
+
},
|
| 936 |
+
"model.language_model.layers.43.mlp.shared_expert.down_proj": {
|
| 937 |
+
"quant_algo": "MXFP8",
|
| 938 |
+
"group_size": 32
|
| 939 |
+
},
|
| 940 |
+
"model.language_model.layers.44.mlp.shared_expert.gate_proj": {
|
| 941 |
+
"quant_algo": "MXFP8",
|
| 942 |
+
"group_size": 32
|
| 943 |
+
},
|
| 944 |
+
"model.language_model.layers.44.mlp.shared_expert.up_proj": {
|
| 945 |
+
"quant_algo": "MXFP8",
|
| 946 |
+
"group_size": 32
|
| 947 |
+
},
|
| 948 |
+
"model.language_model.layers.44.mlp.shared_expert.down_proj": {
|
| 949 |
+
"quant_algo": "MXFP8",
|
| 950 |
+
"group_size": 32
|
| 951 |
+
},
|
| 952 |
+
"model.language_model.layers.45.mlp.shared_expert.gate_proj": {
|
| 953 |
+
"quant_algo": "MXFP8",
|
| 954 |
+
"group_size": 32
|
| 955 |
+
},
|
| 956 |
+
"model.language_model.layers.45.mlp.shared_expert.up_proj": {
|
| 957 |
+
"quant_algo": "MXFP8",
|
| 958 |
+
"group_size": 32
|
| 959 |
+
},
|
| 960 |
+
"model.language_model.layers.45.mlp.shared_expert.down_proj": {
|
| 961 |
+
"quant_algo": "MXFP8",
|
| 962 |
+
"group_size": 32
|
| 963 |
+
},
|
| 964 |
+
"model.language_model.layers.46.mlp.shared_expert.gate_proj": {
|
| 965 |
+
"quant_algo": "MXFP8",
|
| 966 |
+
"group_size": 32
|
| 967 |
+
},
|
| 968 |
+
"model.language_model.layers.46.mlp.shared_expert.up_proj": {
|
| 969 |
+
"quant_algo": "MXFP8",
|
| 970 |
+
"group_size": 32
|
| 971 |
+
},
|
| 972 |
+
"model.language_model.layers.46.mlp.shared_expert.down_proj": {
|
| 973 |
+
"quant_algo": "MXFP8",
|
| 974 |
+
"group_size": 32
|
| 975 |
+
},
|
| 976 |
+
"model.language_model.layers.47.mlp.shared_expert.gate_proj": {
|
| 977 |
+
"quant_algo": "MXFP8",
|
| 978 |
+
"group_size": 32
|
| 979 |
+
},
|
| 980 |
+
"model.language_model.layers.47.mlp.shared_expert.up_proj": {
|
| 981 |
+
"quant_algo": "MXFP8",
|
| 982 |
+
"group_size": 32
|
| 983 |
+
},
|
| 984 |
+
"model.language_model.layers.47.mlp.shared_expert.down_proj": {
|
| 985 |
+
"quant_algo": "MXFP8",
|
| 986 |
+
"group_size": 32
|
| 987 |
+
},
|
| 988 |
+
"model.language_model.layers.1.ple.ple_embedding.ngram_embedding": {
|
| 989 |
+
"quant_algo": "NVFP4",
|
| 990 |
+
"group_size": 16
|
| 991 |
+
},
|
| 992 |
+
"mtp.layers.0.mlp.experts": {
|
| 993 |
+
"quant_algo": "W4A16_NVFP4",
|
| 994 |
+
"group_size": 16
|
| 995 |
+
},
|
| 996 |
+
"model.language_model.layers.11.self_attn.indexer.index_qk_proj": {
|
| 997 |
+
"quant_algo": "MXFP8",
|
| 998 |
+
"group_size": 32
|
| 999 |
+
},
|
| 1000 |
+
"model.language_model.layers.11.self_attn.k_proj": {
|
| 1001 |
+
"quant_algo": "MXFP8",
|
| 1002 |
+
"group_size": 32
|
| 1003 |
+
},
|
| 1004 |
+
"model.language_model.layers.11.self_attn.o_proj": {
|
| 1005 |
+
"quant_algo": "MXFP8",
|
| 1006 |
+
"group_size": 32
|
| 1007 |
+
},
|
| 1008 |
+
"model.language_model.layers.11.self_attn.q_proj": {
|
| 1009 |
+
"quant_algo": "MXFP8",
|
| 1010 |
+
"group_size": 32
|
| 1011 |
+
},
|
| 1012 |
+
"model.language_model.layers.11.self_attn.v_proj": {
|
| 1013 |
+
"quant_algo": "MXFP8",
|
| 1014 |
+
"group_size": 32
|
| 1015 |
+
},
|
| 1016 |
+
"model.language_model.layers.15.self_attn.indexer.index_qk_proj": {
|
| 1017 |
+
"quant_algo": "MXFP8",
|
| 1018 |
+
"group_size": 32
|
| 1019 |
+
},
|
| 1020 |
+
"model.language_model.layers.15.self_attn.k_proj": {
|
| 1021 |
+
"quant_algo": "MXFP8",
|
| 1022 |
+
"group_size": 32
|
| 1023 |
+
},
|
| 1024 |
+
"model.language_model.layers.15.self_attn.o_proj": {
|
| 1025 |
+
"quant_algo": "MXFP8",
|
| 1026 |
+
"group_size": 32
|
| 1027 |
+
},
|
| 1028 |
+
"model.language_model.layers.15.self_attn.q_proj": {
|
| 1029 |
+
"quant_algo": "MXFP8",
|
| 1030 |
+
"group_size": 32
|
| 1031 |
+
},
|
| 1032 |
+
"model.language_model.layers.15.self_attn.v_proj": {
|
| 1033 |
+
"quant_algo": "MXFP8",
|
| 1034 |
+
"group_size": 32
|
| 1035 |
+
},
|
| 1036 |
+
"model.language_model.layers.19.self_attn.indexer.index_qk_proj": {
|
| 1037 |
+
"quant_algo": "MXFP8",
|
| 1038 |
+
"group_size": 32
|
| 1039 |
+
},
|
| 1040 |
+
"model.language_model.layers.19.self_attn.k_proj": {
|
| 1041 |
+
"quant_algo": "MXFP8",
|
| 1042 |
+
"group_size": 32
|
| 1043 |
+
},
|
| 1044 |
+
"model.language_model.layers.19.self_attn.o_proj": {
|
| 1045 |
+
"quant_algo": "MXFP8",
|
| 1046 |
+
"group_size": 32
|
| 1047 |
+
},
|
| 1048 |
+
"model.language_model.layers.19.self_attn.q_proj": {
|
| 1049 |
+
"quant_algo": "MXFP8",
|
| 1050 |
+
"group_size": 32
|
| 1051 |
+
},
|
| 1052 |
+
"model.language_model.layers.19.self_attn.v_proj": {
|
| 1053 |
+
"quant_algo": "MXFP8",
|
| 1054 |
+
"group_size": 32
|
| 1055 |
+
},
|
| 1056 |
+
"model.language_model.layers.23.self_attn.indexer.index_qk_proj": {
|
| 1057 |
+
"quant_algo": "MXFP8",
|
| 1058 |
+
"group_size": 32
|
| 1059 |
+
},
|
| 1060 |
+
"model.language_model.layers.23.self_attn.k_proj": {
|
| 1061 |
+
"quant_algo": "MXFP8",
|
| 1062 |
+
"group_size": 32
|
| 1063 |
+
},
|
| 1064 |
+
"model.language_model.layers.23.self_attn.o_proj": {
|
| 1065 |
+
"quant_algo": "MXFP8",
|
| 1066 |
+
"group_size": 32
|
| 1067 |
+
},
|
| 1068 |
+
"model.language_model.layers.23.self_attn.q_proj": {
|
| 1069 |
+
"quant_algo": "MXFP8",
|
| 1070 |
+
"group_size": 32
|
| 1071 |
+
},
|
| 1072 |
+
"model.language_model.layers.23.self_attn.v_proj": {
|
| 1073 |
+
"quant_algo": "MXFP8",
|
| 1074 |
+
"group_size": 32
|
| 1075 |
+
},
|
| 1076 |
+
"model.language_model.layers.27.self_attn.indexer.index_qk_proj": {
|
| 1077 |
+
"quant_algo": "MXFP8",
|
| 1078 |
+
"group_size": 32
|
| 1079 |
+
},
|
| 1080 |
+
"model.language_model.layers.27.self_attn.k_proj": {
|
| 1081 |
+
"quant_algo": "MXFP8",
|
| 1082 |
+
"group_size": 32
|
| 1083 |
+
},
|
| 1084 |
+
"model.language_model.layers.27.self_attn.o_proj": {
|
| 1085 |
+
"quant_algo": "MXFP8",
|
| 1086 |
+
"group_size": 32
|
| 1087 |
+
},
|
| 1088 |
+
"model.language_model.layers.27.self_attn.q_proj": {
|
| 1089 |
+
"quant_algo": "MXFP8",
|
| 1090 |
+
"group_size": 32
|
| 1091 |
+
},
|
| 1092 |
+
"model.language_model.layers.27.self_attn.v_proj": {
|
| 1093 |
+
"quant_algo": "MXFP8",
|
| 1094 |
+
"group_size": 32
|
| 1095 |
+
},
|
| 1096 |
+
"model.language_model.layers.3.self_attn.indexer.index_qk_proj": {
|
| 1097 |
+
"quant_algo": "MXFP8",
|
| 1098 |
+
"group_size": 32
|
| 1099 |
+
},
|
| 1100 |
+
"model.language_model.layers.3.self_attn.k_proj": {
|
| 1101 |
+
"quant_algo": "MXFP8",
|
| 1102 |
+
"group_size": 32
|
| 1103 |
+
},
|
| 1104 |
+
"model.language_model.layers.3.self_attn.o_proj": {
|
| 1105 |
+
"quant_algo": "MXFP8",
|
| 1106 |
+
"group_size": 32
|
| 1107 |
+
},
|
| 1108 |
+
"model.language_model.layers.3.self_attn.q_proj": {
|
| 1109 |
+
"quant_algo": "MXFP8",
|
| 1110 |
+
"group_size": 32
|
| 1111 |
+
},
|
| 1112 |
+
"model.language_model.layers.3.self_attn.v_proj": {
|
| 1113 |
+
"quant_algo": "MXFP8",
|
| 1114 |
+
"group_size": 32
|
| 1115 |
+
},
|
| 1116 |
+
"model.language_model.layers.31.self_attn.indexer.index_qk_proj": {
|
| 1117 |
+
"quant_algo": "MXFP8",
|
| 1118 |
+
"group_size": 32
|
| 1119 |
+
},
|
| 1120 |
+
"model.language_model.layers.31.self_attn.k_proj": {
|
| 1121 |
+
"quant_algo": "MXFP8",
|
| 1122 |
+
"group_size": 32
|
| 1123 |
+
},
|
| 1124 |
+
"model.language_model.layers.31.self_attn.o_proj": {
|
| 1125 |
+
"quant_algo": "MXFP8",
|
| 1126 |
+
"group_size": 32
|
| 1127 |
+
},
|
| 1128 |
+
"model.language_model.layers.31.self_attn.q_proj": {
|
| 1129 |
+
"quant_algo": "MXFP8",
|
| 1130 |
+
"group_size": 32
|
| 1131 |
+
},
|
| 1132 |
+
"model.language_model.layers.31.self_attn.v_proj": {
|
| 1133 |
+
"quant_algo": "MXFP8",
|
| 1134 |
+
"group_size": 32
|
| 1135 |
+
},
|
| 1136 |
+
"model.language_model.layers.35.self_attn.indexer.index_qk_proj": {
|
| 1137 |
+
"quant_algo": "MXFP8",
|
| 1138 |
+
"group_size": 32
|
| 1139 |
+
},
|
| 1140 |
+
"model.language_model.layers.35.self_attn.k_proj": {
|
| 1141 |
+
"quant_algo": "MXFP8",
|
| 1142 |
+
"group_size": 32
|
| 1143 |
+
},
|
| 1144 |
+
"model.language_model.layers.35.self_attn.o_proj": {
|
| 1145 |
+
"quant_algo": "MXFP8",
|
| 1146 |
+
"group_size": 32
|
| 1147 |
+
},
|
| 1148 |
+
"model.language_model.layers.35.self_attn.q_proj": {
|
| 1149 |
+
"quant_algo": "MXFP8",
|
| 1150 |
+
"group_size": 32
|
| 1151 |
+
},
|
| 1152 |
+
"model.language_model.layers.35.self_attn.v_proj": {
|
| 1153 |
+
"quant_algo": "MXFP8",
|
| 1154 |
+
"group_size": 32
|
| 1155 |
+
},
|
| 1156 |
+
"model.language_model.layers.39.self_attn.indexer.index_qk_proj": {
|
| 1157 |
+
"quant_algo": "MXFP8",
|
| 1158 |
+
"group_size": 32
|
| 1159 |
+
},
|
| 1160 |
+
"model.language_model.layers.39.self_attn.k_proj": {
|
| 1161 |
+
"quant_algo": "MXFP8",
|
| 1162 |
+
"group_size": 32
|
| 1163 |
+
},
|
| 1164 |
+
"model.language_model.layers.39.self_attn.o_proj": {
|
| 1165 |
+
"quant_algo": "MXFP8",
|
| 1166 |
+
"group_size": 32
|
| 1167 |
+
},
|
| 1168 |
+
"model.language_model.layers.39.self_attn.q_proj": {
|
| 1169 |
+
"quant_algo": "MXFP8",
|
| 1170 |
+
"group_size": 32
|
| 1171 |
+
},
|
| 1172 |
+
"model.language_model.layers.39.self_attn.v_proj": {
|
| 1173 |
+
"quant_algo": "MXFP8",
|
| 1174 |
+
"group_size": 32
|
| 1175 |
+
},
|
| 1176 |
+
"model.language_model.layers.43.self_attn.indexer.index_qk_proj": {
|
| 1177 |
+
"quant_algo": "MXFP8",
|
| 1178 |
+
"group_size": 32
|
| 1179 |
+
},
|
| 1180 |
+
"model.language_model.layers.43.self_attn.k_proj": {
|
| 1181 |
+
"quant_algo": "MXFP8",
|
| 1182 |
+
"group_size": 32
|
| 1183 |
+
},
|
| 1184 |
+
"model.language_model.layers.43.self_attn.o_proj": {
|
| 1185 |
+
"quant_algo": "MXFP8",
|
| 1186 |
+
"group_size": 32
|
| 1187 |
+
},
|
| 1188 |
+
"model.language_model.layers.43.self_attn.q_proj": {
|
| 1189 |
+
"quant_algo": "MXFP8",
|
| 1190 |
+
"group_size": 32
|
| 1191 |
+
},
|
| 1192 |
+
"model.language_model.layers.43.self_attn.v_proj": {
|
| 1193 |
+
"quant_algo": "MXFP8",
|
| 1194 |
+
"group_size": 32
|
| 1195 |
+
},
|
| 1196 |
+
"model.language_model.layers.47.self_attn.indexer.index_qk_proj": {
|
| 1197 |
+
"quant_algo": "MXFP8",
|
| 1198 |
+
"group_size": 32
|
| 1199 |
+
},
|
| 1200 |
+
"model.language_model.layers.47.self_attn.k_proj": {
|
| 1201 |
+
"quant_algo": "MXFP8",
|
| 1202 |
+
"group_size": 32
|
| 1203 |
+
},
|
| 1204 |
+
"model.language_model.layers.47.self_attn.o_proj": {
|
| 1205 |
+
"quant_algo": "MXFP8",
|
| 1206 |
+
"group_size": 32
|
| 1207 |
+
},
|
| 1208 |
+
"model.language_model.layers.47.self_attn.q_proj": {
|
| 1209 |
+
"quant_algo": "MXFP8",
|
| 1210 |
+
"group_size": 32
|
| 1211 |
+
},
|
| 1212 |
+
"model.language_model.layers.47.self_attn.v_proj": {
|
| 1213 |
+
"quant_algo": "MXFP8",
|
| 1214 |
+
"group_size": 32
|
| 1215 |
+
},
|
| 1216 |
+
"model.language_model.layers.7.self_attn.indexer.index_qk_proj": {
|
| 1217 |
+
"quant_algo": "MXFP8",
|
| 1218 |
+
"group_size": 32
|
| 1219 |
+
},
|
| 1220 |
+
"model.language_model.layers.7.self_attn.k_proj": {
|
| 1221 |
+
"quant_algo": "MXFP8",
|
| 1222 |
+
"group_size": 32
|
| 1223 |
+
},
|
| 1224 |
+
"model.language_model.layers.7.self_attn.o_proj": {
|
| 1225 |
+
"quant_algo": "MXFP8",
|
| 1226 |
+
"group_size": 32
|
| 1227 |
+
},
|
| 1228 |
+
"model.language_model.layers.7.self_attn.q_proj": {
|
| 1229 |
+
"quant_algo": "MXFP8",
|
| 1230 |
+
"group_size": 32
|
| 1231 |
+
},
|
| 1232 |
+
"model.language_model.layers.7.self_attn.v_proj": {
|
| 1233 |
+
"quant_algo": "MXFP8",
|
| 1234 |
+
"group_size": 32
|
| 1235 |
+
},
|
| 1236 |
+
"mtp.layers.48.mlp.experts": {
|
| 1237 |
+
"quant_algo": "W4A16_NVFP4",
|
| 1238 |
+
"group_size": 16
|
| 1239 |
+
},
|
| 1240 |
+
"model.visual.blocks.0.attn.proj": {
|
| 1241 |
+
"quant_algo": "MXFP8",
|
| 1242 |
+
"group_size": 32
|
| 1243 |
+
},
|
| 1244 |
+
"model.visual.blocks.0.attn.qkv": {
|
| 1245 |
+
"quant_algo": "MXFP8",
|
| 1246 |
+
"group_size": 32
|
| 1247 |
+
},
|
| 1248 |
+
"model.visual.blocks.1.attn.proj": {
|
| 1249 |
+
"quant_algo": "MXFP8",
|
| 1250 |
+
"group_size": 32
|
| 1251 |
+
},
|
| 1252 |
+
"model.visual.blocks.1.attn.qkv": {
|
| 1253 |
+
"quant_algo": "MXFP8",
|
| 1254 |
+
"group_size": 32
|
| 1255 |
+
},
|
| 1256 |
+
"model.visual.blocks.10.attn.proj": {
|
| 1257 |
+
"quant_algo": "MXFP8",
|
| 1258 |
+
"group_size": 32
|
| 1259 |
+
},
|
| 1260 |
+
"model.visual.blocks.10.attn.qkv": {
|
| 1261 |
+
"quant_algo": "MXFP8",
|
| 1262 |
+
"group_size": 32
|
| 1263 |
+
},
|
| 1264 |
+
"model.visual.blocks.11.attn.proj": {
|
| 1265 |
+
"quant_algo": "MXFP8",
|
| 1266 |
+
"group_size": 32
|
| 1267 |
+
},
|
| 1268 |
+
"model.visual.blocks.11.attn.qkv": {
|
| 1269 |
+
"quant_algo": "MXFP8",
|
| 1270 |
+
"group_size": 32
|
| 1271 |
+
},
|
| 1272 |
+
"model.visual.blocks.12.attn.proj": {
|
| 1273 |
+
"quant_algo": "MXFP8",
|
| 1274 |
+
"group_size": 32
|
| 1275 |
+
},
|
| 1276 |
+
"model.visual.blocks.12.attn.qkv": {
|
| 1277 |
+
"quant_algo": "MXFP8",
|
| 1278 |
+
"group_size": 32
|
| 1279 |
+
},
|
| 1280 |
+
"model.visual.blocks.13.attn.proj": {
|
| 1281 |
+
"quant_algo": "MXFP8",
|
| 1282 |
+
"group_size": 32
|
| 1283 |
+
},
|
| 1284 |
+
"model.visual.blocks.13.attn.qkv": {
|
| 1285 |
+
"quant_algo": "MXFP8",
|
| 1286 |
+
"group_size": 32
|
| 1287 |
+
},
|
| 1288 |
+
"model.visual.blocks.14.attn.proj": {
|
| 1289 |
+
"quant_algo": "MXFP8",
|
| 1290 |
+
"group_size": 32
|
| 1291 |
+
},
|
| 1292 |
+
"model.visual.blocks.14.attn.qkv": {
|
| 1293 |
+
"quant_algo": "MXFP8",
|
| 1294 |
+
"group_size": 32
|
| 1295 |
+
},
|
| 1296 |
+
"model.visual.blocks.15.attn.proj": {
|
| 1297 |
+
"quant_algo": "MXFP8",
|
| 1298 |
+
"group_size": 32
|
| 1299 |
+
},
|
| 1300 |
+
"model.visual.blocks.15.attn.qkv": {
|
| 1301 |
+
"quant_algo": "MXFP8",
|
| 1302 |
+
"group_size": 32
|
| 1303 |
+
},
|
| 1304 |
+
"model.visual.blocks.16.attn.proj": {
|
| 1305 |
+
"quant_algo": "MXFP8",
|
| 1306 |
+
"group_size": 32
|
| 1307 |
+
},
|
| 1308 |
+
"model.visual.blocks.16.attn.qkv": {
|
| 1309 |
+
"quant_algo": "MXFP8",
|
| 1310 |
+
"group_size": 32
|
| 1311 |
+
},
|
| 1312 |
+
"model.visual.blocks.17.attn.proj": {
|
| 1313 |
+
"quant_algo": "MXFP8",
|
| 1314 |
+
"group_size": 32
|
| 1315 |
+
},
|
| 1316 |
+
"model.visual.blocks.17.attn.qkv": {
|
| 1317 |
+
"quant_algo": "MXFP8",
|
| 1318 |
+
"group_size": 32
|
| 1319 |
+
},
|
| 1320 |
+
"model.visual.blocks.18.attn.proj": {
|
| 1321 |
+
"quant_algo": "MXFP8",
|
| 1322 |
+
"group_size": 32
|
| 1323 |
+
},
|
| 1324 |
+
"model.visual.blocks.18.attn.qkv": {
|
| 1325 |
+
"quant_algo": "MXFP8",
|
| 1326 |
+
"group_size": 32
|
| 1327 |
+
},
|
| 1328 |
+
"model.visual.blocks.19.attn.proj": {
|
| 1329 |
+
"quant_algo": "MXFP8",
|
| 1330 |
+
"group_size": 32
|
| 1331 |
+
},
|
| 1332 |
+
"model.visual.blocks.19.attn.qkv": {
|
| 1333 |
+
"quant_algo": "MXFP8",
|
| 1334 |
+
"group_size": 32
|
| 1335 |
+
},
|
| 1336 |
+
"model.visual.blocks.2.attn.proj": {
|
| 1337 |
+
"quant_algo": "MXFP8",
|
| 1338 |
+
"group_size": 32
|
| 1339 |
+
},
|
| 1340 |
+
"model.visual.blocks.2.attn.qkv": {
|
| 1341 |
+
"quant_algo": "MXFP8",
|
| 1342 |
+
"group_size": 32
|
| 1343 |
+
},
|
| 1344 |
+
"model.visual.blocks.20.attn.proj": {
|
| 1345 |
+
"quant_algo": "MXFP8",
|
| 1346 |
+
"group_size": 32
|
| 1347 |
+
},
|
| 1348 |
+
"model.visual.blocks.20.attn.qkv": {
|
| 1349 |
+
"quant_algo": "MXFP8",
|
| 1350 |
+
"group_size": 32
|
| 1351 |
+
},
|
| 1352 |
+
"model.visual.blocks.21.attn.proj": {
|
| 1353 |
+
"quant_algo": "MXFP8",
|
| 1354 |
+
"group_size": 32
|
| 1355 |
+
},
|
| 1356 |
+
"model.visual.blocks.21.attn.qkv": {
|
| 1357 |
+
"quant_algo": "MXFP8",
|
| 1358 |
+
"group_size": 32
|
| 1359 |
+
},
|
| 1360 |
+
"model.visual.blocks.22.attn.proj": {
|
| 1361 |
+
"quant_algo": "MXFP8",
|
| 1362 |
+
"group_size": 32
|
| 1363 |
+
},
|
| 1364 |
+
"model.visual.blocks.22.attn.qkv": {
|
| 1365 |
+
"quant_algo": "MXFP8",
|
| 1366 |
+
"group_size": 32
|
| 1367 |
+
},
|
| 1368 |
+
"model.visual.blocks.23.attn.proj": {
|
| 1369 |
+
"quant_algo": "MXFP8",
|
| 1370 |
+
"group_size": 32
|
| 1371 |
+
},
|
| 1372 |
+
"model.visual.blocks.23.attn.qkv": {
|
| 1373 |
+
"quant_algo": "MXFP8",
|
| 1374 |
+
"group_size": 32
|
| 1375 |
+
},
|
| 1376 |
+
"model.visual.blocks.24.attn.proj": {
|
| 1377 |
+
"quant_algo": "MXFP8",
|
| 1378 |
+
"group_size": 32
|
| 1379 |
+
},
|
| 1380 |
+
"model.visual.blocks.24.attn.qkv": {
|
| 1381 |
+
"quant_algo": "MXFP8",
|
| 1382 |
+
"group_size": 32
|
| 1383 |
+
},
|
| 1384 |
+
"model.visual.blocks.25.attn.proj": {
|
| 1385 |
+
"quant_algo": "MXFP8",
|
| 1386 |
+
"group_size": 32
|
| 1387 |
+
},
|
| 1388 |
+
"model.visual.blocks.25.attn.qkv": {
|
| 1389 |
+
"quant_algo": "MXFP8",
|
| 1390 |
+
"group_size": 32
|
| 1391 |
+
},
|
| 1392 |
+
"model.visual.blocks.26.attn.proj": {
|
| 1393 |
+
"quant_algo": "MXFP8",
|
| 1394 |
+
"group_size": 32
|
| 1395 |
+
},
|
| 1396 |
+
"model.visual.blocks.26.attn.qkv": {
|
| 1397 |
+
"quant_algo": "MXFP8",
|
| 1398 |
+
"group_size": 32
|
| 1399 |
+
},
|
| 1400 |
+
"model.visual.blocks.3.attn.proj": {
|
| 1401 |
+
"quant_algo": "MXFP8",
|
| 1402 |
+
"group_size": 32
|
| 1403 |
+
},
|
| 1404 |
+
"model.visual.blocks.3.attn.qkv": {
|
| 1405 |
+
"quant_algo": "MXFP8",
|
| 1406 |
+
"group_size": 32
|
| 1407 |
+
},
|
| 1408 |
+
"model.visual.blocks.4.attn.proj": {
|
| 1409 |
+
"quant_algo": "MXFP8",
|
| 1410 |
+
"group_size": 32
|
| 1411 |
+
},
|
| 1412 |
+
"model.visual.blocks.4.attn.qkv": {
|
| 1413 |
+
"quant_algo": "MXFP8",
|
| 1414 |
+
"group_size": 32
|
| 1415 |
+
},
|
| 1416 |
+
"model.visual.blocks.5.attn.proj": {
|
| 1417 |
+
"quant_algo": "MXFP8",
|
| 1418 |
+
"group_size": 32
|
| 1419 |
+
},
|
| 1420 |
+
"model.visual.blocks.5.attn.qkv": {
|
| 1421 |
+
"quant_algo": "MXFP8",
|
| 1422 |
+
"group_size": 32
|
| 1423 |
+
},
|
| 1424 |
+
"model.visual.blocks.6.attn.proj": {
|
| 1425 |
+
"quant_algo": "MXFP8",
|
| 1426 |
+
"group_size": 32
|
| 1427 |
+
},
|
| 1428 |
+
"model.visual.blocks.6.attn.qkv": {
|
| 1429 |
+
"quant_algo": "MXFP8",
|
| 1430 |
+
"group_size": 32
|
| 1431 |
+
},
|
| 1432 |
+
"model.visual.blocks.7.attn.proj": {
|
| 1433 |
+
"quant_algo": "MXFP8",
|
| 1434 |
+
"group_size": 32
|
| 1435 |
+
},
|
| 1436 |
+
"model.visual.blocks.7.attn.qkv": {
|
| 1437 |
+
"quant_algo": "MXFP8",
|
| 1438 |
+
"group_size": 32
|
| 1439 |
+
},
|
| 1440 |
+
"model.visual.blocks.8.attn.proj": {
|
| 1441 |
+
"quant_algo": "MXFP8",
|
| 1442 |
+
"group_size": 32
|
| 1443 |
+
},
|
| 1444 |
+
"model.visual.blocks.8.attn.qkv": {
|
| 1445 |
+
"quant_algo": "MXFP8",
|
| 1446 |
+
"group_size": 32
|
| 1447 |
+
},
|
| 1448 |
+
"model.visual.blocks.9.attn.proj": {
|
| 1449 |
+
"quant_algo": "MXFP8",
|
| 1450 |
+
"group_size": 32
|
| 1451 |
+
},
|
| 1452 |
+
"model.visual.blocks.9.attn.qkv": {
|
| 1453 |
+
"quant_algo": "MXFP8",
|
| 1454 |
+
"group_size": 32
|
| 1455 |
+
},
|
| 1456 |
+
"model.visual.blocks.0.mlp.linear_fc1": {
|
| 1457 |
+
"quant_algo": "W4A16_NVFP4",
|
| 1458 |
+
"group_size": 16
|
| 1459 |
+
},
|
| 1460 |
+
"model.visual.blocks.0.mlp.linear_fc2": {
|
| 1461 |
+
"quant_algo": "W4A16_NVFP4",
|
| 1462 |
+
"group_size": 16
|
| 1463 |
+
},
|
| 1464 |
+
"model.visual.blocks.1.mlp.linear_fc1": {
|
| 1465 |
+
"quant_algo": "W4A16_NVFP4",
|
| 1466 |
+
"group_size": 16
|
| 1467 |
+
},
|
| 1468 |
+
"model.visual.blocks.1.mlp.linear_fc2": {
|
| 1469 |
+
"quant_algo": "W4A16_NVFP4",
|
| 1470 |
+
"group_size": 16
|
| 1471 |
+
},
|
| 1472 |
+
"model.visual.blocks.10.mlp.linear_fc1": {
|
| 1473 |
+
"quant_algo": "W4A16_NVFP4",
|
| 1474 |
+
"group_size": 16
|
| 1475 |
+
},
|
| 1476 |
+
"model.visual.blocks.10.mlp.linear_fc2": {
|
| 1477 |
+
"quant_algo": "W4A16_NVFP4",
|
| 1478 |
+
"group_size": 16
|
| 1479 |
+
},
|
| 1480 |
+
"model.visual.blocks.11.mlp.linear_fc1": {
|
| 1481 |
+
"quant_algo": "W4A16_NVFP4",
|
| 1482 |
+
"group_size": 16
|
| 1483 |
+
},
|
| 1484 |
+
"model.visual.blocks.11.mlp.linear_fc2": {
|
| 1485 |
+
"quant_algo": "W4A16_NVFP4",
|
| 1486 |
+
"group_size": 16
|
| 1487 |
+
},
|
| 1488 |
+
"model.visual.blocks.12.mlp.linear_fc1": {
|
| 1489 |
+
"quant_algo": "W4A16_NVFP4",
|
| 1490 |
+
"group_size": 16
|
| 1491 |
+
},
|
| 1492 |
+
"model.visual.blocks.12.mlp.linear_fc2": {
|
| 1493 |
+
"quant_algo": "W4A16_NVFP4",
|
| 1494 |
+
"group_size": 16
|
| 1495 |
+
},
|
| 1496 |
+
"model.visual.blocks.13.mlp.linear_fc1": {
|
| 1497 |
+
"quant_algo": "W4A16_NVFP4",
|
| 1498 |
+
"group_size": 16
|
| 1499 |
+
},
|
| 1500 |
+
"model.visual.blocks.13.mlp.linear_fc2": {
|
| 1501 |
+
"quant_algo": "W4A16_NVFP4",
|
| 1502 |
+
"group_size": 16
|
| 1503 |
+
},
|
| 1504 |
+
"model.visual.blocks.14.mlp.linear_fc1": {
|
| 1505 |
+
"quant_algo": "W4A16_NVFP4",
|
| 1506 |
+
"group_size": 16
|
| 1507 |
+
},
|
| 1508 |
+
"model.visual.blocks.14.mlp.linear_fc2": {
|
| 1509 |
+
"quant_algo": "W4A16_NVFP4",
|
| 1510 |
+
"group_size": 16
|
| 1511 |
+
},
|
| 1512 |
+
"model.visual.blocks.15.mlp.linear_fc1": {
|
| 1513 |
+
"quant_algo": "W4A16_NVFP4",
|
| 1514 |
+
"group_size": 16
|
| 1515 |
+
},
|
| 1516 |
+
"model.visual.blocks.15.mlp.linear_fc2": {
|
| 1517 |
+
"quant_algo": "W4A16_NVFP4",
|
| 1518 |
+
"group_size": 16
|
| 1519 |
+
},
|
| 1520 |
+
"model.visual.blocks.16.mlp.linear_fc1": {
|
| 1521 |
+
"quant_algo": "W4A16_NVFP4",
|
| 1522 |
+
"group_size": 16
|
| 1523 |
+
},
|
| 1524 |
+
"model.visual.blocks.16.mlp.linear_fc2": {
|
| 1525 |
+
"quant_algo": "W4A16_NVFP4",
|
| 1526 |
+
"group_size": 16
|
| 1527 |
+
},
|
| 1528 |
+
"model.visual.blocks.17.mlp.linear_fc1": {
|
| 1529 |
+
"quant_algo": "W4A16_NVFP4",
|
| 1530 |
+
"group_size": 16
|
| 1531 |
+
},
|
| 1532 |
+
"model.visual.blocks.17.mlp.linear_fc2": {
|
| 1533 |
+
"quant_algo": "W4A16_NVFP4",
|
| 1534 |
+
"group_size": 16
|
| 1535 |
+
},
|
| 1536 |
+
"model.visual.blocks.18.mlp.linear_fc1": {
|
| 1537 |
+
"quant_algo": "W4A16_NVFP4",
|
| 1538 |
+
"group_size": 16
|
| 1539 |
+
},
|
| 1540 |
+
"model.visual.blocks.18.mlp.linear_fc2": {
|
| 1541 |
+
"quant_algo": "W4A16_NVFP4",
|
| 1542 |
+
"group_size": 16
|
| 1543 |
+
},
|
| 1544 |
+
"model.visual.blocks.19.mlp.linear_fc1": {
|
| 1545 |
+
"quant_algo": "W4A16_NVFP4",
|
| 1546 |
+
"group_size": 16
|
| 1547 |
+
},
|
| 1548 |
+
"model.visual.blocks.19.mlp.linear_fc2": {
|
| 1549 |
+
"quant_algo": "W4A16_NVFP4",
|
| 1550 |
+
"group_size": 16
|
| 1551 |
+
},
|
| 1552 |
+
"model.visual.blocks.2.mlp.linear_fc1": {
|
| 1553 |
+
"quant_algo": "W4A16_NVFP4",
|
| 1554 |
+
"group_size": 16
|
| 1555 |
+
},
|
| 1556 |
+
"model.visual.blocks.2.mlp.linear_fc2": {
|
| 1557 |
+
"quant_algo": "W4A16_NVFP4",
|
| 1558 |
+
"group_size": 16
|
| 1559 |
+
},
|
| 1560 |
+
"model.visual.blocks.20.mlp.linear_fc1": {
|
| 1561 |
+
"quant_algo": "W4A16_NVFP4",
|
| 1562 |
+
"group_size": 16
|
| 1563 |
+
},
|
| 1564 |
+
"model.visual.blocks.20.mlp.linear_fc2": {
|
| 1565 |
+
"quant_algo": "W4A16_NVFP4",
|
| 1566 |
+
"group_size": 16
|
| 1567 |
+
},
|
| 1568 |
+
"model.visual.blocks.21.mlp.linear_fc1": {
|
| 1569 |
+
"quant_algo": "W4A16_NVFP4",
|
| 1570 |
+
"group_size": 16
|
| 1571 |
+
},
|
| 1572 |
+
"model.visual.blocks.21.mlp.linear_fc2": {
|
| 1573 |
+
"quant_algo": "W4A16_NVFP4",
|
| 1574 |
+
"group_size": 16
|
| 1575 |
+
},
|
| 1576 |
+
"model.visual.blocks.22.mlp.linear_fc1": {
|
| 1577 |
+
"quant_algo": "W4A16_NVFP4",
|
| 1578 |
+
"group_size": 16
|
| 1579 |
+
},
|
| 1580 |
+
"model.visual.blocks.22.mlp.linear_fc2": {
|
| 1581 |
+
"quant_algo": "W4A16_NVFP4",
|
| 1582 |
+
"group_size": 16
|
| 1583 |
+
},
|
| 1584 |
+
"model.visual.blocks.23.mlp.linear_fc1": {
|
| 1585 |
+
"quant_algo": "W4A16_NVFP4",
|
| 1586 |
+
"group_size": 16
|
| 1587 |
+
},
|
| 1588 |
+
"model.visual.blocks.23.mlp.linear_fc2": {
|
| 1589 |
+
"quant_algo": "W4A16_NVFP4",
|
| 1590 |
+
"group_size": 16
|
| 1591 |
+
},
|
| 1592 |
+
"model.visual.blocks.24.mlp.linear_fc1": {
|
| 1593 |
+
"quant_algo": "W4A16_NVFP4",
|
| 1594 |
+
"group_size": 16
|
| 1595 |
+
},
|
| 1596 |
+
"model.visual.blocks.24.mlp.linear_fc2": {
|
| 1597 |
+
"quant_algo": "W4A16_NVFP4",
|
| 1598 |
+
"group_size": 16
|
| 1599 |
+
},
|
| 1600 |
+
"model.visual.blocks.25.mlp.linear_fc1": {
|
| 1601 |
+
"quant_algo": "W4A16_NVFP4",
|
| 1602 |
+
"group_size": 16
|
| 1603 |
+
},
|
| 1604 |
+
"model.visual.blocks.25.mlp.linear_fc2": {
|
| 1605 |
+
"quant_algo": "W4A16_NVFP4",
|
| 1606 |
+
"group_size": 16
|
| 1607 |
+
},
|
| 1608 |
+
"model.visual.blocks.26.mlp.linear_fc1": {
|
| 1609 |
+
"quant_algo": "W4A16_NVFP4",
|
| 1610 |
+
"group_size": 16
|
| 1611 |
+
},
|
| 1612 |
+
"model.visual.blocks.26.mlp.linear_fc2": {
|
| 1613 |
+
"quant_algo": "W4A16_NVFP4",
|
| 1614 |
+
"group_size": 16
|
| 1615 |
+
},
|
| 1616 |
+
"model.visual.blocks.3.mlp.linear_fc1": {
|
| 1617 |
+
"quant_algo": "W4A16_NVFP4",
|
| 1618 |
+
"group_size": 16
|
| 1619 |
+
},
|
| 1620 |
+
"model.visual.blocks.3.mlp.linear_fc2": {
|
| 1621 |
+
"quant_algo": "W4A16_NVFP4",
|
| 1622 |
+
"group_size": 16
|
| 1623 |
+
},
|
| 1624 |
+
"model.visual.blocks.4.mlp.linear_fc1": {
|
| 1625 |
+
"quant_algo": "W4A16_NVFP4",
|
| 1626 |
+
"group_size": 16
|
| 1627 |
+
},
|
| 1628 |
+
"model.visual.blocks.4.mlp.linear_fc2": {
|
| 1629 |
+
"quant_algo": "W4A16_NVFP4",
|
| 1630 |
+
"group_size": 16
|
| 1631 |
+
},
|
| 1632 |
+
"model.visual.blocks.5.mlp.linear_fc1": {
|
| 1633 |
+
"quant_algo": "W4A16_NVFP4",
|
| 1634 |
+
"group_size": 16
|
| 1635 |
+
},
|
| 1636 |
+
"model.visual.blocks.5.mlp.linear_fc2": {
|
| 1637 |
+
"quant_algo": "W4A16_NVFP4",
|
| 1638 |
+
"group_size": 16
|
| 1639 |
+
},
|
| 1640 |
+
"model.visual.blocks.6.mlp.linear_fc1": {
|
| 1641 |
+
"quant_algo": "W4A16_NVFP4",
|
| 1642 |
+
"group_size": 16
|
| 1643 |
+
},
|
| 1644 |
+
"model.visual.blocks.6.mlp.linear_fc2": {
|
| 1645 |
+
"quant_algo": "W4A16_NVFP4",
|
| 1646 |
+
"group_size": 16
|
| 1647 |
+
},
|
| 1648 |
+
"model.visual.blocks.7.mlp.linear_fc1": {
|
| 1649 |
+
"quant_algo": "W4A16_NVFP4",
|
| 1650 |
+
"group_size": 16
|
| 1651 |
+
},
|
| 1652 |
+
"model.visual.blocks.7.mlp.linear_fc2": {
|
| 1653 |
+
"quant_algo": "W4A16_NVFP4",
|
| 1654 |
+
"group_size": 16
|
| 1655 |
+
},
|
| 1656 |
+
"model.visual.blocks.8.mlp.linear_fc1": {
|
| 1657 |
+
"quant_algo": "W4A16_NVFP4",
|
| 1658 |
+
"group_size": 16
|
| 1659 |
+
},
|
| 1660 |
+
"model.visual.blocks.8.mlp.linear_fc2": {
|
| 1661 |
+
"quant_algo": "W4A16_NVFP4",
|
| 1662 |
+
"group_size": 16
|
| 1663 |
+
},
|
| 1664 |
+
"model.visual.blocks.9.mlp.linear_fc1": {
|
| 1665 |
+
"quant_algo": "W4A16_NVFP4",
|
| 1666 |
+
"group_size": 16
|
| 1667 |
+
},
|
| 1668 |
+
"model.visual.blocks.9.mlp.linear_fc2": {
|
| 1669 |
+
"quant_algo": "W4A16_NVFP4",
|
| 1670 |
+
"group_size": 16
|
| 1671 |
+
},
|
| 1672 |
+
"model.visual.merger.linear_fc1": {
|
| 1673 |
+
"quant_algo": "W4A16_NVFP4",
|
| 1674 |
+
"group_size": 16
|
| 1675 |
+
},
|
| 1676 |
+
"model.visual.merger.linear_fc2": {
|
| 1677 |
+
"quant_algo": "W4A16_NVFP4",
|
| 1678 |
+
"group_size": 16
|
| 1679 |
+
}
|
| 1680 |
+
}
|
| 1681 |
+
}
|
| 1682 |
+
}
|
expert_selection.json
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
{"keep": 384, "metric": "acp", "normalize": true, "files_with_weights": [["harvest_s1.pt", 1.0], ["harvest_s2.pt", 1.0], ["science_s5.pt", 2.0], ["zh_s6.pt", 3.0], ["code_s7.pt", 2.0], ["agent_s8.pt", 2.0], ["math_s9.pt", 3.0], ["code_glm_s11.pt", 2.0], ["agent_glm_s12.pt", 3.0], ["swe_agent_s13.pt", 3.0], ["olympiad_glm_s14.pt", 2.0], ["en_web_s15.pt", 2.0], ["zh_web_s16.pt", 3.0], ["vision_s17.pt", 3.0]], "experts": {"0": [0, 1, 4, 5, 7, 9, 10, 12, 14, 15, 16, 17, 19, 20, 21, 23, 24, 26, 27, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 42, 44, 45, 46, 47, 48, 49, 51, 52, 53, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 76, 79, 80, 81, 83, 84, 87, 88, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 103, 105, 107, 108, 109, 110, 111, 114, 116, 119, 120, 121, 122, 123, 124, 125, 126, 128, 129, 130, 131, 132, 135, 138, 139, 140, 142, 143, 144, 145, 147, 148, 149, 150, 151, 153, 154, 155, 156, 157, 159, 160, 162, 164, 165, 166, 167, 168, 169, 172, 173, 175, 176, 178, 179, 180, 182, 183, 184, 186, 187, 188, 190, 192, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 208, 209, 211, 212, 213, 214, 215, 217, 218, 219, 220, 222, 223, 224, 225, 226, 227, 228, 230, 231, 232, 233, 234, 235, 239, 240, 241, 242, 243, 246, 247, 248, 249, 251, 253, 255, 256, 258, 259, 261, 262, 264, 265, 266, 267, 268, 269, 270, 272, 273, 274, 275, 277, 278, 280, 282, 283, 285, 287, 288, 289, 290, 291, 293, 294, 297, 298, 299, 301, 302, 303, 304, 305, 306, 308, 309, 310, 312, 313, 314, 315, 316, 319, 320, 321, 322, 325, 326, 328, 329, 330, 332, 333, 334, 337, 338, 340, 342, 343, 344, 346, 347, 348, 349, 351, 352, 353, 354, 356, 358, 359, 360, 361, 362, 363, 364, 365, 367, 369, 370, 371, 372, 374, 376, 377, 378, 379, 380, 381, 383, 384, 385, 386, 388, 389, 390, 391, 392, 393, 394, 395, 396, 398, 399, 400, 401, 402, 403, 404, 405, 406, 408, 411, 412, 415, 416, 417, 418, 419, 423, 425, 426, 427, 428, 430, 433, 434, 435, 436, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 453, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 468, 470, 471, 473, 475, 476, 478, 479, 480, 481, 482, 483, 484, 485, 487, 488, 489, 491, 492, 493, 494, 495, 496, 497, 498, 499, 501, 503, 504, 505, 506, 507, 508, 509], "1": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 28, 29, 30, 32, 33, 34, 36, 38, 39, 40, 42, 43, 44, 45, 46, 47, 48, 51, 52, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 78, 80, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 94, 96, 97, 99, 100, 101, 102, 103, 104, 105, 106, 108, 109, 110, 111, 112, 113, 114, 115, 119, 120, 123, 124, 125, 128, 129, 130, 131, 132, 133, 134, 135, 137, 138, 142, 143, 144, 146, 147, 148, 149, 152, 155, 156, 157, 158, 159, 160, 161, 162, 164, 165, 166, 169, 171, 172, 173, 174, 175, 176, 177, 178, 179, 182, 183, 185, 186, 187, 189, 190, 193, 194, 195, 196, 197, 200, 202, 203, 204, 205, 206, 209, 210, 211, 212, 213, 214, 215, 219, 220, 222, 223, 224, 225, 226, 227, 228, 229, 230, 232, 233, 234, 235, 236, 237, 238, 240, 241, 242, 243, 244, 245, 246, 247, 249, 250, 251, 252, 254, 255, 257, 258, 259, 261, 262, 263, 264, 265, 266, 267, 268, 269, 271, 273, 274, 276, 278, 279, 280, 281, 282, 284, 285, 287, 290, 291, 292, 293, 294, 295, 296, 297, 298, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 311, 313, 314, 315, 316, 317, 318, 319, 320, 321, 323, 324, 325, 326, 328, 329, 330, 331, 334, 336, 338, 339, 340, 341, 342, 344, 345, 349, 350, 351, 352, 353, 354, 355, 357, 358, 361, 362, 363, 364, 366, 368, 370, 372, 373, 375, 376, 378, 381, 382, 383, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 400, 401, 402, 403, 404, 405, 406, 407, 409, 410, 413, 414, 415, 417, 418, 420, 422, 423, 426, 427, 429, 431, 432, 434, 435, 437, 438, 440, 441, 443, 444, 445, 446, 447, 449, 450, 451, 453, 454, 456, 457, 459, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 474, 475, 476, 477, 481, 482, 483, 486, 487, 488, 489, 491, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 508, 510], "2": [0, 2, 4, 5, 7, 8, 9, 10, 11, 12, 13, 16, 17, 18, 20, 21, 22, 23, 25, 27, 28, 29, 30, 32, 34, 36, 37, 39, 40, 41, 42, 43, 44, 45, 46, 47, 49, 50, 51, 53, 54, 55, 57, 58, 59, 61, 63, 64, 65, 66, 68, 69, 70, 71, 72, 74, 75, 76, 77, 79, 81, 83, 84, 85, 86, 87, 88, 89, 90, 92, 95, 96, 97, 99, 100, 101, 102, 103, 104, 105, 106, 107, 109, 110, 112, 113, 114, 115, 116, 117, 122, 123, 124, 125, 127, 128, 129, 130, 132, 133, 134, 135, 137, 138, 139, 140, 142, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 160, 161, 162, 163, 164, 167, 168, 169, 170, 171, 173, 175, 176, 177, 178, 179, 180, 181, 185, 186, 187, 188, 190, 191, 192, 194, 195, 196, 197, 198, 200, 201, 202, 206, 207, 208, 210, 211, 212, 213, 214, 215, 217, 220, 221, 222, 224, 225, 226, 228, 229, 230, 232, 233, 236, 237, 238, 239, 240, 243, 244, 245, 249, 250, 251, 252, 253, 256, 257, 258, 259, 260, 262, 263, 264, 265, 267, 268, 270, 271, 273, 276, 277, 279, 280, 283, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 300, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 315, 316, 317, 318, 319, 320, 321, 322, 324, 329, 332, 333, 335, 336, 337, 339, 341, 342, 343, 346, 347, 348, 349, 350, 351, 352, 353, 355, 357, 358, 359, 360, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 377, 378, 379, 380, 381, 382, 383, 384, 385, 387, 388, 391, 393, 394, 395, 396, 397, 399, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 424, 425, 426, 427, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 442, 443, 444, 445, 446, 449, 450, 451, 452, 453, 454, 456, 457, 458, 460, 462, 463, 464, 466, 467, 468, 469, 470, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 483, 484, 485, 486, 487, 490, 491, 493, 494, 495, 496, 497, 500, 502, 503, 504, 507, 508, 510, 511], "3": [0, 1, 3, 4, 6, 8, 9, 10, 12, 13, 14, 15, 16, 17, 18, 19, 20, 23, 24, 25, 26, 27, 29, 30, 31, 32, 33, 35, 36, 37, 39, 40, 44, 45, 47, 49, 51, 52, 53, 54, 55, 56, 57, 58, 59, 61, 62, 63, 64, 65, 67, 68, 69, 70, 72, 73, 75, 76, 77, 78, 79, 80, 82, 83, 84, 85, 86, 88, 89, 90, 91, 93, 94, 95, 96, 100, 102, 103, 104, 106, 107, 108, 109, 113, 114, 115, 116, 117, 118, 119, 120, 122, 124, 126, 127, 128, 129, 130, 132, 133, 134, 135, 138, 139, 140, 141, 142, 145, 146, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 166, 168, 169, 171, 172, 173, 174, 175, 176, 177, 178, 179, 181, 182, 183, 184, 185, 186, 187, 188, 189, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 202, 203, 204, 205, 207, 208, 210, 211, 212, 213, 214, 215, 216, 217, 219, 220, 221, 223, 225, 226, 228, 229, 230, 231, 233, 235, 236, 237, 238, 239, 240, 241, 242, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 256, 258, 259, 260, 261, 262, 263, 264, 265, 267, 268, 269, 271, 272, 273, 274, 275, 276, 278, 279, 280, 282, 283, 286, 287, 288, 289, 290, 291, 292, 293, 295, 298, 300, 301, 302, 305, 306, 308, 309, 310, 316, 317, 318, 321, 322, 323, 324, 325, 326, 328, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 342, 343, 348, 349, 350, 351, 352, 354, 355, 356, 357, 358, 359, 361, 362, 363, 364, 366, 367, 368, 370, 371, 372, 373, 374, 375, 376, 379, 381, 382, 383, 384, 386, 390, 391, 392, 394, 395, 397, 398, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 415, 416, 418, 419, 420, 421, 422, 426, 428, 429, 430, 432, 433, 434, 435, 436, 437, 438, 440, 441, 442, 443, 444, 446, 447, 450, 451, 452, 454, 455, 456, 457, 459, 460, 461, 465, 466, 468, 469, 470, 471, 473, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 489, 490, 491, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 507, 508, 510], "4": [1, 2, 3, 5, 6, 8, 9, 10, 11, 12, 13, 14, 16, 19, 20, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 48, 49, 50, 51, 53, 54, 55, 56, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 73, 74, 77, 81, 82, 83, 84, 85, 86, 87, 88, 90, 91, 92, 93, 94, 95, 96, 98, 99, 100, 101, 102, 104, 105, 106, 108, 109, 110, 112, 113, 114, 115, 116, 117, 118, 120, 121, 122, 123, 125, 126, 128, 130, 131, 132, 133, 135, 136, 138, 139, 141, 143, 146, 147, 148, 149, 150, 152, 153, 155, 156, 158, 159, 160, 161, 162, 163, 164, 166, 167, 168, 169, 170, 171, 173, 174, 175, 176, 178, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 191, 192, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 220, 222, 223, 226, 227, 230, 231, 233, 234, 236, 237, 238, 239, 240, 241, 242, 243, 245, 246, 247, 248, 249, 251, 252, 254, 255, 257, 259, 260, 263, 264, 265, 266, 267, 269, 270, 271, 272, 273, 274, 276, 277, 278, 280, 281, 283, 284, 285, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 298, 299, 300, 302, 303, 306, 307, 308, 309, 310, 311, 312, 313, 314, 316, 318, 319, 321, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 338, 339, 340, 342, 344, 345, 346, 347, 349, 350, 351, 352, 357, 358, 359, 360, 361, 362, 363, 364, 367, 368, 370, 371, 372, 373, 375, 376, 377, 379, 380, 382, 383, 384, 385, 386, 388, 389, 390, 391, 392, 393, 394, 395, 398, 399, 400, 402, 403, 404, 405, 406, 407, 410, 412, 413, 414, 416, 417, 419, 420, 421, 422, 423, 424, 425, 426, 428, 429, 430, 431, 432, 433, 436, 437, 438, 440, 441, 445, 448, 449, 451, 452, 453, 454, 455, 458, 463, 464, 465, 466, 467, 468, 469, 471, 472, 474, 479, 480, 482, 483, 485, 486, 487, 488, 489, 492, 493, 494, 495, 496, 497, 499, 501, 502, 503, 505, 506, 507, 508, 509, 511], "5": [0, 1, 2, 3, 4, 5, 6, 7, 9, 10, 11, 12, 13, 14, 15, 17, 18, 20, 21, 22, 24, 25, 26, 27, 29, 32, 33, 34, 35, 36, 37, 38, 39, 41, 42, 43, 44, 45, 46, 47, 49, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 63, 65, 67, 68, 71, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 87, 88, 90, 91, 93, 94, 95, 96, 97, 98, 99, 100, 101, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 116, 117, 118, 119, 120, 121, 123, 125, 126, 127, 129, 130, 131, 132, 133, 134, 135, 136, 137, 139, 140, 141, 142, 143, 144, 145, 146, 147, 149, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 163, 164, 165, 166, 167, 169, 170, 171, 172, 174, 176, 177, 178, 179, 180, 181, 185, 186, 187, 188, 190, 191, 192, 194, 195, 196, 197, 201, 202, 203, 204, 206, 208, 209, 210, 211, 212, 213, 214, 215, 217, 218, 219, 220, 222, 224, 225, 226, 228, 229, 233, 234, 236, 237, 238, 239, 240, 241, 242, 244, 245, 247, 250, 252, 253, 254, 255, 257, 258, 259, 260, 261, 262, 263, 264, 266, 268, 270, 273, 274, 275, 277, 278, 279, 280, 283, 284, 285, 286, 287, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 306, 307, 308, 310, 311, 312, 314, 316, 317, 318, 319, 320, 322, 324, 326, 328, 329, 331, 338, 339, 340, 341, 342, 343, 344, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 357, 358, 359, 360, 364, 367, 368, 369, 370, 373, 374, 375, 376, 377, 379, 380, 381, 382, 383, 385, 387, 388, 389, 390, 391, 392, 393, 394, 395, 397, 399, 400, 401, 402, 403, 405, 406, 409, 412, 413, 414, 415, 416, 417, 419, 420, 421, 424, 425, 426, 427, 430, 433, 434, 435, 436, 437, 438, 439, 441, 442, 445, 446, 447, 449, 450, 454, 455, 456, 457, 458, 459, 460, 461, 465, 467, 468, 469, 470, 471, 473, 475, 476, 477, 478, 479, 481, 482, 483, 484, 485, 486, 487, 489, 491, 492, 493, 495, 496, 497, 499, 500, 501, 503, 505, 506, 507, 508, 509, 510], "6": [0, 1, 3, 4, 5, 6, 7, 8, 10, 11, 13, 14, 15, 16, 17, 18, 21, 22, 24, 25, 26, 27, 30, 32, 33, 36, 37, 39, 40, 42, 43, 45, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 63, 66, 67, 68, 69, 71, 73, 74, 77, 78, 79, 80, 81, 84, 85, 86, 87, 90, 92, 93, 95, 97, 98, 99, 100, 102, 106, 108, 110, 111, 112, 113, 114, 115, 116, 118, 119, 120, 121, 122, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 136, 137, 138, 139, 140, 142, 143, 144, 145, 146, 147, 149, 151, 152, 153, 154, 155, 157, 158, 159, 161, 162, 164, 165, 166, 167, 168, 169, 170, 173, 174, 175, 176, 177, 178, 179, 180, 182, 183, 185, 186, 187, 188, 189, 191, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 204, 205, 207, 208, 209, 210, 212, 213, 214, 215, 216, 217, 219, 220, 221, 222, 223, 224, 227, 228, 229, 230, 231, 233, 234, 236, 237, 238, 239, 240, 241, 243, 245, 247, 248, 249, 250, 251, 252, 253, 255, 256, 258, 259, 260, 262, 263, 264, 265, 266, 267, 269, 271, 272, 275, 276, 279, 280, 281, 282, 283, 284, 285, 286, 288, 289, 291, 292, 295, 296, 303, 304, 305, 306, 307, 308, 309, 310, 312, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 328, 329, 330, 331, 332, 333, 335, 336, 337, 338, 340, 341, 342, 343, 345, 347, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 361, 362, 363, 364, 365, 368, 369, 371, 372, 373, 374, 377, 378, 379, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 401, 402, 403, 404, 407, 408, 409, 412, 414, 415, 416, 417, 419, 421, 422, 423, 424, 427, 428, 429, 431, 433, 434, 435, 436, 437, 438, 441, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 454, 455, 456, 457, 458, 459, 461, 462, 463, 464, 465, 466, 468, 469, 470, 471, 472, 474, 476, 478, 479, 480, 481, 482, 484, 485, 486, 488, 489, 490, 491, 493, 495, 496, 498, 499, 500, 501, 503, 505, 507, 509, 510, 511], "7": [0, 2, 3, 4, 5, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 21, 22, 23, 24, 26, 27, 28, 29, 31, 33, 34, 35, 36, 37, 38, 39, 41, 43, 44, 46, 47, 48, 49, 51, 52, 53, 54, 55, 56, 58, 60, 61, 62, 63, 64, 65, 66, 67, 68, 70, 71, 72, 73, 74, 75, 76, 77, 80, 81, 82, 84, 85, 86, 92, 93, 94, 95, 96, 97, 101, 102, 103, 104, 105, 107, 108, 109, 112, 113, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 132, 134, 135, 136, 137, 139, 141, 142, 143, 144, 145, 147, 148, 151, 152, 154, 155, 156, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 170, 171, 172, 173, 174, 175, 176, 177, 179, 181, 182, 184, 185, 186, 187, 188, 190, 191, 193, 194, 195, 199, 200, 201, 202, 204, 206, 208, 209, 212, 213, 215, 217, 219, 220, 221, 223, 224, 225, 226, 227, 228, 230, 231, 232, 234, 235, 237, 238, 239, 240, 241, 242, 244, 245, 250, 251, 252, 253, 255, 256, 257, 258, 259, 260, 261, 262, 263, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 279, 281, 282, 283, 285, 287, 288, 290, 291, 292, 294, 295, 296, 298, 299, 301, 302, 303, 304, 305, 306, 307, 308, 309, 311, 312, 315, 316, 317, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 331, 332, 333, 334, 338, 339, 341, 343, 344, 345, 346, 348, 349, 350, 351, 352, 353, 354, 355, 357, 360, 363, 364, 365, 367, 368, 369, 371, 372, 374, 375, 376, 378, 381, 382, 383, 384, 385, 386, 387, 389, 390, 391, 392, 394, 395, 396, 397, 398, 399, 400, 401, 402, 404, 405, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 422, 423, 424, 425, 426, 429, 430, 432, 435, 436, 437, 438, 439, 441, 442, 443, 444, 445, 448, 449, 450, 451, 452, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 469, 470, 471, 472, 473, 474, 477, 479, 480, 481, 482, 485, 486, 489, 490, 491, 492, 493, 494, 495, 496, 498, 499, 500, 501, 502, 503, 505, 506, 507, 508, 509, 510], "8": [1, 2, 3, 4, 6, 7, 9, 10, 11, 13, 14, 15, 16, 20, 21, 23, 24, 26, 27, 28, 29, 30, 31, 32, 34, 35, 36, 37, 39, 40, 41, 43, 44, 46, 48, 49, 50, 51, 52, 53, 54, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 70, 73, 74, 75, 76, 77, 78, 80, 81, 83, 85, 86, 87, 88, 90, 92, 93, 94, 95, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 108, 109, 110, 111, 113, 115, 116, 119, 120, 121, 122, 124, 125, 126, 127, 132, 133, 135, 136, 138, 139, 140, 141, 143, 144, 145, 146, 151, 154, 155, 157, 158, 159, 160, 161, 162, 163, 164, 166, 167, 169, 170, 171, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 186, 187, 189, 191, 193, 195, 197, 198, 199, 201, 202, 204, 206, 207, 208, 209, 210, 211, 212, 213, 215, 216, 217, 218, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 241, 242, 244, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 258, 260, 261, 262, 266, 267, 268, 270, 271, 272, 273, 274, 275, 276, 277, 280, 281, 283, 286, 287, 289, 290, 292, 293, 294, 296, 297, 299, 301, 302, 303, 304, 305, 307, 308, 309, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 328, 329, 330, 331, 333, 334, 335, 337, 338, 339, 340, 341, 343, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 368, 369, 370, 371, 373, 374, 375, 376, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 391, 394, 395, 397, 398, 399, 402, 403, 404, 405, 408, 410, 411, 412, 414, 415, 416, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 429, 431, 433, 434, 437, 439, 442, 443, 444, 446, 447, 448, 449, 450, 451, 455, 456, 457, 458, 461, 462, 465, 467, 468, 469, 470, 471, 477, 478, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 493, 494, 495, 496, 497, 498, 499, 500, 501, 505, 507, 508, 509, 510, 511], "9": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 16, 17, 18, 19, 20, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 42, 44, 45, 46, 48, 49, 50, 51, 52, 54, 55, 56, 58, 59, 61, 62, 63, 64, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 83, 84, 86, 88, 89, 90, 92, 94, 95, 96, 100, 101, 102, 103, 107, 109, 111, 113, 115, 117, 118, 120, 122, 124, 126, 127, 128, 129, 130, 132, 133, 135, 137, 138, 139, 140, 141, 142, 144, 145, 146, 147, 148, 149, 151, 152, 153, 154, 155, 157, 158, 159, 160, 161, 162, 163, 165, 166, 167, 168, 169, 171, 172, 173, 174, 175, 176, 178, 180, 182, 183, 184, 185, 186, 187, 189, 190, 191, 192, 194, 195, 200, 201, 203, 204, 205, 206, 208, 210, 211, 212, 213, 214, 215, 217, 219, 221, 222, 223, 224, 225, 227, 228, 230, 232, 235, 237, 238, 239, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 266, 267, 268, 269, 271, 272, 273, 274, 279, 281, 282, 283, 284, 285, 286, 287, 288, 293, 294, 295, 299, 300, 301, 302, 304, 305, 306, 307, 309, 312, 313, 316, 317, 318, 319, 320, 321, 325, 326, 327, 328, 329, 332, 333, 334, 335, 336, 337, 339, 340, 341, 342, 343, 346, 347, 348, 349, 352, 354, 355, 356, 357, 358, 359, 360, 361, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 376, 377, 378, 381, 382, 385, 388, 389, 390, 391, 392, 393, 395, 396, 397, 398, 399, 400, 403, 404, 405, 406, 408, 409, 410, 411, 412, 414, 415, 416, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 431, 432, 433, 434, 435, 436, 438, 439, 440, 442, 443, 444, 446, 449, 451, 453, 454, 455, 456, 457, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 470, 471, 472, 473, 474, 475, 476, 477, 478, 481, 483, 484, 486, 487, 488, 490, 491, 493, 494, 495, 496, 497, 498, 499, 500, 502, 503, 505, 506, 507, 508, 509, 510, 511], "10": [0, 1, 2, 3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 23, 24, 26, 27, 28, 29, 30, 31, 32, 33, 35, 37, 38, 41, 42, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 59, 60, 61, 63, 64, 65, 66, 68, 69, 71, 73, 75, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 91, 92, 93, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 111, 112, 113, 114, 115, 117, 119, 121, 122, 123, 125, 126, 129, 130, 131, 132, 133, 136, 137, 138, 139, 141, 142, 143, 146, 147, 148, 151, 152, 153, 154, 155, 156, 157, 158, 160, 161, 162, 163, 164, 165, 166, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 186, 188, 189, 190, 191, 193, 194, 195, 196, 197, 198, 199, 202, 203, 205, 206, 207, 208, 209, 211, 212, 213, 214, 215, 216, 217, 218, 220, 221, 222, 223, 227, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 251, 252, 253, 254, 257, 258, 260, 263, 264, 265, 266, 267, 268, 269, 270, 272, 273, 274, 275, 276, 278, 279, 280, 282, 283, 285, 290, 291, 292, 293, 294, 295, 296, 298, 299, 301, 302, 303, 305, 307, 308, 310, 311, 313, 314, 315, 317, 318, 319, 320, 322, 323, 324, 325, 326, 327, 328, 330, 331, 332, 333, 335, 336, 339, 340, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 358, 361, 362, 364, 365, 366, 367, 369, 370, 371, 373, 374, 375, 376, 377, 378, 379, 380, 381, 384, 386, 389, 391, 393, 396, 397, 398, 399, 400, 401, 402, 403, 406, 409, 410, 411, 413, 415, 419, 421, 422, 424, 425, 426, 427, 430, 431, 432, 434, 435, 437, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 453, 454, 457, 458, 459, 460, 461, 462, 463, 464, 465, 467, 468, 469, 472, 473, 474, 476, 477, 480, 482, 483, 484, 485, 487, 488, 489, 490, 492, 493, 494, 496, 497, 498, 499, 501, 502, 503, 504, 505, 506, 507, 508, 509, 511], "11": [0, 1, 2, 3, 4, 5, 7, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 21, 23, 24, 25, 28, 29, 31, 32, 33, 34, 35, 36, 37, 38, 39, 41, 43, 45, 46, 47, 48, 49, 50, 51, 53, 55, 56, 58, 59, 60, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 93, 94, 95, 96, 97, 98, 99, 100, 103, 104, 105, 106, 108, 109, 110, 111, 113, 114, 115, 117, 120, 121, 123, 124, 125, 126, 127, 128, 129, 130, 131, 133, 135, 137, 138, 139, 141, 142, 144, 146, 148, 150, 152, 153, 154, 156, 157, 158, 159, 160, 162, 163, 165, 166, 167, 168, 171, 172, 174, 175, 177, 178, 179, 180, 181, 182, 183, 185, 186, 187, 188, 189, 191, 192, 193, 194, 195, 196, 197, 199, 200, 201, 202, 203, 205, 206, 207, 208, 209, 210, 211, 214, 215, 216, 218, 219, 220, 221, 223, 224, 227, 229, 230, 231, 232, 233, 234, 235, 237, 239, 240, 242, 243, 244, 246, 247, 248, 250, 251, 253, 254, 255, 256, 257, 258, 260, 261, 263, 264, 268, 269, 270, 271, 272, 273, 275, 277, 278, 279, 281, 282, 283, 284, 286, 287, 288, 291, 292, 293, 294, 295, 296, 297, 300, 301, 303, 304, 305, 306, 308, 309, 310, 311, 312, 313, 318, 319, 320, 321, 322, 323, 324, 325, 328, 329, 330, 331, 332, 334, 335, 336, 337, 339, 340, 342, 343, 344, 345, 346, 348, 349, 350, 351, 352, 354, 356, 358, 359, 360, 362, 363, 364, 365, 366, 367, 369, 371, 373, 375, 376, 377, 378, 379, 380, 382, 383, 384, 385, 386, 387, 388, 389, 390, 392, 395, 397, 398, 399, 401, 402, 403, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 418, 419, 420, 422, 423, 425, 428, 429, 430, 431, 432, 433, 434, 436, 437, 438, 440, 442, 443, 444, 450, 451, 452, 453, 454, 455, 456, 460, 462, 463, 464, 468, 469, 470, 471, 472, 474, 475, 477, 479, 480, 481, 482, 483, 485, 486, 487, 488, 489, 491, 492, 494, 496, 498, 499, 500, 501, 502, 503, 504, 506, 507, 508, 509, 510, 511], "12": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 18, 19, 21, 22, 23, 24, 26, 27, 29, 30, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 46, 47, 48, 50, 51, 52, 53, 54, 55, 60, 61, 62, 63, 64, 66, 67, 69, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 90, 91, 92, 93, 94, 95, 96, 97, 98, 103, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 116, 117, 119, 120, 121, 122, 123, 125, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 143, 144, 145, 146, 147, 148, 150, 151, 152, 153, 154, 155, 157, 160, 161, 162, 163, 165, 167, 168, 169, 170, 172, 173, 174, 175, 177, 178, 180, 181, 182, 185, 187, 188, 189, 190, 191, 192, 195, 196, 197, 198, 202, 206, 208, 209, 211, 213, 215, 216, 217, 218, 219, 220, 221, 223, 224, 225, 226, 227, 228, 230, 231, 233, 234, 235, 236, 238, 239, 240, 241, 242, 243, 244, 246, 247, 248, 249, 251, 252, 253, 254, 256, 257, 258, 259, 261, 262, 264, 265, 266, 267, 268, 269, 271, 272, 273, 274, 275, 277, 278, 279, 280, 281, 283, 284, 286, 287, 288, 289, 290, 291, 292, 294, 296, 297, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 312, 313, 314, 315, 316, 317, 318, 319, 322, 323, 324, 326, 327, 329, 331, 332, 334, 336, 338, 340, 341, 342, 343, 344, 345, 346, 347, 349, 350, 351, 352, 353, 355, 356, 357, 358, 359, 360, 363, 366, 367, 368, 369, 370, 372, 374, 376, 377, 378, 379, 380, 381, 383, 386, 388, 389, 390, 391, 392, 395, 396, 397, 399, 400, 401, 402, 404, 406, 408, 409, 410, 412, 413, 415, 416, 417, 418, 419, 421, 422, 425, 426, 429, 430, 432, 433, 434, 436, 438, 440, 442, 443, 444, 445, 446, 447, 448, 450, 452, 453, 454, 455, 456, 457, 459, 460, 462, 463, 466, 467, 468, 470, 471, 472, 475, 476, 477, 479, 481, 483, 484, 487, 488, 489, 490, 491, 493, 494, 495, 496, 497, 498, 499, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511], "13": [0, 2, 3, 5, 6, 7, 8, 9, 10, 11, 13, 14, 15, 16, 17, 19, 21, 22, 24, 25, 26, 27, 29, 31, 32, 33, 34, 35, 36, 40, 41, 42, 43, 44, 45, 46, 47, 48, 50, 51, 52, 53, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 67, 70, 71, 72, 74, 76, 77, 78, 79, 81, 82, 83, 84, 85, 87, 90, 91, 92, 93, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 112, 113, 114, 115, 116, 118, 121, 122, 123, 124, 127, 128, 129, 130, 131, 134, 136, 137, 138, 139, 140, 141, 142, 144, 145, 146, 147, 148, 149, 151, 154, 155, 156, 157, 159, 160, 161, 167, 168, 169, 171, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 187, 189, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 205, 206, 208, 209, 211, 212, 213, 215, 219, 220, 221, 222, 224, 225, 227, 228, 230, 232, 233, 234, 235, 237, 238, 239, 240, 241, 242, 243, 244, 246, 247, 248, 250, 251, 252, 253, 254, 255, 257, 259, 261, 263, 264, 265, 266, 267, 268, 269, 270, 272, 273, 274, 276, 277, 278, 279, 280, 281, 282, 283, 286, 287, 288, 290, 291, 292, 293, 296, 297, 301, 302, 303, 304, 305, 306, 307, 309, 310, 311, 312, 313, 316, 317, 318, 320, 321, 322, 323, 324, 325, 326, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 342, 343, 344, 346, 347, 348, 349, 350, 351, 352, 355, 356, 357, 359, 361, 362, 363, 364, 365, 366, 367, 370, 371, 372, 373, 374, 376, 377, 378, 379, 380, 381, 382, 384, 385, 387, 389, 390, 391, 392, 394, 395, 397, 398, 399, 400, 401, 402, 403, 404, 406, 409, 411, 412, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 426, 427, 428, 429, 431, 433, 434, 435, 436, 437, 438, 441, 443, 444, 445, 446, 449, 450, 451, 453, 454, 455, 457, 458, 459, 461, 462, 463, 467, 469, 470, 472, 473, 474, 475, 477, 478, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 491, 493, 495, 496, 497, 499, 500, 501, 503, 504, 506, 508, 510, 511], "14": [0, 1, 3, 4, 5, 6, 8, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 30, 32, 33, 34, 35, 36, 37, 38, 39, 41, 42, 43, 44, 45, 46, 47, 48, 50, 53, 54, 55, 56, 57, 59, 60, 63, 64, 65, 67, 68, 69, 70, 71, 73, 74, 76, 77, 78, 79, 80, 82, 83, 84, 85, 86, 88, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 102, 103, 104, 105, 106, 107, 109, 110, 113, 115, 117, 118, 119, 123, 124, 125, 126, 127, 130, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 147, 149, 150, 153, 154, 156, 157, 159, 160, 161, 162, 163, 164, 166, 167, 169, 170, 171, 172, 173, 175, 177, 181, 182, 183, 185, 186, 187, 188, 190, 191, 192, 193, 194, 195, 196, 197, 199, 200, 201, 202, 203, 204, 206, 207, 208, 209, 210, 211, 212, 213, 215, 216, 217, 218, 219, 220, 223, 226, 227, 229, 231, 233, 234, 235, 236, 238, 239, 240, 242, 243, 245, 246, 247, 249, 250, 253, 254, 255, 256, 258, 259, 260, 262, 263, 264, 267, 268, 269, 270, 272, 273, 274, 275, 276, 277, 279, 280, 281, 283, 284, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 310, 311, 315, 316, 318, 319, 320, 321, 322, 323, 324, 326, 327, 328, 329, 330, 332, 333, 334, 335, 337, 340, 341, 342, 343, 344, 345, 346, 348, 349, 350, 351, 353, 354, 355, 356, 357, 358, 361, 364, 365, 366, 367, 368, 369, 370, 372, 373, 374, 376, 377, 379, 380, 381, 383, 384, 385, 386, 387, 388, 389, 390, 391, 394, 396, 397, 398, 400, 401, 402, 403, 404, 405, 406, 408, 409, 410, 411, 412, 413, 414, 415, 417, 418, 419, 420, 421, 423, 424, 425, 426, 427, 428, 429, 431, 432, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 446, 447, 448, 450, 451, 453, 454, 455, 456, 457, 459, 461, 462, 463, 465, 467, 468, 469, 470, 471, 473, 474, 476, 478, 479, 481, 484, 485, 486, 487, 489, 491, 496, 497, 498, 500, 502, 503, 504, 505, 506, 507, 509], "15": [0, 2, 3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 20, 23, 25, 26, 27, 28, 30, 31, 32, 34, 36, 37, 39, 40, 41, 42, 43, 45, 46, 49, 50, 51, 52, 53, 56, 57, 58, 59, 61, 63, 64, 65, 66, 67, 69, 70, 71, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 84, 85, 86, 89, 90, 92, 93, 95, 96, 97, 98, 99, 100, 101, 102, 104, 105, 106, 108, 109, 110, 111, 112, 114, 115, 116, 117, 118, 119, 120, 121, 122, 124, 125, 126, 127, 128, 129, 130, 131, 132, 134, 135, 136, 137, 138, 140, 143, 144, 145, 146, 147, 149, 150, 151, 152, 154, 155, 156, 157, 158, 160, 161, 162, 163, 164, 165, 166, 168, 169, 171, 172, 175, 176, 177, 178, 179, 180, 182, 184, 185, 186, 187, 189, 190, 191, 192, 193, 194, 195, 197, 198, 199, 201, 202, 205, 206, 207, 209, 210, 211, 212, 213, 214, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 234, 236, 237, 239, 241, 242, 243, 244, 245, 246, 250, 251, 252, 255, 256, 257, 259, 260, 261, 264, 265, 266, 268, 270, 271, 273, 275, 277, 279, 280, 281, 283, 285, 287, 288, 289, 291, 292, 293, 294, 295, 296, 297, 300, 301, 302, 304, 306, 308, 309, 311, 313, 314, 315, 316, 317, 318, 319, 320, 321, 323, 324, 325, 326, 327, 329, 333, 334, 335, 336, 339, 340, 343, 344, 345, 346, 347, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 363, 364, 365, 367, 368, 369, 373, 374, 375, 377, 378, 379, 380, 381, 383, 387, 388, 389, 390, 392, 393, 394, 395, 396, 397, 399, 401, 402, 404, 406, 407, 408, 409, 410, 412, 413, 414, 415, 416, 417, 419, 420, 421, 422, 423, 426, 427, 428, 429, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 442, 443, 444, 447, 449, 450, 451, 452, 453, 454, 455, 458, 459, 460, 461, 465, 466, 467, 469, 471, 472, 473, 475, 476, 479, 480, 481, 482, 483, 484, 485, 486, 487, 489, 490, 491, 492, 494, 495, 496, 498, 499, 500, 501, 502, 503, 505, 506, 508, 509, 510, 511], "16": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 15, 16, 17, 18, 19, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 37, 38, 39, 40, 42, 43, 44, 45, 47, 49, 50, 51, 52, 53, 54, 58, 61, 62, 63, 64, 65, 67, 69, 70, 72, 73, 74, 75, 77, 79, 80, 82, 83, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 96, 97, 98, 99, 101, 104, 106, 107, 108, 109, 112, 113, 115, 116, 118, 119, 120, 121, 122, 123, 124, 127, 129, 130, 133, 135, 137, 138, 140, 142, 143, 144, 146, 147, 148, 149, 150, 151, 152, 153, 155, 156, 157, 158, 160, 162, 164, 165, 166, 167, 168, 169, 171, 172, 173, 174, 175, 176, 178, 179, 180, 181, 182, 183, 185, 187, 188, 189, 191, 192, 193, 194, 195, 196, 197, 198, 199, 201, 203, 204, 206, 207, 208, 210, 211, 212, 213, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 231, 233, 236, 237, 238, 239, 240, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 254, 255, 258, 260, 261, 262, 263, 265, 266, 267, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 281, 282, 283, 285, 286, 287, 288, 290, 292, 293, 294, 295, 296, 297, 298, 299, 300, 302, 303, 304, 306, 309, 310, 311, 312, 313, 314, 315, 316, 318, 319, 320, 322, 323, 324, 325, 326, 328, 329, 331, 333, 334, 335, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 351, 353, 355, 356, 357, 358, 360, 362, 363, 365, 368, 369, 370, 372, 374, 376, 377, 378, 380, 381, 385, 386, 387, 388, 391, 392, 393, 394, 395, 396, 397, 398, 400, 401, 402, 403, 405, 406, 407, 409, 410, 411, 413, 414, 415, 417, 418, 419, 421, 422, 423, 424, 425, 427, 428, 429, 432, 434, 437, 438, 439, 440, 441, 442, 444, 445, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 459, 460, 463, 464, 465, 466, 467, 468, 470, 471, 473, 474, 475, 476, 477, 478, 480, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 495, 500, 501, 503, 504, 505, 507, 508, 509], "17": [0, 3, 6, 7, 9, 10, 12, 13, 14, 16, 17, 18, 20, 21, 22, 23, 25, 27, 29, 31, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 61, 62, 63, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 90, 91, 92, 93, 96, 97, 99, 101, 102, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 116, 117, 118, 120, 122, 123, 124, 125, 127, 129, 131, 132, 133, 134, 136, 137, 138, 140, 141, 143, 144, 145, 146, 147, 148, 151, 152, 154, 156, 159, 160, 163, 164, 165, 166, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 180, 182, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 196, 197, 198, 199, 201, 203, 204, 205, 207, 208, 209, 210, 211, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 231, 232, 234, 235, 236, 237, 238, 239, 240, 242, 243, 244, 245, 246, 248, 249, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 263, 264, 265, 266, 267, 268, 270, 271, 272, 273, 275, 276, 277, 278, 279, 281, 282, 283, 284, 285, 286, 288, 291, 293, 294, 295, 296, 299, 300, 301, 302, 303, 304, 305, 306, 307, 309, 310, 312, 314, 315, 319, 321, 323, 324, 325, 327, 328, 329, 331, 332, 333, 334, 335, 336, 338, 339, 340, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 368, 371, 372, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 385, 386, 387, 389, 391, 392, 394, 395, 397, 398, 401, 402, 403, 404, 405, 406, 407, 409, 410, 411, 412, 413, 414, 415, 418, 419, 420, 422, 423, 425, 426, 429, 430, 431, 432, 434, 437, 440, 442, 443, 444, 446, 448, 449, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 465, 466, 467, 468, 469, 474, 475, 477, 480, 482, 484, 485, 486, 487, 488, 490, 494, 495, 496, 497, 498, 499, 500, 501, 502, 504, 505, 506, 508, 509, 511], "18": [1, 3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 17, 18, 19, 21, 22, 24, 25, 26, 28, 29, 32, 33, 34, 36, 37, 38, 39, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 53, 55, 56, 57, 58, 60, 62, 63, 65, 66, 67, 68, 69, 70, 72, 73, 75, 76, 78, 79, 80, 81, 82, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 95, 96, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 125, 126, 127, 128, 131, 132, 133, 137, 139, 140, 141, 142, 143, 144, 145, 150, 151, 152, 153, 154, 156, 157, 160, 161, 164, 165, 166, 167, 168, 169, 170, 172, 173, 174, 176, 178, 179, 180, 182, 183, 184, 185, 186, 187, 189, 190, 193, 194, 196, 197, 198, 199, 200, 201, 203, 204, 206, 207, 208, 211, 212, 213, 214, 216, 217, 218, 219, 220, 221, 222, 223, 224, 226, 227, 229, 231, 232, 233, 234, 235, 236, 237, 238, 240, 241, 242, 244, 246, 248, 249, 250, 251, 252, 255, 256, 257, 258, 259, 260, 261, 264, 265, 266, 268, 270, 272, 274, 275, 276, 277, 278, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 302, 304, 305, 306, 307, 308, 309, 310, 311, 312, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 336, 337, 338, 340, 341, 343, 344, 345, 347, 348, 349, 350, 351, 352, 353, 354, 357, 358, 359, 361, 362, 363, 366, 368, 369, 370, 373, 374, 376, 378, 379, 380, 381, 384, 385, 386, 387, 388, 390, 391, 392, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 405, 407, 408, 409, 410, 411, 413, 414, 415, 416, 417, 418, 419, 422, 423, 425, 426, 427, 428, 430, 432, 433, 434, 435, 436, 437, 438, 441, 442, 443, 444, 447, 450, 451, 453, 456, 457, 460, 461, 463, 464, 467, 468, 470, 471, 472, 473, 475, 477, 478, 479, 480, 482, 483, 484, 485, 486, 487, 489, 492, 493, 494, 496, 497, 498, 500, 501, 503, 504, 505, 506, 507, 509, 510, 511], "19": [1, 3, 5, 6, 7, 9, 10, 11, 13, 14, 15, 16, 18, 19, 20, 21, 22, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 36, 37, 38, 40, 41, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 71, 73, 74, 75, 77, 78, 79, 80, 81, 82, 85, 87, 88, 90, 91, 92, 93, 94, 96, 97, 98, 99, 100, 101, 102, 103, 104, 106, 107, 108, 110, 111, 112, 113, 117, 118, 119, 121, 122, 123, 124, 126, 127, 129, 130, 131, 132, 133, 134, 135, 136, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 152, 153, 154, 155, 156, 157, 158, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 177, 178, 179, 181, 182, 183, 184, 185, 187, 188, 189, 190, 192, 193, 194, 195, 196, 197, 198, 199, 202, 203, 204, 205, 207, 208, 209, 210, 212, 213, 215, 216, 217, 218, 220, 221, 222, 223, 225, 226, 227, 229, 231, 233, 234, 238, 241, 242, 246, 247, 248, 249, 250, 253, 254, 255, 257, 258, 259, 260, 262, 263, 264, 265, 269, 273, 275, 277, 279, 280, 281, 282, 285, 286, 287, 288, 289, 290, 291, 292, 294, 296, 297, 298, 299, 300, 302, 304, 305, 306, 307, 308, 309, 310, 312, 313, 314, 315, 316, 317, 318, 320, 321, 322, 325, 327, 328, 329, 330, 331, 332, 334, 335, 337, 338, 339, 341, 342, 343, 347, 348, 349, 350, 353, 354, 356, 357, 359, 360, 361, 362, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 376, 377, 378, 380, 382, 383, 384, 385, 387, 388, 389, 391, 392, 395, 396, 397, 399, 401, 403, 405, 406, 407, 408, 409, 410, 411, 412, 414, 415, 416, 417, 418, 419, 420, 421, 423, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 437, 438, 440, 441, 442, 445, 446, 447, 448, 449, 450, 452, 453, 454, 456, 457, 461, 463, 464, 465, 468, 469, 470, 471, 472, 473, 479, 480, 482, 483, 484, 485, 487, 488, 489, 490, 491, 495, 497, 498, 499, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510], "20": [0, 2, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 21, 23, 24, 25, 26, 27, 28, 29, 30, 32, 34, 35, 36, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 63, 64, 65, 66, 67, 68, 69, 71, 72, 73, 75, 76, 77, 78, 79, 80, 81, 82, 83, 85, 86, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 108, 109, 110, 112, 114, 117, 119, 121, 122, 123, 124, 125, 127, 128, 129, 130, 131, 132, 133, 134, 136, 137, 138, 139, 140, 141, 142, 143, 145, 147, 149, 151, 153, 154, 155, 156, 157, 159, 160, 161, 162, 163, 164, 165, 167, 169, 170, 172, 173, 174, 175, 176, 177, 178, 180, 181, 182, 183, 184, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 202, 203, 204, 205, 207, 208, 209, 210, 212, 213, 214, 215, 216, 217, 218, 219, 222, 223, 225, 226, 227, 228, 229, 230, 231, 235, 236, 237, 239, 240, 241, 244, 245, 247, 248, 249, 251, 252, 253, 255, 256, 258, 260, 262, 263, 265, 269, 271, 272, 273, 274, 275, 276, 277, 278, 279, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 295, 296, 297, 298, 299, 303, 305, 307, 308, 310, 311, 312, 313, 314, 315, 317, 318, 319, 320, 321, 322, 323, 325, 326, 327, 328, 329, 330, 331, 332, 334, 335, 336, 338, 339, 340, 343, 344, 345, 346, 347, 348, 349, 351, 352, 353, 355, 356, 360, 362, 363, 364, 366, 367, 369, 373, 374, 375, 379, 383, 385, 386, 387, 388, 390, 391, 394, 395, 396, 397, 399, 401, 402, 403, 404, 406, 407, 408, 409, 410, 412, 413, 414, 416, 417, 418, 419, 420, 422, 423, 426, 427, 428, 430, 431, 432, 433, 434, 435, 436, 437, 440, 441, 442, 445, 447, 448, 449, 450, 451, 453, 455, 456, 457, 458, 459, 461, 462, 463, 464, 465, 466, 467, 468, 469, 475, 477, 478, 479, 480, 482, 483, 484, 485, 486, 487, 488, 490, 493, 494, 496, 497, 498, 501, 502, 503, 504, 505, 506, 507, 508, 510, 511], "21": [0, 1, 2, 3, 4, 5, 6, 10, 11, 12, 14, 15, 16, 17, 18, 19, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 47, 48, 49, 53, 54, 55, 56, 57, 58, 59, 61, 62, 63, 64, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 83, 84, 85, 86, 87, 88, 91, 92, 93, 94, 95, 96, 98, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 111, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 125, 126, 128, 129, 130, 131, 134, 135, 136, 138, 139, 140, 142, 144, 145, 146, 147, 148, 150, 152, 154, 155, 156, 158, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 177, 178, 180, 182, 183, 188, 189, 192, 194, 198, 199, 200, 201, 203, 204, 206, 208, 210, 211, 212, 213, 214, 215, 216, 218, 219, 220, 221, 223, 224, 225, 226, 227, 229, 231, 232, 233, 234, 236, 237, 239, 240, 242, 243, 245, 246, 247, 248, 250, 251, 252, 253, 255, 256, 257, 258, 259, 261, 264, 265, 266, 267, 268, 269, 270, 271, 275, 276, 277, 279, 280, 281, 282, 283, 284, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 298, 299, 301, 302, 304, 305, 307, 308, 309, 311, 312, 314, 316, 320, 321, 323, 324, 325, 326, 327, 329, 330, 331, 332, 333, 334, 337, 338, 339, 340, 342, 343, 345, 347, 348, 350, 351, 352, 354, 357, 358, 359, 360, 362, 363, 365, 369, 370, 371, 372, 373, 376, 377, 378, 379, 380, 382, 383, 384, 386, 387, 388, 391, 392, 393, 394, 396, 398, 400, 401, 404, 405, 407, 408, 409, 411, 412, 413, 414, 416, 417, 418, 419, 420, 421, 422, 424, 425, 426, 427, 429, 431, 432, 433, 434, 435, 436, 438, 439, 440, 441, 442, 443, 445, 446, 447, 448, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 461, 462, 463, 464, 465, 466, 467, 469, 470, 471, 472, 473, 474, 476, 477, 478, 479, 480, 481, 483, 484, 485, 488, 490, 492, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 508, 510], "22": [0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 28, 29, 30, 31, 32, 33, 35, 36, 39, 40, 41, 42, 43, 44, 45, 46, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 62, 63, 64, 65, 66, 67, 69, 70, 73, 74, 75, 76, 77, 78, 79, 81, 82, 83, 85, 86, 91, 92, 93, 95, 96, 97, 99, 100, 101, 102, 104, 105, 106, 107, 109, 110, 111, 112, 113, 114, 115, 116, 119, 120, 121, 122, 123, 124, 125, 126, 129, 130, 133, 134, 136, 137, 138, 139, 140, 141, 142, 143, 148, 149, 150, 151, 152, 154, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 168, 169, 171, 173, 174, 175, 176, 177, 178, 179, 180, 181, 183, 186, 187, 188, 189, 190, 192, 193, 195, 196, 197, 200, 201, 203, 204, 205, 206, 208, 209, 210, 212, 215, 216, 217, 218, 219, 221, 223, 224, 225, 228, 229, 230, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 245, 246, 247, 249, 250, 252, 253, 254, 255, 256, 260, 261, 262, 264, 265, 267, 269, 270, 273, 275, 276, 279, 281, 283, 284, 285, 287, 288, 290, 291, 292, 293, 294, 295, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 311, 312, 313, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 332, 334, 335, 338, 339, 340, 343, 345, 346, 347, 348, 349, 352, 357, 358, 359, 361, 362, 364, 366, 368, 369, 370, 373, 374, 375, 377, 378, 379, 381, 383, 384, 385, 386, 387, 389, 390, 391, 392, 394, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 408, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 426, 427, 428, 429, 430, 431, 432, 434, 435, 436, 437, 440, 441, 442, 444, 445, 446, 449, 450, 452, 453, 456, 457, 458, 460, 461, 462, 463, 465, 466, 467, 468, 469, 470, 471, 472, 473, 476, 479, 481, 482, 484, 485, 487, 489, 490, 491, 492, 493, 494, 495, 496, 498, 499, 500, 501, 502, 503, 504, 506, 507, 508, 509, 511], "23": [0, 1, 3, 4, 6, 7, 9, 10, 11, 12, 13, 14, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 31, 32, 33, 34, 36, 37, 39, 41, 42, 43, 44, 45, 46, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 62, 63, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 78, 79, 81, 82, 83, 84, 85, 91, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 107, 108, 110, 111, 112, 113, 114, 115, 117, 118, 119, 120, 121, 123, 124, 125, 126, 127, 128, 129, 131, 132, 135, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 150, 151, 152, 153, 155, 156, 158, 159, 160, 161, 162, 163, 164, 166, 167, 168, 169, 170, 172, 173, 174, 176, 177, 178, 179, 180, 181, 182, 183, 185, 186, 188, 189, 191, 193, 194, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 208, 209, 210, 211, 212, 214, 215, 217, 219, 220, 221, 222, 223, 224, 225, 226, 227, 231, 233, 234, 235, 236, 237, 238, 239, 240, 242, 244, 245, 246, 247, 249, 250, 251, 252, 255, 256, 257, 259, 260, 262, 263, 265, 266, 267, 268, 269, 271, 272, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 288, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 303, 304, 306, 308, 310, 311, 313, 315, 316, 317, 321, 323, 325, 326, 327, 328, 331, 332, 334, 335, 336, 337, 338, 339, 340, 341, 342, 344, 345, 346, 347, 349, 350, 351, 353, 354, 355, 356, 357, 358, 361, 363, 366, 367, 368, 370, 371, 372, 373, 375, 376, 377, 379, 380, 381, 382, 383, 384, 385, 386, 387, 389, 390, 391, 393, 394, 395, 397, 398, 399, 401, 402, 404, 405, 407, 409, 410, 411, 412, 413, 414, 416, 417, 419, 420, 421, 424, 425, 426, 427, 429, 430, 431, 432, 433, 434, 437, 438, 439, 440, 443, 447, 449, 450, 451, 452, 453, 455, 456, 457, 458, 459, 461, 463, 464, 465, 467, 468, 469, 470, 471, 472, 473, 476, 477, 478, 479, 480, 482, 484, 485, 486, 488, 489, 490, 492, 493, 495, 496, 497, 498, 499, 500, 501, 505, 506, 507, 508, 509, 511], "24": [0, 1, 2, 3, 4, 5, 6, 9, 10, 11, 12, 13, 14, 15, 20, 23, 26, 27, 28, 29, 30, 31, 32, 34, 35, 36, 37, 39, 40, 41, 43, 44, 45, 46, 48, 49, 50, 51, 52, 53, 54, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 70, 73, 74, 75, 76, 77, 78, 80, 81, 83, 85, 86, 87, 88, 89, 90, 92, 93, 94, 95, 97, 98, 99, 100, 101, 102, 104, 105, 106, 108, 109, 110, 111, 113, 115, 116, 117, 119, 121, 122, 124, 125, 126, 127, 131, 132, 133, 134, 135, 136, 138, 140, 142, 143, 144, 145, 146, 148, 151, 154, 155, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 169, 170, 171, 173, 174, 175, 176, 177, 178, 179, 181, 182, 183, 184, 186, 187, 189, 191, 193, 194, 195, 197, 198, 199, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 223, 224, 225, 227, 228, 229, 230, 231, 233, 234, 236, 237, 238, 239, 241, 242, 244, 247, 249, 251, 252, 253, 254, 255, 256, 258, 260, 261, 262, 265, 266, 267, 268, 269, 270, 272, 273, 275, 276, 277, 280, 281, 283, 287, 289, 290, 292, 293, 294, 295, 296, 297, 299, 300, 301, 303, 304, 306, 307, 308, 309, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 327, 328, 329, 330, 331, 333, 334, 335, 337, 338, 339, 340, 341, 343, 344, 345, 346, 347, 348, 349, 350, 351, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 369, 370, 371, 373, 374, 375, 376, 377, 378, 380, 381, 382, 383, 384, 386, 387, 389, 390, 391, 393, 394, 395, 397, 398, 399, 402, 403, 404, 405, 406, 408, 409, 410, 412, 413, 415, 418, 419, 420, 421, 422, 424, 425, 426, 427, 429, 430, 431, 434, 439, 442, 443, 444, 446, 447, 448, 449, 451, 452, 455, 456, 457, 458, 459, 461, 462, 463, 465, 467, 468, 469, 470, 471, 477, 478, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 493, 496, 497, 498, 499, 500, 501, 503, 505, 507, 508, 509, 510, 511], "25": [0, 1, 2, 3, 4, 5, 6, 8, 10, 11, 12, 13, 14, 17, 18, 19, 20, 23, 24, 25, 26, 27, 29, 30, 31, 32, 33, 34, 35, 36, 37, 39, 40, 42, 43, 44, 45, 46, 48, 49, 50, 52, 54, 55, 56, 58, 59, 60, 62, 63, 64, 67, 68, 69, 70, 71, 72, 73, 75, 76, 77, 78, 79, 83, 84, 85, 86, 88, 89, 90, 92, 93, 94, 95, 96, 97, 100, 101, 102, 103, 108, 109, 111, 113, 114, 115, 116, 117, 118, 120, 122, 125, 126, 127, 128, 129, 130, 132, 133, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 148, 149, 151, 152, 153, 154, 155, 157, 158, 159, 160, 161, 162, 163, 164, 166, 167, 168, 169, 171, 172, 173, 174, 175, 176, 178, 180, 183, 184, 185, 186, 187, 189, 190, 191, 192, 193, 194, 195, 199, 200, 201, 204, 205, 206, 208, 209, 210, 211, 212, 213, 214, 215, 217, 218, 219, 220, 221, 222, 225, 228, 229, 232, 235, 236, 238, 239, 241, 242, 243, 244, 245, 246, 247, 249, 250, 251, 252, 253, 254, 255, 256, 258, 259, 260, 262, 263, 264, 266, 267, 268, 269, 270, 272, 273, 274, 279, 280, 281, 282, 283, 284, 285, 288, 291, 293, 294, 295, 296, 297, 299, 300, 301, 302, 303, 304, 305, 306, 307, 309, 310, 312, 313, 316, 317, 318, 319, 321, 323, 325, 326, 327, 328, 329, 331, 332, 333, 335, 336, 337, 339, 340, 341, 343, 346, 347, 348, 349, 352, 353, 354, 356, 357, 358, 359, 360, 361, 363, 364, 365, 366, 367, 368, 369, 371, 372, 373, 376, 377, 378, 379, 381, 382, 384, 385, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 403, 404, 405, 406, 407, 408, 410, 411, 412, 414, 415, 416, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 438, 439, 440, 442, 443, 445, 446, 447, 449, 450, 451, 453, 454, 455, 456, 457, 459, 460, 463, 464, 465, 466, 467, 470, 471, 472, 473, 474, 475, 476, 478, 481, 483, 484, 486, 487, 488, 490, 491, 493, 494, 497, 498, 499, 500, 502, 505, 506, 507, 508, 509, 510, 511], "26": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 16, 17, 18, 20, 23, 24, 26, 27, 28, 29, 30, 31, 32, 34, 35, 36, 38, 42, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 59, 60, 61, 63, 64, 65, 66, 67, 69, 70, 71, 73, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 91, 92, 94, 95, 96, 97, 98, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 113, 114, 115, 117, 119, 120, 121, 122, 123, 125, 126, 129, 130, 132, 133, 134, 136, 137, 138, 139, 140, 141, 142, 143, 146, 147, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 170, 172, 173, 174, 175, 176, 177, 178, 179, 180, 182, 184, 185, 188, 191, 193, 194, 195, 196, 197, 199, 202, 203, 205, 206, 207, 208, 209, 211, 212, 213, 214, 215, 216, 217, 218, 220, 223, 224, 227, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 242, 243, 244, 245, 246, 247, 248, 250, 251, 253, 254, 257, 258, 259, 260, 263, 264, 265, 266, 267, 268, 269, 270, 272, 273, 274, 275, 277, 278, 279, 280, 282, 284, 285, 288, 290, 291, 292, 293, 294, 296, 298, 299, 300, 301, 302, 303, 305, 306, 307, 308, 309, 310, 311, 313, 314, 315, 317, 319, 320, 321, 322, 324, 325, 326, 327, 330, 332, 333, 334, 335, 336, 337, 339, 340, 341, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 361, 362, 365, 366, 367, 369, 370, 371, 373, 374, 375, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 390, 391, 393, 394, 396, 397, 398, 399, 400, 401, 402, 403, 404, 406, 408, 409, 410, 411, 412, 413, 415, 417, 419, 420, 421, 424, 425, 427, 430, 431, 432, 433, 434, 435, 437, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 453, 454, 455, 457, 458, 459, 461, 462, 463, 464, 466, 468, 469, 471, 472, 474, 475, 476, 477, 480, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 501, 502, 503, 506, 507, 508, 509, 511], "27": [0, 1, 2, 3, 4, 5, 9, 11, 12, 13, 14, 15, 16, 17, 18, 20, 21, 23, 24, 28, 29, 31, 32, 33, 34, 35, 36, 37, 38, 39, 41, 43, 45, 46, 47, 48, 49, 50, 51, 53, 55, 56, 58, 59, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 93, 94, 95, 96, 97, 98, 99, 100, 103, 105, 108, 109, 110, 111, 113, 114, 115, 117, 120, 121, 122, 123, 124, 125, 126, 127, 129, 131, 133, 135, 137, 138, 139, 141, 142, 144, 146, 148, 150, 151, 152, 153, 154, 156, 157, 158, 159, 162, 163, 165, 167, 168, 169, 171, 172, 174, 175, 177, 178, 179, 181, 182, 183, 184, 185, 186, 187, 188, 189, 191, 192, 193, 194, 195, 196, 197, 199, 200, 201, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 218, 220, 221, 222, 223, 224, 225, 226, 227, 229, 230, 231, 232, 233, 234, 235, 237, 239, 240, 242, 243, 244, 246, 247, 248, 250, 251, 252, 253, 254, 255, 256, 257, 258, 260, 261, 262, 263, 264, 268, 269, 270, 271, 273, 274, 275, 277, 278, 279, 281, 282, 283, 286, 287, 288, 291, 292, 293, 294, 295, 296, 297, 300, 301, 303, 304, 305, 306, 308, 309, 310, 311, 312, 315, 318, 319, 320, 321, 322, 323, 324, 325, 327, 329, 330, 331, 332, 334, 335, 336, 337, 339, 340, 341, 342, 343, 344, 345, 346, 347, 349, 350, 352, 354, 357, 358, 359, 360, 361, 363, 364, 365, 367, 368, 369, 371, 373, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 392, 395, 397, 398, 399, 401, 403, 404, 406, 407, 408, 409, 410, 412, 413, 414, 415, 416, 418, 419, 420, 421, 422, 423, 424, 425, 428, 429, 430, 432, 433, 434, 436, 437, 438, 439, 440, 442, 443, 444, 448, 451, 452, 453, 454, 455, 456, 460, 462, 463, 464, 468, 469, 470, 471, 472, 474, 475, 477, 478, 479, 480, 482, 483, 484, 486, 489, 491, 492, 494, 496, 498, 499, 500, 501, 502, 503, 504, 506, 507, 508, 509, 510, 511], "28": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 18, 19, 21, 22, 23, 24, 26, 27, 28, 29, 30, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 47, 48, 50, 51, 52, 53, 55, 60, 61, 62, 63, 64, 65, 66, 67, 69, 70, 71, 73, 74, 75, 76, 77, 78, 80, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 103, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 116, 117, 119, 120, 121, 122, 123, 125, 127, 130, 132, 133, 134, 135, 136, 137, 139, 140, 141, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 158, 160, 161, 162, 163, 165, 167, 168, 169, 170, 172, 173, 174, 175, 177, 178, 180, 181, 182, 185, 187, 188, 189, 190, 191, 192, 196, 197, 198, 200, 201, 202, 205, 206, 208, 209, 211, 215, 216, 217, 218, 219, 220, 221, 223, 224, 226, 227, 228, 230, 231, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 246, 247, 248, 249, 251, 252, 253, 254, 256, 257, 258, 259, 261, 262, 264, 265, 266, 267, 268, 269, 271, 272, 273, 274, 275, 277, 278, 280, 281, 282, 284, 285, 286, 287, 288, 289, 290, 291, 292, 294, 295, 296, 297, 299, 301, 302, 303, 304, 305, 306, 307, 312, 313, 314, 315, 316, 317, 318, 319, 322, 323, 324, 325, 326, 327, 331, 332, 334, 335, 336, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 349, 350, 351, 352, 353, 355, 356, 357, 360, 363, 366, 367, 369, 370, 372, 374, 377, 378, 379, 380, 381, 386, 387, 388, 389, 390, 391, 392, 395, 396, 397, 399, 400, 401, 402, 404, 406, 407, 408, 409, 410, 412, 413, 414, 415, 416, 417, 418, 419, 421, 422, 423, 425, 426, 429, 430, 432, 433, 434, 436, 438, 440, 442, 443, 444, 445, 446, 447, 448, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 465, 466, 467, 468, 469, 470, 471, 472, 473, 475, 476, 477, 479, 480, 481, 483, 484, 488, 489, 491, 492, 493, 494, 495, 497, 498, 499, 501, 502, 503, 505, 506, 507, 508, 509, 510, 511], "29": [0, 2, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14, 15, 16, 17, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 31, 32, 33, 34, 37, 38, 40, 41, 42, 44, 45, 46, 47, 48, 50, 51, 52, 53, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 69, 70, 71, 72, 74, 76, 77, 78, 79, 81, 82, 83, 84, 85, 87, 90, 91, 92, 93, 95, 96, 97, 98, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 112, 113, 115, 116, 118, 120, 121, 122, 123, 124, 125, 127, 128, 129, 130, 131, 132, 134, 135, 136, 137, 138, 139, 140, 141, 142, 144, 145, 146, 147, 148, 149, 151, 152, 154, 155, 156, 157, 158, 159, 160, 161, 166, 167, 168, 169, 171, 173, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 190, 193, 194, 195, 196, 197, 198, 199, 201, 203, 205, 208, 209, 211, 212, 213, 215, 216, 220, 221, 222, 224, 225, 226, 228, 230, 231, 232, 233, 234, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 257, 259, 260, 261, 263, 264, 265, 266, 268, 269, 270, 272, 273, 274, 275, 276, 277, 278, 280, 281, 282, 283, 286, 287, 288, 290, 291, 292, 293, 296, 297, 301, 302, 303, 304, 305, 306, 307, 309, 310, 312, 313, 314, 315, 316, 318, 320, 321, 322, 323, 324, 325, 328, 329, 330, 331, 332, 334, 335, 336, 337, 339, 342, 343, 344, 346, 347, 348, 350, 351, 352, 355, 356, 359, 361, 362, 363, 364, 365, 367, 368, 370, 371, 372, 373, 375, 376, 377, 378, 379, 380, 381, 382, 384, 385, 386, 387, 389, 390, 391, 392, 394, 395, 397, 398, 399, 401, 402, 403, 404, 406, 409, 411, 412, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 426, 427, 428, 429, 433, 434, 435, 436, 438, 440, 441, 443, 444, 445, 446, 447, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 461, 462, 463, 467, 469, 470, 472, 473, 474, 475, 476, 477, 479, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 493, 495, 496, 497, 499, 500, 501, 503, 504, 506, 510, 511], "30": [0, 1, 4, 5, 6, 8, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 23, 24, 25, 26, 28, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 41, 42, 43, 44, 45, 46, 47, 48, 50, 52, 53, 54, 55, 56, 57, 59, 60, 62, 64, 65, 67, 68, 69, 70, 71, 73, 74, 76, 77, 78, 80, 82, 83, 84, 85, 86, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 102, 103, 104, 105, 106, 107, 109, 110, 112, 113, 114, 115, 117, 118, 119, 124, 125, 127, 128, 129, 130, 132, 133, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 149, 150, 151, 153, 154, 156, 157, 159, 160, 161, 162, 164, 166, 167, 169, 170, 171, 172, 173, 175, 177, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 199, 200, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 216, 217, 218, 219, 220, 226, 227, 229, 230, 231, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 249, 250, 253, 254, 255, 256, 258, 259, 260, 262, 263, 264, 267, 268, 269, 270, 272, 273, 274, 276, 277, 278, 279, 280, 281, 283, 284, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 311, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 337, 340, 341, 342, 343, 345, 346, 348, 349, 350, 351, 354, 356, 357, 358, 361, 363, 364, 366, 367, 368, 369, 370, 374, 376, 377, 379, 380, 381, 383, 384, 385, 386, 387, 388, 389, 390, 391, 394, 395, 396, 397, 398, 400, 401, 402, 403, 404, 405, 406, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 419, 420, 421, 423, 424, 425, 426, 427, 428, 432, 434, 435, 436, 437, 438, 439, 440, 441, 443, 444, 446, 447, 448, 450, 451, 453, 454, 455, 456, 457, 459, 460, 461, 462, 463, 467, 468, 469, 470, 471, 473, 474, 476, 478, 479, 481, 484, 486, 487, 489, 497, 498, 499, 500, 502, 503, 504, 505, 506, 507, 508, 509, 511], "31": [0, 2, 3, 5, 6, 7, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 20, 22, 23, 24, 25, 26, 27, 28, 30, 31, 32, 34, 36, 37, 39, 40, 41, 42, 43, 44, 45, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 63, 64, 65, 66, 67, 68, 70, 73, 74, 76, 77, 78, 79, 80, 81, 82, 84, 85, 86, 88, 89, 90, 93, 95, 96, 97, 98, 99, 100, 102, 105, 106, 108, 109, 110, 111, 112, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 126, 127, 129, 130, 131, 132, 134, 135, 136, 137, 138, 140, 143, 144, 145, 146, 147, 149, 150, 152, 154, 155, 156, 157, 158, 159, 160, 161, 162, 164, 165, 166, 168, 169, 170, 171, 172, 173, 175, 176, 177, 178, 179, 180, 182, 184, 185, 186, 187, 190, 191, 192, 193, 194, 195, 197, 198, 199, 202, 205, 206, 207, 209, 210, 211, 212, 213, 214, 215, 217, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 234, 236, 237, 239, 241, 242, 243, 244, 245, 246, 247, 250, 251, 252, 255, 256, 257, 259, 260, 261, 263, 264, 265, 266, 268, 269, 270, 271, 272, 273, 275, 279, 280, 281, 282, 283, 284, 285, 287, 288, 289, 291, 292, 293, 294, 295, 296, 297, 300, 301, 302, 303, 304, 306, 308, 309, 311, 313, 314, 315, 316, 317, 318, 319, 320, 321, 323, 324, 325, 326, 327, 328, 329, 333, 334, 335, 336, 339, 340, 343, 345, 346, 347, 348, 349, 350, 351, 352, 354, 355, 356, 357, 358, 359, 360, 361, 363, 364, 365, 367, 368, 369, 371, 373, 374, 375, 377, 378, 379, 380, 381, 383, 387, 388, 389, 390, 391, 392, 393, 394, 396, 397, 399, 401, 402, 405, 407, 408, 409, 410, 412, 413, 414, 415, 416, 417, 419, 420, 421, 422, 423, 424, 426, 427, 428, 429, 431, 433, 434, 435, 436, 437, 438, 439, 440, 442, 443, 444, 446, 449, 450, 451, 452, 453, 454, 455, 458, 459, 461, 465, 466, 467, 469, 470, 471, 472, 473, 475, 476, 479, 480, 481, 482, 483, 485, 486, 487, 489, 490, 491, 492, 494, 495, 496, 498, 500, 501, 502, 505, 506, 508, 509, 510], "32": [0, 1, 2, 3, 4, 6, 7, 8, 9, 10, 12, 14, 15, 16, 17, 18, 19, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 33, 35, 36, 37, 39, 40, 42, 43, 44, 45, 47, 49, 50, 51, 52, 53, 54, 58, 61, 62, 63, 64, 65, 67, 69, 70, 71, 72, 73, 74, 75, 79, 80, 82, 83, 86, 87, 88, 89, 90, 91, 92, 94, 96, 97, 98, 99, 101, 104, 106, 107, 108, 109, 110, 111, 112, 115, 116, 118, 119, 120, 121, 122, 123, 124, 127, 129, 130, 133, 135, 136, 137, 138, 140, 142, 143, 144, 146, 147, 148, 150, 151, 152, 153, 155, 157, 158, 159, 160, 162, 163, 164, 165, 166, 167, 168, 169, 171, 172, 173, 174, 175, 176, 178, 179, 180, 181, 182, 183, 185, 187, 189, 190, 191, 192, 193, 194, 195, 196, 197, 199, 201, 203, 204, 206, 207, 208, 210, 211, 212, 213, 216, 218, 219, 220, 221, 222, 224, 225, 226, 227, 228, 229, 230, 231, 233, 234, 235, 236, 237, 238, 239, 240, 241, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 255, 256, 260, 261, 262, 263, 265, 266, 267, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 281, 282, 283, 285, 286, 287, 288, 290, 293, 294, 295, 296, 298, 299, 300, 302, 303, 304, 309, 310, 311, 312, 313, 314, 315, 316, 317, 319, 320, 322, 323, 324, 325, 326, 328, 329, 331, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 351, 353, 354, 355, 356, 357, 358, 359, 360, 362, 363, 368, 369, 370, 372, 374, 375, 376, 377, 378, 379, 380, 381, 385, 386, 387, 388, 391, 392, 393, 394, 395, 396, 397, 398, 400, 401, 402, 403, 405, 406, 407, 409, 410, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 427, 428, 429, 432, 434, 437, 438, 439, 440, 441, 442, 444, 445, 446, 448, 450, 451, 452, 453, 454, 455, 456, 457, 459, 460, 463, 464, 465, 466, 467, 468, 470, 471, 473, 475, 476, 477, 478, 479, 480, 482, 483, 484, 486, 487, 488, 489, 490, 491, 492, 495, 500, 501, 503, 504, 505, 506, 507, 508, 509, 511], "33": [0, 3, 6, 7, 9, 10, 12, 14, 16, 17, 18, 20, 21, 22, 23, 25, 27, 28, 31, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 61, 62, 63, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 96, 97, 99, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 136, 137, 138, 139, 140, 141, 144, 145, 146, 147, 148, 151, 152, 154, 156, 158, 159, 160, 163, 164, 165, 166, 168, 170, 171, 172, 173, 174, 175, 176, 177, 178, 180, 182, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 196, 198, 199, 201, 202, 203, 204, 205, 207, 208, 209, 210, 211, 214, 215, 216, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 231, 232, 234, 235, 236, 237, 238, 239, 240, 243, 244, 245, 246, 249, 252, 253, 254, 255, 256, 257, 259, 260, 261, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 275, 276, 277, 278, 279, 281, 282, 283, 284, 285, 286, 288, 291, 293, 294, 296, 299, 300, 301, 302, 303, 304, 305, 306, 309, 311, 312, 314, 315, 317, 319, 321, 323, 324, 325, 327, 328, 329, 331, 332, 333, 334, 335, 336, 338, 339, 342, 343, 344, 345, 346, 347, 349, 350, 351, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 368, 371, 372, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 385, 386, 387, 389, 391, 392, 393, 394, 395, 398, 401, 402, 403, 404, 406, 407, 409, 410, 411, 412, 414, 415, 418, 419, 420, 422, 423, 425, 426, 427, 430, 431, 432, 434, 437, 440, 441, 442, 443, 444, 446, 449, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 465, 466, 467, 468, 469, 471, 474, 475, 477, 480, 482, 483, 484, 485, 486, 487, 488, 490, 494, 495, 496, 497, 498, 499, 500, 501, 503, 504, 505, 506, 508, 509, 511], "34": [1, 3, 5, 6, 7, 8, 9, 10, 11, 13, 14, 17, 18, 19, 20, 22, 24, 25, 26, 28, 29, 32, 33, 34, 36, 37, 38, 39, 40, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 53, 55, 56, 57, 58, 60, 62, 63, 65, 66, 67, 68, 69, 70, 71, 72, 73, 75, 76, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 113, 115, 116, 117, 118, 119, 120, 121, 122, 123, 125, 126, 127, 128, 130, 131, 132, 133, 137, 139, 140, 141, 142, 143, 144, 145, 146, 150, 151, 152, 153, 154, 156, 157, 160, 161, 164, 165, 166, 167, 168, 169, 170, 172, 173, 174, 176, 178, 179, 180, 183, 184, 185, 186, 187, 188, 189, 190, 192, 193, 194, 196, 197, 198, 199, 200, 201, 203, 204, 206, 207, 208, 210, 211, 212, 213, 214, 216, 217, 218, 219, 220, 221, 222, 223, 224, 226, 227, 229, 231, 232, 233, 234, 235, 236, 238, 239, 240, 241, 244, 246, 248, 249, 250, 251, 253, 255, 256, 258, 259, 260, 261, 264, 265, 266, 267, 268, 270, 272, 275, 276, 277, 278, 280, 281, 282, 283, 285, 286, 287, 288, 289, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 304, 305, 306, 307, 308, 309, 310, 311, 312, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 336, 337, 338, 340, 341, 343, 344, 345, 347, 349, 350, 351, 353, 357, 358, 359, 361, 362, 363, 366, 368, 369, 370, 373, 374, 376, 378, 379, 380, 381, 384, 385, 386, 388, 390, 391, 392, 394, 395, 397, 399, 400, 401, 402, 403, 405, 407, 408, 409, 410, 411, 413, 414, 415, 416, 417, 418, 419, 422, 423, 425, 426, 428, 430, 433, 434, 435, 436, 437, 438, 441, 442, 443, 444, 447, 449, 451, 453, 456, 457, 459, 460, 461, 462, 463, 464, 467, 468, 470, 471, 472, 473, 475, 477, 478, 479, 480, 482, 483, 484, 485, 486, 487, 488, 489, 492, 493, 494, 496, 497, 498, 500, 501, 503, 504, 505, 506, 507, 509, 510, 511], "35": [1, 3, 6, 7, 9, 10, 11, 13, 14, 15, 16, 18, 19, 20, 21, 22, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 36, 37, 38, 40, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 55, 56, 57, 58, 59, 60, 61, 62, 63, 65, 66, 67, 68, 69, 71, 73, 77, 78, 79, 80, 81, 82, 85, 87, 88, 89, 90, 91, 92, 93, 94, 96, 97, 98, 99, 100, 101, 102, 103, 104, 106, 107, 108, 110, 111, 112, 113, 117, 118, 119, 121, 122, 123, 124, 126, 127, 129, 130, 132, 133, 134, 135, 136, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 152, 154, 155, 156, 157, 160, 161, 162, 163, 164, 165, 166, 167, 169, 171, 172, 173, 174, 175, 178, 179, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 202, 203, 205, 207, 208, 209, 210, 212, 213, 215, 216, 217, 218, 220, 221, 222, 223, 225, 226, 227, 228, 229, 231, 232, 233, 234, 236, 237, 238, 241, 242, 245, 246, 247, 248, 249, 250, 253, 254, 255, 257, 258, 259, 260, 261, 262, 263, 264, 265, 269, 273, 274, 275, 277, 279, 280, 282, 285, 286, 287, 288, 289, 290, 291, 292, 294, 296, 297, 298, 299, 300, 302, 303, 305, 306, 307, 308, 309, 310, 312, 313, 314, 315, 316, 317, 318, 320, 321, 322, 324, 325, 327, 328, 329, 330, 331, 332, 334, 335, 338, 339, 341, 342, 343, 345, 347, 348, 349, 350, 354, 356, 357, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 376, 377, 378, 380, 382, 383, 384, 385, 386, 387, 388, 389, 391, 392, 395, 396, 397, 399, 401, 403, 405, 406, 407, 408, 409, 410, 411, 412, 414, 415, 416, 417, 418, 419, 420, 421, 423, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 438, 440, 442, 443, 445, 446, 447, 448, 449, 450, 452, 453, 454, 455, 456, 457, 461, 462, 463, 464, 465, 468, 469, 470, 471, 472, 473, 474, 479, 480, 482, 483, 484, 485, 487, 488, 489, 494, 495, 497, 498, 499, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511], "36": [0, 2, 4, 5, 6, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 21, 23, 24, 25, 26, 27, 28, 29, 30, 32, 33, 34, 35, 36, 38, 39, 40, 41, 42, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 55, 56, 57, 58, 59, 60, 61, 63, 64, 65, 66, 68, 69, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 85, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 104, 105, 106, 107, 108, 109, 110, 112, 113, 114, 115, 117, 119, 121, 122, 123, 124, 125, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 149, 151, 152, 153, 154, 155, 156, 157, 159, 160, 161, 162, 164, 165, 167, 169, 170, 172, 173, 174, 175, 176, 177, 178, 180, 182, 183, 184, 189, 190, 191, 192, 193, 194, 195, 197, 198, 199, 200, 202, 203, 204, 205, 207, 208, 209, 210, 212, 213, 214, 215, 216, 217, 218, 219, 222, 223, 225, 226, 227, 228, 230, 231, 235, 236, 239, 240, 241, 243, 244, 245, 247, 248, 249, 251, 252, 253, 255, 256, 258, 260, 262, 263, 265, 269, 271, 272, 273, 274, 275, 276, 277, 278, 279, 282, 283, 284, 285, 286, 288, 289, 290, 291, 292, 295, 296, 297, 298, 299, 300, 302, 303, 305, 306, 307, 308, 310, 311, 312, 313, 315, 317, 318, 319, 320, 321, 322, 323, 325, 326, 327, 328, 329, 331, 332, 334, 335, 336, 338, 339, 340, 343, 344, 345, 346, 347, 348, 349, 353, 355, 356, 358, 360, 362, 363, 366, 367, 368, 369, 373, 374, 375, 378, 379, 383, 385, 386, 388, 390, 391, 394, 395, 396, 397, 399, 401, 402, 403, 404, 406, 407, 408, 409, 412, 413, 414, 416, 417, 418, 419, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 436, 437, 440, 441, 442, 445, 447, 448, 449, 450, 451, 453, 454, 455, 456, 457, 458, 459, 461, 462, 463, 464, 465, 466, 467, 468, 469, 475, 477, 478, 479, 482, 483, 484, 485, 486, 487, 488, 490, 493, 494, 496, 497, 498, 499, 501, 502, 503, 504, 505, 506, 507, 508, 510, 511], "37": [0, 1, 2, 3, 4, 5, 6, 10, 11, 12, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 36, 38, 39, 40, 41, 42, 43, 44, 45, 46, 48, 49, 53, 54, 55, 56, 57, 58, 59, 61, 62, 63, 64, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 81, 83, 84, 85, 86, 87, 88, 90, 91, 92, 93, 94, 95, 96, 97, 98, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 111, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 125, 128, 129, 130, 131, 134, 135, 136, 138, 139, 140, 142, 144, 145, 146, 147, 148, 150, 152, 154, 155, 156, 157, 158, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 172, 173, 174, 175, 176, 177, 178, 180, 182, 183, 188, 189, 192, 194, 198, 199, 200, 201, 203, 204, 206, 208, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 223, 225, 226, 227, 229, 231, 232, 233, 234, 236, 237, 238, 239, 240, 241, 242, 243, 245, 246, 247, 248, 250, 251, 252, 253, 255, 257, 261, 264, 265, 266, 267, 268, 270, 271, 275, 276, 277, 279, 280, 281, 282, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 298, 299, 301, 302, 303, 304, 305, 306, 307, 308, 309, 311, 312, 313, 314, 316, 320, 321, 323, 324, 325, 326, 327, 329, 330, 331, 332, 333, 334, 337, 338, 339, 340, 342, 343, 344, 345, 347, 348, 350, 351, 352, 354, 357, 358, 359, 360, 362, 365, 369, 370, 371, 372, 373, 377, 378, 379, 380, 381, 382, 383, 384, 386, 387, 388, 389, 391, 392, 393, 394, 396, 398, 400, 401, 404, 405, 407, 408, 409, 411, 412, 413, 414, 416, 417, 418, 419, 420, 421, 422, 424, 425, 426, 427, 429, 431, 432, 433, 434, 435, 436, 438, 439, 440, 441, 442, 445, 446, 447, 448, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 461, 462, 463, 464, 465, 466, 468, 469, 470, 471, 472, 473, 474, 476, 477, 478, 479, 480, 481, 483, 484, 485, 490, 492, 494, 496, 498, 499, 500, 501, 502, 503, 504, 506, 508, 510], "38": [0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 28, 29, 30, 31, 32, 33, 35, 36, 39, 40, 41, 42, 43, 44, 45, 46, 48, 49, 51, 52, 53, 54, 56, 57, 58, 59, 60, 62, 63, 64, 65, 66, 67, 69, 73, 74, 75, 76, 77, 78, 79, 81, 82, 83, 85, 86, 90, 91, 92, 93, 95, 96, 97, 99, 100, 101, 102, 104, 105, 106, 107, 109, 110, 111, 112, 113, 114, 115, 116, 119, 120, 121, 122, 123, 124, 125, 126, 129, 130, 133, 134, 136, 137, 138, 139, 140, 141, 142, 143, 147, 148, 149, 150, 151, 152, 154, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 168, 169, 171, 173, 174, 175, 176, 177, 178, 179, 180, 181, 186, 187, 188, 189, 190, 192, 193, 195, 196, 197, 200, 201, 203, 204, 205, 206, 208, 209, 210, 211, 212, 214, 215, 216, 217, 218, 221, 223, 224, 225, 226, 228, 229, 230, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 245, 246, 247, 249, 250, 252, 253, 254, 255, 256, 260, 261, 262, 264, 265, 266, 267, 269, 270, 271, 273, 275, 276, 279, 281, 283, 284, 285, 287, 288, 290, 291, 292, 293, 294, 295, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 311, 312, 313, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 332, 334, 335, 338, 339, 340, 342, 343, 345, 346, 347, 348, 349, 352, 354, 357, 358, 359, 361, 362, 363, 364, 366, 368, 369, 370, 372, 373, 374, 375, 377, 379, 381, 383, 384, 385, 386, 387, 389, 390, 391, 392, 394, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 426, 427, 428, 429, 430, 431, 432, 434, 435, 436, 437, 440, 441, 442, 444, 446, 449, 450, 452, 453, 456, 457, 458, 460, 461, 462, 463, 465, 466, 467, 468, 469, 470, 471, 472, 473, 476, 479, 481, 482, 485, 489, 490, 491, 493, 494, 495, 496, 499, 500, 501, 502, 503, 504, 506, 507, 508, 509, 511], "39": [0, 1, 2, 3, 4, 5, 6, 7, 9, 11, 12, 13, 16, 18, 19, 20, 21, 22, 24, 25, 26, 27, 28, 31, 32, 33, 34, 36, 39, 40, 41, 42, 44, 45, 46, 50, 51, 52, 53, 55, 56, 57, 58, 59, 60, 62, 63, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 81, 82, 83, 84, 85, 87, 89, 91, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 107, 108, 110, 111, 112, 114, 115, 117, 118, 119, 120, 121, 123, 124, 125, 126, 128, 131, 132, 134, 135, 137, 139, 140, 141, 142, 143, 144, 145, 146, 147, 149, 151, 152, 153, 155, 156, 158, 159, 160, 161, 162, 163, 164, 166, 167, 168, 169, 170, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 185, 186, 188, 190, 191, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 208, 209, 210, 211, 212, 214, 215, 217, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 231, 234, 235, 236, 237, 238, 239, 242, 244, 245, 246, 247, 249, 250, 251, 254, 255, 256, 257, 258, 260, 262, 263, 264, 265, 267, 268, 269, 271, 272, 274, 275, 276, 277, 278, 279, 280, 281, 283, 284, 285, 286, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 302, 303, 304, 306, 308, 310, 311, 313, 315, 316, 318, 321, 323, 326, 327, 328, 331, 332, 334, 335, 336, 337, 338, 339, 340, 341, 342, 344, 345, 346, 347, 349, 350, 351, 353, 354, 355, 356, 357, 358, 361, 363, 366, 367, 368, 369, 370, 371, 372, 373, 375, 376, 377, 380, 381, 382, 383, 384, 385, 386, 387, 389, 390, 391, 393, 394, 395, 397, 398, 399, 400, 401, 402, 404, 405, 406, 407, 409, 410, 411, 412, 413, 414, 416, 417, 419, 421, 425, 426, 427, 429, 430, 431, 432, 433, 434, 436, 437, 438, 439, 440, 441, 443, 444, 447, 449, 450, 452, 453, 454, 455, 456, 457, 458, 459, 461, 463, 464, 467, 468, 469, 470, 471, 472, 473, 477, 478, 479, 480, 481, 482, 484, 485, 486, 488, 489, 490, 492, 493, 495, 496, 497, 498, 499, 500, 501, 505, 506, 508, 509, 510, 511], "40": [1, 2, 3, 4, 6, 9, 13, 14, 16, 18, 19, 20, 21, 23, 25, 26, 27, 28, 29, 30, 31, 32, 34, 35, 36, 37, 39, 40, 42, 43, 44, 45, 48, 49, 50, 51, 52, 53, 54, 55, 56, 58, 59, 60, 61, 62, 63, 65, 67, 69, 70, 73, 74, 75, 76, 77, 79, 80, 81, 82, 83, 84, 85, 87, 88, 89, 90, 91, 92, 93, 95, 96, 98, 100, 103, 105, 106, 108, 111, 113, 114, 116, 117, 118, 119, 120, 122, 123, 126, 127, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 143, 144, 145, 146, 147, 148, 151, 153, 155, 157, 158, 159, 160, 161, 162, 164, 165, 166, 168, 169, 170, 171, 172, 173, 174, 176, 177, 178, 179, 180, 181, 182, 183, 185, 186, 187, 188, 189, 190, 191, 192, 194, 195, 197, 198, 199, 200, 201, 202, 203, 205, 206, 208, 209, 211, 212, 213, 214, 215, 217, 219, 221, 222, 223, 226, 227, 228, 229, 230, 231, 234, 235, 238, 239, 240, 244, 245, 247, 248, 249, 250, 251, 252, 254, 255, 256, 257, 258, 259, 261, 262, 264, 265, 266, 267, 268, 270, 271, 272, 273, 274, 275, 278, 279, 280, 281, 283, 285, 286, 287, 288, 289, 290, 291, 292, 294, 295, 296, 297, 298, 299, 300, 302, 303, 304, 306, 308, 309, 311, 313, 314, 315, 316, 317, 318, 320, 323, 324, 325, 327, 328, 329, 330, 332, 333, 334, 335, 336, 338, 340, 341, 342, 344, 346, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 359, 362, 363, 364, 365, 366, 367, 373, 376, 377, 378, 379, 380, 382, 383, 384, 385, 386, 388, 389, 390, 391, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 404, 406, 407, 410, 411, 414, 415, 416, 417, 418, 419, 420, 422, 423, 425, 426, 427, 428, 429, 430, 431, 433, 434, 435, 436, 437, 438, 439, 441, 442, 443, 445, 447, 448, 449, 450, 451, 452, 453, 456, 457, 458, 459, 460, 461, 462, 463, 464, 466, 467, 470, 471, 472, 473, 474, 475, 477, 478, 479, 480, 481, 482, 483, 485, 486, 487, 488, 489, 490, 491, 493, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 507, 508, 509, 511], "41": [0, 1, 2, 3, 5, 10, 12, 15, 16, 17, 18, 19, 20, 21, 22, 24, 25, 27, 29, 32, 33, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 58, 59, 61, 62, 64, 65, 67, 68, 70, 71, 73, 74, 77, 78, 79, 80, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 93, 94, 95, 96, 97, 98, 99, 100, 102, 103, 107, 109, 111, 112, 115, 117, 118, 119, 124, 125, 128, 129, 132, 133, 134, 135, 136, 137, 138, 140, 143, 144, 145, 146, 147, 149, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 162, 163, 164, 166, 167, 168, 169, 170, 171, 175, 176, 178, 179, 180, 181, 182, 183, 186, 188, 189, 190, 191, 193, 194, 196, 197, 198, 199, 200, 201, 203, 204, 205, 206, 207, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 226, 227, 228, 229, 230, 231, 233, 235, 237, 238, 240, 241, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 272, 273, 274, 278, 279, 281, 282, 283, 284, 287, 289, 290, 291, 292, 293, 294, 295, 296, 297, 299, 300, 301, 302, 303, 304, 305, 306, 308, 310, 311, 313, 314, 316, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 338, 339, 340, 342, 343, 344, 346, 348, 349, 350, 351, 352, 353, 354, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 372, 374, 375, 377, 378, 380, 381, 382, 383, 384, 385, 386, 387, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 407, 408, 409, 410, 411, 414, 415, 417, 418, 419, 420, 422, 423, 424, 425, 426, 427, 429, 430, 431, 432, 433, 434, 435, 437, 439, 440, 441, 443, 444, 445, 446, 448, 449, 450, 451, 454, 457, 458, 459, 462, 463, 464, 465, 467, 468, 470, 471, 472, 474, 475, 476, 478, 479, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 499, 500, 501, 504, 505, 507, 508, 509, 511], "42": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 30, 31, 33, 34, 35, 36, 37, 38, 39, 40, 42, 43, 45, 46, 47, 49, 50, 52, 53, 55, 56, 57, 58, 59, 61, 62, 67, 68, 69, 70, 71, 73, 75, 76, 77, 78, 79, 80, 83, 84, 85, 86, 87, 88, 90, 91, 92, 93, 95, 96, 97, 98, 99, 102, 103, 104, 105, 106, 110, 111, 113, 114, 116, 119, 120, 123, 124, 125, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 146, 148, 150, 151, 152, 154, 157, 158, 159, 162, 163, 164, 165, 168, 169, 170, 171, 172, 173, 174, 175, 177, 178, 180, 181, 183, 184, 185, 186, 187, 189, 190, 192, 194, 195, 197, 198, 199, 200, 201, 202, 203, 204, 205, 207, 208, 210, 211, 212, 214, 215, 216, 217, 218, 220, 222, 225, 226, 228, 231, 232, 233, 234, 235, 236, 237, 238, 241, 242, 243, 244, 245, 246, 248, 249, 250, 251, 252, 255, 256, 257, 258, 259, 260, 261, 263, 264, 265, 266, 267, 268, 271, 272, 273, 274, 276, 277, 279, 283, 284, 285, 286, 287, 289, 290, 291, 293, 294, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 307, 309, 310, 312, 313, 316, 317, 318, 319, 320, 321, 322, 323, 325, 326, 327, 328, 329, 331, 332, 334, 335, 338, 339, 340, 341, 342, 344, 345, 346, 347, 348, 349, 351, 353, 354, 355, 356, 357, 358, 359, 360, 362, 363, 364, 365, 366, 367, 368, 369, 373, 374, 376, 378, 379, 380, 381, 382, 384, 386, 387, 388, 389, 390, 391, 393, 394, 395, 396, 397, 401, 402, 403, 404, 406, 410, 411, 412, 413, 415, 416, 417, 418, 419, 420, 422, 423, 424, 425, 426, 428, 429, 430, 431, 432, 433, 434, 435, 436, 438, 439, 441, 442, 444, 446, 447, 448, 449, 453, 455, 456, 457, 458, 462, 463, 464, 465, 466, 469, 470, 471, 472, 473, 474, 475, 476, 478, 479, 480, 481, 482, 483, 484, 487, 488, 489, 490, 491, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 504, 505, 506, 508, 509, 510, 511], "43": [1, 2, 4, 5, 6, 9, 10, 11, 13, 14, 15, 16, 17, 18, 19, 24, 25, 26, 28, 29, 30, 31, 32, 34, 36, 37, 38, 39, 40, 41, 42, 44, 45, 46, 47, 48, 49, 50, 53, 54, 55, 56, 57, 60, 64, 65, 66, 67, 70, 71, 73, 75, 77, 79, 81, 83, 84, 85, 86, 87, 89, 91, 92, 93, 94, 95, 96, 98, 99, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 135, 136, 137, 139, 141, 142, 144, 145, 146, 148, 149, 150, 154, 156, 157, 159, 161, 162, 163, 164, 166, 167, 168, 169, 171, 172, 173, 174, 175, 177, 178, 179, 180, 181, 182, 183, 185, 186, 189, 190, 191, 193, 194, 196, 198, 199, 202, 203, 204, 205, 206, 207, 208, 209, 210, 212, 213, 214, 215, 216, 217, 219, 220, 221, 223, 224, 225, 226, 229, 230, 231, 232, 233, 234, 237, 238, 239, 241, 242, 243, 244, 245, 246, 247, 248, 249, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 265, 266, 267, 269, 270, 271, 273, 274, 275, 276, 277, 278, 280, 282, 283, 284, 285, 286, 287, 290, 292, 293, 294, 295, 296, 297, 300, 301, 302, 303, 305, 306, 308, 310, 311, 312, 315, 316, 319, 320, 322, 324, 326, 329, 330, 331, 332, 333, 335, 336, 337, 339, 340, 341, 342, 345, 346, 349, 351, 354, 355, 357, 358, 359, 360, 361, 362, 363, 365, 366, 367, 369, 370, 371, 372, 374, 376, 377, 378, 380, 381, 382, 383, 384, 385, 386, 387, 388, 391, 393, 394, 395, 397, 398, 399, 400, 404, 405, 406, 407, 408, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 424, 425, 426, 427, 428, 429, 430, 431, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 451, 452, 453, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 469, 471, 472, 474, 475, 476, 477, 478, 481, 482, 483, 484, 485, 486, 487, 489, 490, 491, 492, 494, 495, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511], "44": [1, 2, 3, 4, 5, 6, 7, 8, 9, 12, 13, 14, 17, 19, 23, 24, 25, 26, 27, 28, 30, 31, 33, 34, 35, 37, 38, 39, 40, 43, 44, 45, 46, 47, 49, 50, 51, 52, 53, 54, 55, 56, 57, 59, 60, 61, 64, 65, 68, 70, 71, 72, 73, 74, 75, 76, 78, 79, 81, 82, 84, 87, 89, 90, 91, 92, 93, 94, 95, 96, 97, 99, 100, 103, 104, 105, 106, 108, 109, 110, 113, 116, 117, 119, 120, 121, 122, 123, 124, 126, 127, 129, 132, 133, 134, 135, 136, 140, 141, 142, 144, 145, 146, 147, 148, 150, 152, 153, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 172, 173, 174, 175, 176, 177, 178, 180, 181, 182, 183, 184, 186, 187, 189, 190, 191, 194, 195, 196, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 212, 213, 214, 216, 217, 218, 220, 221, 222, 223, 224, 225, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 240, 242, 243, 244, 245, 247, 248, 249, 250, 251, 252, 253, 255, 256, 258, 259, 260, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 296, 297, 298, 299, 300, 301, 302, 303, 305, 307, 308, 309, 311, 312, 313, 315, 317, 319, 320, 322, 324, 326, 327, 329, 330, 331, 332, 333, 335, 336, 337, 338, 339, 340, 342, 344, 346, 347, 348, 349, 350, 351, 352, 353, 354, 356, 358, 359, 361, 362, 364, 366, 368, 370, 372, 376, 378, 379, 382, 383, 384, 385, 386, 387, 389, 392, 393, 394, 395, 396, 397, 398, 399, 401, 402, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 415, 418, 419, 420, 421, 422, 423, 424, 426, 427, 428, 432, 433, 434, 435, 436, 437, 438, 440, 441, 442, 443, 444, 445, 446, 447, 450, 451, 452, 454, 455, 456, 458, 459, 460, 461, 462, 464, 465, 466, 468, 471, 472, 473, 474, 477, 479, 480, 481, 482, 483, 484, 485, 489, 490, 491, 492, 494, 495, 497, 498, 499, 500, 501, 502, 503, 505, 507, 509, 510], "45": [2, 3, 5, 7, 9, 10, 11, 14, 15, 18, 21, 22, 23, 24, 25, 26, 28, 31, 32, 33, 34, 35, 36, 37, 38, 39, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 54, 56, 57, 58, 59, 60, 63, 64, 65, 66, 67, 68, 69, 70, 71, 73, 74, 75, 76, 77, 79, 80, 84, 86, 88, 89, 90, 91, 92, 94, 96, 97, 99, 101, 103, 104, 105, 109, 111, 114, 115, 116, 117, 118, 119, 120, 122, 123, 124, 125, 126, 127, 128, 132, 133, 134, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 147, 148, 149, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 162, 163, 165, 166, 167, 168, 169, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 191, 192, 193, 194, 195, 196, 198, 199, 200, 201, 202, 203, 204, 206, 209, 210, 211, 212, 213, 214, 215, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 235, 236, 237, 238, 239, 241, 242, 244, 245, 248, 249, 250, 252, 253, 254, 255, 256, 257, 259, 260, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 274, 275, 277, 278, 280, 281, 282, 283, 287, 288, 289, 290, 292, 294, 296, 297, 298, 302, 303, 305, 306, 307, 308, 311, 312, 313, 314, 316, 320, 321, 322, 323, 324, 325, 327, 328, 329, 330, 332, 333, 334, 336, 338, 340, 341, 342, 344, 345, 346, 348, 349, 350, 351, 352, 354, 356, 359, 360, 361, 362, 363, 365, 366, 367, 368, 371, 372, 373, 375, 376, 377, 378, 379, 381, 382, 383, 384, 385, 386, 387, 389, 390, 391, 392, 394, 395, 398, 399, 401, 403, 404, 405, 406, 408, 411, 412, 413, 414, 416, 417, 418, 419, 421, 422, 424, 425, 426, 427, 428, 429, 431, 432, 433, 434, 435, 436, 438, 439, 440, 442, 443, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 461, 463, 466, 467, 470, 471, 472, 473, 474, 475, 478, 479, 481, 482, 484, 485, 486, 487, 488, 490, 491, 492, 493, 494, 495, 496, 498, 499, 500, 501, 502, 503, 504, 505, 507, 508, 509, 510], "46": [1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 33, 35, 37, 38, 40, 41, 42, 43, 44, 45, 46, 48, 49, 51, 52, 53, 54, 55, 56, 57, 60, 62, 64, 65, 66, 67, 68, 69, 70, 71, 73, 76, 77, 78, 79, 80, 81, 82, 85, 86, 87, 88, 89, 92, 93, 96, 97, 98, 99, 100, 101, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 136, 137, 138, 139, 141, 142, 143, 144, 145, 147, 148, 150, 151, 152, 154, 155, 156, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 173, 176, 177, 178, 181, 183, 185, 186, 188, 190, 191, 192, 193, 194, 195, 196, 198, 199, 200, 201, 202, 205, 206, 207, 209, 210, 211, 212, 214, 215, 218, 219, 220, 221, 222, 225, 226, 227, 228, 229, 230, 232, 234, 236, 237, 238, 239, 240, 241, 245, 246, 248, 249, 250, 253, 254, 255, 256, 257, 259, 260, 261, 262, 263, 265, 266, 269, 270, 271, 272, 274, 276, 278, 280, 281, 283, 284, 286, 287, 288, 290, 291, 292, 293, 294, 296, 297, 298, 299, 300, 301, 303, 304, 306, 308, 309, 311, 314, 315, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 328, 329, 330, 332, 334, 335, 336, 337, 338, 339, 340, 341, 343, 344, 345, 346, 347, 348, 350, 351, 352, 353, 354, 356, 357, 359, 361, 362, 363, 364, 366, 368, 369, 370, 371, 372, 373, 374, 375, 376, 378, 379, 380, 381, 383, 384, 387, 388, 389, 390, 392, 393, 396, 397, 407, 409, 410, 412, 413, 415, 416, 417, 418, 419, 420, 421, 423, 424, 425, 427, 429, 430, 431, 432, 433, 434, 435, 436, 438, 441, 443, 444, 445, 446, 447, 448, 449, 452, 454, 457, 458, 459, 461, 462, 463, 464, 465, 466, 468, 469, 470, 471, 474, 476, 477, 478, 479, 481, 482, 483, 484, 485, 486, 487, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 502, 503, 504, 506, 507, 509, 510, 511], "47": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 17, 19, 20, 21, 24, 25, 26, 27, 29, 31, 32, 33, 35, 36, 37, 39, 40, 41, 42, 43, 45, 48, 49, 50, 52, 54, 55, 56, 59, 60, 61, 64, 65, 66, 68, 69, 70, 72, 73, 75, 76, 77, 78, 79, 80, 82, 83, 84, 85, 87, 88, 89, 90, 91, 92, 93, 95, 96, 97, 98, 99, 100, 102, 103, 104, 106, 108, 109, 110, 112, 113, 116, 117, 118, 119, 120, 122, 125, 126, 127, 128, 129, 130, 131, 132, 135, 136, 137, 138, 139, 141, 142, 143, 144, 145, 146, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 159, 160, 161, 163, 164, 166, 167, 168, 169, 171, 175, 176, 178, 179, 181, 183, 184, 185, 186, 187, 188, 189, 190, 191, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 209, 210, 211, 214, 215, 217, 218, 219, 220, 221, 222, 224, 225, 226, 228, 229, 230, 231, 232, 233, 234, 235, 237, 240, 241, 242, 244, 245, 246, 247, 248, 250, 251, 253, 254, 255, 257, 260, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 275, 276, 277, 278, 280, 281, 282, 284, 286, 287, 288, 290, 292, 294, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 320, 321, 322, 323, 324, 326, 328, 329, 332, 333, 334, 335, 336, 337, 338, 340, 341, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 372, 374, 375, 376, 377, 379, 380, 381, 384, 389, 390, 391, 393, 395, 398, 399, 400, 401, 403, 404, 407, 408, 410, 412, 413, 414, 415, 416, 417, 418, 419, 422, 423, 424, 425, 427, 428, 429, 430, 431, 432, 433, 438, 439, 440, 442, 444, 445, 446, 448, 449, 450, 451, 452, 454, 455, 456, 457, 458, 460, 461, 462, 463, 464, 465, 467, 469, 470, 471, 472, 474, 475, 476, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 490, 491, 492, 493, 494, 496, 497, 498, 499, 501, 503, 504, 506, 507, 508, 509], "48": [1, 3, 5, 7, 8, 9, 10, 11, 13, 14, 15, 16, 17, 18, 19, 21, 22, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 41, 43, 45, 46, 47, 49, 50, 51, 52, 53, 56, 58, 59, 61, 62, 63, 64, 65, 66, 68, 69, 70, 71, 75, 76, 77, 79, 80, 83, 84, 85, 86, 87, 88, 89, 90, 91, 93, 95, 96, 97, 98, 99, 100, 101, 103, 105, 106, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 120, 121, 122, 123, 124, 128, 129, 130, 131, 133, 134, 135, 137, 138, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 153, 154, 155, 156, 157, 158, 159, 160, 161, 164, 165, 167, 168, 171, 172, 174, 175, 176, 177, 179, 180, 181, 182, 183, 184, 185, 186, 188, 191, 192, 193, 196, 197, 198, 199, 200, 201, 202, 204, 205, 207, 208, 210, 211, 212, 214, 215, 216, 218, 219, 220, 221, 222, 224, 226, 228, 229, 232, 233, 235, 236, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 249, 250, 251, 252, 253, 255, 256, 257, 258, 259, 261, 262, 263, 264, 265, 266, 267, 271, 273, 274, 276, 277, 278, 279, 281, 282, 283, 284, 285, 287, 288, 289, 291, 293, 295, 296, 297, 299, 301, 302, 303, 304, 305, 306, 309, 310, 311, 312, 314, 315, 316, 317, 318, 320, 321, 322, 323, 325, 328, 332, 333, 334, 335, 337, 342, 343, 345, 346, 347, 348, 351, 352, 354, 356, 357, 358, 359, 360, 361, 362, 363, 364, 367, 368, 369, 370, 371, 372, 374, 376, 377, 378, 379, 381, 382, 383, 384, 385, 386, 387, 389, 391, 392, 393, 394, 397, 398, 399, 400, 401, 402, 403, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 417, 418, 420, 421, 422, 423, 424, 425, 426, 427, 429, 430, 433, 435, 436, 438, 439, 441, 442, 443, 444, 445, 446, 448, 450, 451, 452, 454, 456, 457, 458, 459, 460, 461, 464, 467, 468, 469, 470, 471, 472, 473, 475, 477, 478, 480, 481, 483, 484, 485, 486, 487, 488, 489, 490, 491, 494, 496, 497, 498, 499, 500, 501, 502, 503, 504, 506, 507, 508, 509, 510, 511]}}
|
generation_config.json
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"bos_token_id": 248044,
|
| 3 |
+
"do_sample": true,
|
| 4 |
+
"eos_token_id": [
|
| 5 |
+
248046,
|
| 6 |
+
248044
|
| 7 |
+
],
|
| 8 |
+
"pad_token_id": 248044,
|
| 9 |
+
"temperature": 1.0,
|
| 10 |
+
"top_k": 20,
|
| 11 |
+
"top_p": 0.95
|
| 12 |
+
}
|
merges.txt
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
model-00001-of-00021.safetensors
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:269ce51da510cd07333171445bdb66358afe0ff3562ae7690d0b9cc03dec625b
|
| 3 |
+
size 6485594548
|
model-00002-of-00021.safetensors
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:e0842248b81fa762e129e5d4a8b8b68d21dfd1d8e495a20a1cbde4d96c670e92
|
| 3 |
+
size 3865449064
|
model-00003-of-00021.safetensors
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:669218e54bf41c569179542f239f015cc399302d846364bcc683c45d5ee9b0f1
|
| 3 |
+
size 3915287724
|
model-00004-of-00021.safetensors
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:cb6ba7171aa3ff7e7370b6b052dd39d24b59adacae222974d70a3a30762c87c3
|
| 3 |
+
size 3755713256
|
model-00005-of-00021.safetensors
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:555dff67356ae9ad84969162024c8b9fe3ce05eb2306edde6893ad3ac88d6b0f
|
| 3 |
+
size 3718942952
|
model-00006-of-00021.safetensors
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:1824e38ff2b348ffc8891d0e7a646b75b73e612cef80683a3fb22c5ba6310e91
|
| 3 |
+
size 3886501524
|
model-00007-of-00021.safetensors
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:03f68d62c8c60ec57b6a28adfcc2290e312aa07e83448e8018cb877d2a7e149c
|
| 3 |
+
size 3763275948
|
model-00008-of-00021.safetensors
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:90915ae7591f5b2fb95fec8da6bce1de9fe74e96fff22d617580b25ee273bfbc
|
| 3 |
+
size 3687468904
|
model-00009-of-00021.safetensors
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:a18be64dcaf2102f360f6cbf27af221d065281ca680b190a94f235fae6fb12f0
|
| 3 |
+
size 3747686632
|
model-00010-of-00021.safetensors
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:cbd528f3cdcc04561c5190f62e1879064874bd62ad5c6bdacdc9b0057a8b8082
|
| 3 |
+
size 3736945628
|
model-00011-of-00021.safetensors
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:4ac50e83fc2f2b4d8929239beb4c1142d359b4a0836781a32153ab81562b6186
|
| 3 |
+
size 3658370628
|
model-00012-of-00021.safetensors
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:0f719c8bb1ab3078fe738f0d6314789b78d5759274f3ea4817a874555528ed1b
|
| 3 |
+
size 3686507092
|
model-00013-of-00021.safetensors
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:c56871e6fd227af02f58527aaba996b1ce021b5339ffe68c2f36ceba5f3f4db8
|
| 3 |
+
size 3609013092
|
model-00014-of-00021.safetensors
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:be71f9a1c6e607d994de06d4c2d77f07e5a7a3fc3b7d1e63382f37729d942ab5
|
| 3 |
+
size 3928684564
|
model-00015-of-00021.safetensors
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:29190366c495eab7eb8d678e6106417a88cc9609e1b26022764ce1904e7b1a62
|
| 3 |
+
size 4825996600
|
model-00016-of-00021.safetensors
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:41bfd185d2a7256e15178e86c5a47518ab1891828959cff60f0a6d40eb0c62da
|
| 3 |
+
size 4950031028
|
model-00017-of-00021.safetensors
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:8bf413b5ce4f99e9d8a77423bed274129b2b214c969132d2234cdb1d0b696045
|
| 3 |
+
size 4950030896
|
model-00018-of-00021.safetensors
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:dc7ab07896b809b9d613f2b7c62f6e34921bab132a494e7b3a4e4c53901892b9
|
| 3 |
+
size 4950030896
|
model-00019-of-00021.safetensors
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:7992a55b72d37d4b01d36204fa47f1ac57430be44c0d9f36bc73e73a29a17968
|
| 3 |
+
size 4950030904
|
model-00020-of-00021.safetensors
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:b41c1e04e59961bbb0bcfd829434eca1113c5cfbbde0083a9c960d717b12d6e9
|
| 3 |
+
size 4950030904
|
model-00021-of-00021.safetensors
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:25f75d71e3eed6a2c8215cccceac480ac8f67ca7a016ac6704a4770066cd0166
|
| 3 |
+
size 2700016864
|
model.safetensors.index.json
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:e859ca5914a2d55803b633bb7875ba48339e59b867169aedc58f497ad358f386
|
| 3 |
+
size 32099062
|
mtp_draft/artifacts/draft_vocab_64k.pt
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:ec7a9558b083f388441d4bfd33fb3d499d336febf0eb8d57ebba5032670f93cc
|
| 3 |
+
size 249953
|
mtp_draft/bench_mtp_client.py
ADDED
|
@@ -0,0 +1,72 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
"""Single-stream decode benchmark against a running vLLM server (one request at a time, wall clock per request
|
| 2 |
+
incl. TTFT, temperature 0, 1024 output tokens, reasoning_effort=low, 24 prompts = code/math/chat/tool x 6 from
|
| 3 |
+
prompts.json[40:46], 2 warm-up requests). tau (mean acceptance length incl. the bonus token) and per-position
|
| 4 |
+
acceptance come from the server's /metrics spec-decode counters.
|
| 5 |
+
usage: bench_mtp_client.py --model SERVED --out OUT.json [--port 8000]"""
|
| 6 |
+
import argparse
|
| 7 |
+
import json
|
| 8 |
+
import re
|
| 9 |
+
import time
|
| 10 |
+
import urllib.request
|
| 11 |
+
|
| 12 |
+
from openai import OpenAI
|
| 13 |
+
|
| 14 |
+
|
| 15 |
+
def metrics(port):
|
| 16 |
+
txt = urllib.request.urlopen(f"http://localhost:{port}/metrics").read().decode()
|
| 17 |
+
m = {"drafts": 0.0, "accepted": 0.0, "per_pos": {}}
|
| 18 |
+
for line in txt.splitlines():
|
| 19 |
+
if line.startswith("vllm:spec_decode_num_drafts_total"):
|
| 20 |
+
m["drafts"] += float(line.split()[-1])
|
| 21 |
+
elif line.startswith("vllm:spec_decode_num_accepted_tokens_total"):
|
| 22 |
+
m["accepted"] += float(line.split()[-1])
|
| 23 |
+
elif line.startswith("vllm:spec_decode_num_accepted_tokens_per_pos_total"):
|
| 24 |
+
pos = int(re.search(r'position="(\d+)"', line).group(1))
|
| 25 |
+
m["per_pos"][pos] = m["per_pos"].get(pos, 0.0) + float(line.split()[-1])
|
| 26 |
+
return m
|
| 27 |
+
|
| 28 |
+
|
| 29 |
+
def main():
|
| 30 |
+
p = argparse.ArgumentParser()
|
| 31 |
+
p.add_argument("--model", required=True)
|
| 32 |
+
p.add_argument("--port", default="8000")
|
| 33 |
+
p.add_argument("--per-cat", type=int, default=6)
|
| 34 |
+
p.add_argument("--max-tokens", type=int, default=1024)
|
| 35 |
+
p.add_argument("--out", required=True)
|
| 36 |
+
a = p.parse_args()
|
| 37 |
+
c = OpenAI(base_url=f"http://localhost:{a.port}/v1", api_key="x", timeout=3600)
|
| 38 |
+
prompts = json.load(open("/root/specexp/prompts.json"))
|
| 39 |
+
by = {}
|
| 40 |
+
for x in prompts:
|
| 41 |
+
by.setdefault(x["cat"], []).append(x)
|
| 42 |
+
sel = [x for cat in ["code", "math", "chat", "tool"] for x in by[cat][40:40 + a.per_cat]]
|
| 43 |
+
kw = dict(model=a.model, max_tokens=a.max_tokens, temperature=0.0,
|
| 44 |
+
extra_body={"chat_template_kwargs": {"reasoning_effort": "low"}, "ignore_eos": False})
|
| 45 |
+
for x in by["chat"][:2]:
|
| 46 |
+
c.chat.completions.create(messages=x["messages"], **kw)
|
| 47 |
+
m0 = metrics(a.port)
|
| 48 |
+
res = []
|
| 49 |
+
for x in sel:
|
| 50 |
+
t = time.perf_counter()
|
| 51 |
+
r = c.chat.completions.create(messages=x["messages"], **kw)
|
| 52 |
+
dt = time.perf_counter() - t
|
| 53 |
+
msg = r.choices[0].message
|
| 54 |
+
text = (getattr(msg, "reasoning_content", None) or getattr(msg, "reasoning", None) or "") + "\x00" + (msg.content or "")
|
| 55 |
+
res.append({"id": x["id"], "cat": x["cat"], "n": r.usage.completion_tokens, "s": dt, "text": text})
|
| 56 |
+
m1 = metrics(a.port)
|
| 57 |
+
out = {"model": a.model, "per_request": res}
|
| 58 |
+
for cat in ["code", "math", "chat", "tool", "all"]:
|
| 59 |
+
rr = [r for r in res if cat == "all" or r["cat"] == cat]
|
| 60 |
+
out[cat] = sum(r["n"] for r in rr) / sum(r["s"] for r in rr)
|
| 61 |
+
d = m1["drafts"] - m0["drafts"]
|
| 62 |
+
if d > 0:
|
| 63 |
+
out["tau"] = 1 + (m1["accepted"] - m0["accepted"]) / d
|
| 64 |
+
out["accept_per_pos"] = [(m1["per_pos"][k] - m0["per_pos"].get(k, 0.0)) / d for k in sorted(m1["per_pos"])]
|
| 65 |
+
print("RESULT", json.dumps({k: (round(v, 3) if isinstance(v, float) else
|
| 66 |
+
([round(z, 3) for z in v] if isinstance(v, list) else v))
|
| 67 |
+
for k, v in out.items() if k != "per_request"}), flush=True)
|
| 68 |
+
json.dump(out, open(a.out, "w"))
|
| 69 |
+
|
| 70 |
+
|
| 71 |
+
if __name__ == "__main__":
|
| 72 |
+
main()
|
mtp_draft/compare_outputs.py
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
"""Greedy-output agreement between benchmark runs (temperature 0): identical responses and mean shared-prefix
|
| 2 |
+
fraction (characters) of each run against a reference run.
|
| 3 |
+
usage: compare_outputs.py REF.json RUN.json [RUN.json ...]"""
|
| 4 |
+
import json
|
| 5 |
+
import os
|
| 6 |
+
import sys
|
| 7 |
+
|
| 8 |
+
|
| 9 |
+
def load(p):
|
| 10 |
+
return {r["id"]: r["text"] for r in json.load(open(p))["per_request"]}
|
| 11 |
+
|
| 12 |
+
|
| 13 |
+
ref = load(sys.argv[1])
|
| 14 |
+
for p in sys.argv[2:]:
|
| 15 |
+
run = load(p)
|
| 16 |
+
same, frac = 0, []
|
| 17 |
+
for k, a in ref.items():
|
| 18 |
+
b = run.get(k, "")
|
| 19 |
+
same += a == b
|
| 20 |
+
n = next((i for i, (x, y) in enumerate(zip(a, b)) if x != y), min(len(a), len(b)))
|
| 21 |
+
frac.append(n / max(len(a), 1))
|
| 22 |
+
print(f"{os.path.basename(p):28s} identical {same}/{len(ref)} shared prefix {100 * sum(frac) / len(frac):5.1f}%")
|
mtp_draft/nvfp4_ops.py
ADDED
|
@@ -0,0 +1,54 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
"""NVFP4 linear helpers built on vLLM's own kernels (same code path on B200 sm_100 and Spark sm_121).
|
| 2 |
+
|
| 3 |
+
Two GEMM flavours for a bf16 weight W [N, K]:
|
| 4 |
+
* "marlin": weight-only NVFP4 (W4A16, Marlin kernel) - bf16 activations, best suited to decode GEMV;
|
| 5 |
+
* "cutlass": W4A4 (activations quantized to NVFP4 per call, CUTLASS block-scaled FP4 MMA).
|
| 6 |
+
"""
|
| 7 |
+
import torch
|
| 8 |
+
import torch.nn as nn
|
| 9 |
+
|
| 10 |
+
from vllm import _custom_ops as ops
|
| 11 |
+
|
| 12 |
+
FP4_MAX, E4M3_MAX = 6.0, 448.0
|
| 13 |
+
|
| 14 |
+
|
| 15 |
+
class NVFP4Linear(nn.Module):
|
| 16 |
+
def __init__(self, W: torch.Tensor, kind: str = "marlin"):
|
| 17 |
+
super().__init__()
|
| 18 |
+
assert W.dim() == 2 and W.shape[1] % 16 == 0
|
| 19 |
+
self.kind = kind
|
| 20 |
+
N, K = W.shape
|
| 21 |
+
self.output_size_per_partition, self.input_size_per_partition = N, K
|
| 22 |
+
self.params_dtype = W.dtype
|
| 23 |
+
gs = (E4M3_MAX * FP4_MAX / W.abs().amax().float().clamp(min=1e-12)).reshape(1)
|
| 24 |
+
if kind == "cutlass":
|
| 25 |
+
w4, wsf = ops.scaled_fp4_quant(W.contiguous(), gs)
|
| 26 |
+
self.register_buffer("w4", w4, persistent=False)
|
| 27 |
+
self.register_buffer("wsf", wsf, persistent=False)
|
| 28 |
+
self.register_buffer("w_gs", gs, persistent=False)
|
| 29 |
+
elif kind == "marlin":
|
| 30 |
+
from vllm.model_executor.layers.quantization.utils.marlin_utils import marlin_make_workspace_new
|
| 31 |
+
from vllm.model_executor.layers.quantization.utils.marlin_utils_fp4 import prepare_fp4_layer_for_marlin
|
| 32 |
+
w4, wsf = ops.scaled_fp4_quant(W.contiguous(), gs, is_sf_swizzled_layout=False)
|
| 33 |
+
self.weight = nn.Parameter(w4.view(torch.uint8).reshape(N, K // 2), requires_grad=False)
|
| 34 |
+
self.weight_scale = nn.Parameter(wsf.reshape(N, K // 16), requires_grad=False)
|
| 35 |
+
self.weight_global_scale = nn.Parameter((1.0 / gs).float(), requires_grad=False)
|
| 36 |
+
prepare_fp4_layer_for_marlin(self)
|
| 37 |
+
self.workspace = marlin_make_workspace_new(W.device)
|
| 38 |
+
else:
|
| 39 |
+
raise ValueError(kind)
|
| 40 |
+
|
| 41 |
+
def forward(self, x: torch.Tensor) -> torch.Tensor:
|
| 42 |
+
shp = x.shape
|
| 43 |
+
x2 = x.reshape(-1, shp[-1])
|
| 44 |
+
N = self.output_size_per_partition
|
| 45 |
+
if self.kind == "cutlass":
|
| 46 |
+
a_gs = (E4M3_MAX * FP4_MAX / x2.abs().amax().float().clamp(min=1e-12)).reshape(1)
|
| 47 |
+
a4, asf = ops.scaled_fp4_quant(x2.contiguous(), a_gs)
|
| 48 |
+
alpha = 1.0 / (a_gs * self.w_gs)
|
| 49 |
+
y = ops.cutlass_scaled_fp4_mm(a4, self.w4, asf, self.wsf, alpha, x.dtype)
|
| 50 |
+
else:
|
| 51 |
+
from vllm.model_executor.layers.quantization.utils.marlin_utils_fp4 import apply_fp4_marlin_linear
|
| 52 |
+
y = apply_fp4_marlin_linear(x2, self.weight, self.weight_scale, self.weight_global_scale,
|
| 53 |
+
self.workspace, N, self.input_size_per_partition)
|
| 54 |
+
return y.reshape(*shp[:-1], N)
|
mtp_draft/plugin/pyproject.toml
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
[build-system]
|
| 2 |
+
requires = ["setuptools>=61"]
|
| 3 |
+
build-backend = "setuptools.build_meta"
|
| 4 |
+
|
| 5 |
+
[project]
|
| 6 |
+
name = "q38-mtp-draft"
|
| 7 |
+
version = "0.1.0"
|
| 8 |
+
description = "Cheap lossless MTP drafter for Qwen3.8-Flash-Next (64k draft vocab + NVFP4 Marlin draft head / MTP linears) for vLLM 0.31 Model Runner V2"
|
| 9 |
+
requires-python = ">=3.10"
|
| 10 |
+
|
| 11 |
+
[project.entry-points."vllm.general_plugins"]
|
| 12 |
+
q38_mtp_draft = "q38_mtp_draft:main"
|
| 13 |
+
|
| 14 |
+
[tool.setuptools]
|
| 15 |
+
py-modules = ["q38_mtp_draft"]
|
mtp_draft/plugin/q38_mtp_draft.py
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
"""vLLM general plugin: install the cheap Qwen3.8-Flash-Next MTP drafter (q38_draft.py) in every vLLM process.
|
| 2 |
+
Inactive unless Q38_DRAFT_VOCAB is set, so the same environment still runs unpatched servers.
|
| 3 |
+
Q38_DRAFT_HOME directory holding q38_draft.py / nvfp4_ops.py (this repo's mtp_draft/)
|
| 4 |
+
Q38_DRAFT_VOCAB draft vocabulary mask (.pt bool[248320]); empty -> plugin inactive
|
| 5 |
+
Q38_DRAFT_HEAD_Q marlin (default) | cutlass | bf16 draft lm_head
|
| 6 |
+
Q38_DRAFT_MTP_Q marlin (default) | cutlass | bf16 MTP block BF16 linears
|
| 7 |
+
"""
|
| 8 |
+
import os
|
| 9 |
+
import sys
|
| 10 |
+
|
| 11 |
+
|
| 12 |
+
def main():
|
| 13 |
+
if not os.environ.get("Q38_DRAFT_VOCAB"):
|
| 14 |
+
return
|
| 15 |
+
home = os.environ.get("Q38_DRAFT_HOME")
|
| 16 |
+
if home and home not in sys.path:
|
| 17 |
+
sys.path.insert(0, home)
|
| 18 |
+
import q38_draft
|
| 19 |
+
q38_draft.install_from_env()
|
mtp_draft/q38_draft.py
ADDED
|
@@ -0,0 +1,112 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
"""Cheaper MTP drafter for Qwen3.8-Flash-Next (Qwen4ExpMTP) on vLLM 0.31 Model Runner V2 - lossless.
|
| 2 |
+
|
| 3 |
+
Same recipe as autotrust/Qwen3.8-27B-NVFP4-DGX-SPARK, adapted to the Flash-Next MTP layer. After
|
| 4 |
+
MTPSpeculator.load_draft_model:
|
| 5 |
+
1. the drafter gets its own lm_head restricted to a draft vocabulary (64k rows gathered from the BF16 target
|
| 6 |
+
lm_head, special tokens always kept); greedy drafting takes the argmax over the kept rows and maps it back
|
| 7 |
+
to target ids (speculative_config.use_local_argmax_reduction=True routes drafting through get_top_tokens);
|
| 8 |
+
2. that head is re-quantized to NVFP4 W4A16 (Marlin GEMV);
|
| 9 |
+
3. the BF16 linear layers of the MTP block (fc_embedding, fc_hidden, attention qkv/o, shared expert) are
|
| 10 |
+
re-quantized to NVFP4 W4A16 too. The MTP routed experts are already NVFP4 in the checkpoint; the router,
|
| 11 |
+
the hyper-connection mixers and the QSA indexer stay BF16.
|
| 12 |
+
Bytes read per draft step at batch 1: ~1.45 GB -> ~0.16 GB (BF16 248k x 2560 head = 1.27 GB alone).
|
| 13 |
+
The target model and the lm_head it verifies with are never touched, so accepted tokens are exactly the
|
| 14 |
+
target's own (greedy: identical output; sampling: same distribution).
|
| 15 |
+
|
| 16 |
+
In-process use: install() before vllm.LLM(...) with VLLM_ENABLE_V1_MULTIPROCESSING=0.
|
| 17 |
+
vllm serve: set Q38_DRAFT_VOCAB (and optionally Q38_DRAFT_HEAD_Q / Q38_DRAFT_MTP_Q) and put the directory that
|
| 18 |
+
holds sitecustomize.py (or the plugin) on PYTHONPATH; see README.
|
| 19 |
+
"""
|
| 20 |
+
import os
|
| 21 |
+
import sys
|
| 22 |
+
import types
|
| 23 |
+
|
| 24 |
+
import torch
|
| 25 |
+
import torch.nn as nn
|
| 26 |
+
import torch.nn.functional as F
|
| 27 |
+
|
| 28 |
+
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
|
| 29 |
+
|
| 30 |
+
MTP_QUANT_KEYS = ("fc_embedding", "fc_hidden", "qkv_proj", "o_proj", "shared_expert")
|
| 31 |
+
|
| 32 |
+
|
| 33 |
+
class _Bf16(nn.Module):
|
| 34 |
+
def __init__(self, W):
|
| 35 |
+
super().__init__()
|
| 36 |
+
self.register_buffer("w", W.contiguous(), persistent=False)
|
| 37 |
+
|
| 38 |
+
def forward(self, x):
|
| 39 |
+
return F.linear(x, self.w)
|
| 40 |
+
|
| 41 |
+
|
| 42 |
+
def make_linear(W, kind):
|
| 43 |
+
if kind in (None, "bf16"):
|
| 44 |
+
return _Bf16(W)
|
| 45 |
+
from nvfp4_ops import NVFP4Linear
|
| 46 |
+
return NVFP4Linear(W, kind)
|
| 47 |
+
|
| 48 |
+
|
| 49 |
+
class _QuantMethod:
|
| 50 |
+
"""quant_method replacement for a vLLM linear layer (keeps the module, swaps the GEMM)."""
|
| 51 |
+
|
| 52 |
+
def __init__(self, layer, kind):
|
| 53 |
+
layer.dq = make_linear(layer.weight.data, kind)
|
| 54 |
+
|
| 55 |
+
def apply(self, layer, x, bias=None):
|
| 56 |
+
y = layer.dq(x)
|
| 57 |
+
return y + bias if bias is not None else y
|
| 58 |
+
|
| 59 |
+
|
| 60 |
+
def install(vocab_path=None, head_q="marlin", mtp_q="marlin"):
|
| 61 |
+
import vllm.v1.worker.gpu.spec_decode.mtp.speculator as ms
|
| 62 |
+
|
| 63 |
+
if getattr(ms.MTPSpeculator.load_draft_model, "_q38", False):
|
| 64 |
+
return
|
| 65 |
+
keep = torch.load(vocab_path) if vocab_path else None
|
| 66 |
+
orig = ms.MTPSpeculator.load_draft_model
|
| 67 |
+
|
| 68 |
+
def load_draft_model(self, target_model, target_attn_layer_names):
|
| 69 |
+
model = orig(self, target_model, target_attn_layer_names)
|
| 70 |
+
W = model.lm_head.weight.data
|
| 71 |
+
assert W.dtype in (torch.bfloat16, torch.float16), W.dtype
|
| 72 |
+
V, dev = W.shape[0], W.device
|
| 73 |
+
idx = keep.nonzero()[:, 0].to(dev) if keep is not None else torch.arange(V, device=dev)
|
| 74 |
+
pad = (-idx.numel()) % 64 # NVFP4 GEMMs want N % 64 == 0: pad with copies of a kept id
|
| 75 |
+
if pad:
|
| 76 |
+
idx = torch.cat([idx, idx[:1].expand(pad)])
|
| 77 |
+
model.register_buffer("dh_idx", idx, persistent=False)
|
| 78 |
+
model.draft_head = make_linear(W[idx].contiguous(), head_q)
|
| 79 |
+
|
| 80 |
+
def get_top_tokens(self_, h):
|
| 81 |
+
return self_.dh_idx[self_.draft_head(h).argmax(-1)]
|
| 82 |
+
|
| 83 |
+
def compute_logits(self_, h, spec_step_idx=0):
|
| 84 |
+
lk = self_.draft_head(h).to(torch.float32)
|
| 85 |
+
out = lk.new_full((h.shape[0], V), float("-inf"))
|
| 86 |
+
out.index_copy_(1, self_.dh_idx, lk)
|
| 87 |
+
return out
|
| 88 |
+
|
| 89 |
+
model.get_top_tokens = types.MethodType(get_top_tokens, model)
|
| 90 |
+
model.compute_logits = types.MethodType(compute_logits, model)
|
| 91 |
+
|
| 92 |
+
done = []
|
| 93 |
+
if mtp_q not in (None, "bf16"):
|
| 94 |
+
for name, mod in model.model.named_modules():
|
| 95 |
+
w = getattr(mod, "weight", None)
|
| 96 |
+
if (hasattr(mod, "quant_method") and isinstance(w, torch.Tensor) and w.dim() == 2
|
| 97 |
+
and w.dtype == torch.bfloat16 and any(k in name for k in MTP_QUANT_KEYS)
|
| 98 |
+
and w.shape[0] % 64 == 0 and w.shape[1] % 16 == 0):
|
| 99 |
+
mod.quant_method = _QuantMethod(mod, mtp_q)
|
| 100 |
+
done.append(f"{name}{tuple(w.shape)}")
|
| 101 |
+
print(f"[q38-draft] vocab rows={idx.numel()} head_q={head_q} mtp_q={mtp_q} "
|
| 102 |
+
f"quantized MTP linears ({len(done)}): {done}", flush=True)
|
| 103 |
+
return model
|
| 104 |
+
|
| 105 |
+
load_draft_model._q38 = True
|
| 106 |
+
ms.MTPSpeculator.load_draft_model = load_draft_model
|
| 107 |
+
|
| 108 |
+
|
| 109 |
+
def install_from_env():
|
| 110 |
+
vocab = os.environ.get("Q38_DRAFT_VOCAB")
|
| 111 |
+
if vocab:
|
| 112 |
+
install(vocab, os.environ.get("Q38_DRAFT_HEAD_Q", "marlin"), os.environ.get("Q38_DRAFT_MTP_Q", "marlin"))
|
mtp_draft/results/e384_k0.json
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
{"model": "bench", "per_request": [{"id": "HumanEval/40", "cat": "code", "n": 733, "s": 8.130303506040946}, {"id": "HumanEval/41", "cat": "code", "n": 440, "s": 4.539787304005586}, {"id": "HumanEval/42", "cat": "code", "n": 179, "s": 1.9575089199934155}, {"id": "HumanEval/43", "cat": "code", "n": 880, "s": 8.902705920976587}, {"id": "HumanEval/44", "cat": "code", "n": 567, "s": 5.836228059022687}, {"id": "HumanEval/45", "cat": "code", "n": 167, "s": 1.9466947079636157}, {"id": "gsm8k/40", "cat": "math", "n": 310, "s": 3.419051099976059}, {"id": "gsm8k/41", "cat": "math", "n": 538, "s": 5.6530415719607845}, {"id": "gsm8k/42", "cat": "math", "n": 172, "s": 1.9405286890105344}, {"id": "gsm8k/43", "cat": "math", "n": 489, "s": 5.065521793963853}, {"id": "gsm8k/44", "cat": "math", "n": 411, "s": 4.2900476370123215}, {"id": "gsm8k/45", "cat": "math", "n": 345, "s": 3.6422453109989874}, {"id": "mtbench/56561594", "cat": "chat", "n": 1024, "s": 11.437336588976905}, {"id": "mtbench/3583619", "cat": "chat", "n": 987, "s": 11.046043527952861}, {"id": "mtbench/34377376", "cat": "chat", "n": 779, "s": 7.917029272008222}, {"id": "mtbench/46306085", "cat": "chat", "n": 1024, "s": 10.361933744046837}, {"id": "mtbench/50530142", "cat": "chat", "n": 1024, "s": 10.407953262969386}, {"id": "mtbench/65906068", "cat": "chat", "n": 1024, "s": 10.615801344974898}, {"id": "glaive/40", "cat": "tool", "n": 71, "s": 1.1472378979669884}, {"id": "glaive/41", "cat": "tool", "n": 154, "s": 2.0677673460450023}, {"id": "glaive/42", "cat": "tool", "n": 98, "s": 1.5471585509949364}, {"id": "glaive/43", "cat": "tool", "n": 75, "s": 1.2897625649929978}, {"id": "glaive/44", "cat": "tool", "n": 71, "s": 1.2427582450327463}, {"id": "glaive/45", "cat": "tool", "n": 71, "s": 1.2817979939864017}], "code": 94.72035142485548, "math": 94.3339800364686, "chat": 94.8757117592947, "tool": 62.96287478759206, "all": 92.55587206759951}
|
mtp_draft/results/e384_native_k3.json
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
{"model": "bench", "per_request": [{"id": "HumanEval/40", "cat": "code", "n": 729, "s": 2.8193571449955925}, {"id": "HumanEval/41", "cat": "code", "n": 414, "s": 1.816536526021082}, {"id": "HumanEval/42", "cat": "code", "n": 179, "s": 0.8623655190458521}, {"id": "HumanEval/43", "cat": "code", "n": 861, "s": 3.4580993209965527}, {"id": "HumanEval/44", "cat": "code", "n": 714, "s": 2.792955293029081}, {"id": "HumanEval/45", "cat": "code", "n": 168, "s": 0.8881401250255294}, {"id": "gsm8k/40", "cat": "math", "n": 306, "s": 1.2914673539926298}, {"id": "gsm8k/41", "cat": "math", "n": 602, "s": 2.5589306599576958}, {"id": "gsm8k/42", "cat": "math", "n": 163, "s": 0.8248845480266027}, {"id": "gsm8k/43", "cat": "math", "n": 484, "s": 1.8851654370082542}, {"id": "gsm8k/44", "cat": "math", "n": 401, "s": 1.646767117024865}, {"id": "gsm8k/45", "cat": "math", "n": 346, "s": 1.4892195700085722}, {"id": "mtbench/56561594", "cat": "chat", "n": 1024, "s": 4.092011047003325}, {"id": "mtbench/3583619", "cat": "chat", "n": 988, "s": 3.5354646220221184}, {"id": "mtbench/34377376", "cat": "chat", "n": 853, "s": 3.3598524120170623}, {"id": "mtbench/46306085", "cat": "chat", "n": 1024, "s": 3.952914358000271}, {"id": "mtbench/50530142", "cat": "chat", "n": 1024, "s": 4.454029015963897}, {"id": "mtbench/65906068", "cat": "chat", "n": 1024, "s": 4.162056330998894}, {"id": "glaive/40", "cat": "tool", "n": 71, "s": 0.4963136390433647}, {"id": "glaive/41", "cat": "tool", "n": 155, "s": 0.8203358030295931}, {"id": "glaive/42", "cat": "tool", "n": 98, "s": 0.5498547999886796}, {"id": "glaive/43", "cat": "tool", "n": 75, "s": 0.45713356899796054}, {"id": "glaive/44", "cat": "tool", "n": 71, "s": 0.45059636898804456}, {"id": "glaive/45", "cat": "tool", "n": 71, "s": 0.4265658460208215}], "code": 242.53303056076578, "math": 237.40684844907742, "chat": 252.0341903005389, "tool": 169.02024356220377, "all": 241.28650946887865, "tau": 3.392622247640835, "accept_per_pos": [0.8907635115813555, 0.7955390334572491, 0.7063197026022305]}
|
mtp_draft/results/e384_native_k5.json
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
{"model": "bench", "per_request": [{"id": "HumanEval/40", "cat": "code", "n": 703, "s": 2.354482561990153}, {"id": "HumanEval/41", "cat": "code", "n": 444, "s": 1.7421755429822952}, {"id": "HumanEval/42", "cat": "code", "n": 179, "s": 0.7637115910183638}, {"id": "HumanEval/43", "cat": "code", "n": 688, "s": 2.304368451994378}, {"id": "HumanEval/44", "cat": "code", "n": 714, "s": 2.2916528579662554}, {"id": "HumanEval/45", "cat": "code", "n": 167, "s": 0.7025055510457605}, {"id": "gsm8k/40", "cat": "math", "n": 306, "s": 1.135905829956755}, {"id": "gsm8k/41", "cat": "math", "n": 554, "s": 2.061069551971741}, {"id": "gsm8k/42", "cat": "math", "n": 171, "s": 0.7635779120028019}, {"id": "gsm8k/43", "cat": "math", "n": 461, "s": 1.5739434949937277}, {"id": "gsm8k/44", "cat": "math", "n": 408, "s": 1.3411273619858548}, {"id": "gsm8k/45", "cat": "math", "n": 342, "s": 1.1812342740013264}, {"id": "mtbench/56561594", "cat": "chat", "n": 1024, "s": 3.194308659993112}, {"id": "mtbench/3583619", "cat": "chat", "n": 977, "s": 2.977414954046253}, {"id": "mtbench/34377376", "cat": "chat", "n": 791, "s": 2.548052383994218}, {"id": "mtbench/46306085", "cat": "chat", "n": 1024, "s": 3.3816367990220897}, {"id": "mtbench/50530142", "cat": "chat", "n": 1024, "s": 4.062372940010391}, {"id": "mtbench/65906068", "cat": "chat", "n": 1024, "s": 3.7323634499916807}, {"id": "glaive/40", "cat": "tool", "n": 71, "s": 0.49537954601692036}, {"id": "glaive/41", "cat": "tool", "n": 105, "s": 0.6681176979909651}, {"id": "glaive/42", "cat": "tool", "n": 98, "s": 0.5146028829622082}, {"id": "glaive/43", "cat": "tool", "n": 75, "s": 0.556665359006729}, {"id": "glaive/44", "cat": "tool", "n": 71, "s": 0.5122391799814068}, {"id": "glaive/45", "cat": "tool", "n": 71, "s": 0.39238204003777355}], "code": 284.97189470897735, "math": 278.2722348785011, "chat": 294.73039957975766, "tool": 156.39997425682708, "all": 278.5852213651547, "tau": 4.399847386493705, "accept_per_pos": [0.8775276611980161, 0.7653567340709653, 0.6764593666539489, 0.5795497901564288, 0.5009538344143457]}
|
mtp_draft/results/e384_native_k7.json
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
{"model": "bench", "per_request": [{"id": "HumanEval/40", "cat": "code", "n": 712, "s": 2.2458303309977055}, {"id": "HumanEval/41", "cat": "code", "n": 397, "s": 1.3946112800040282}, {"id": "HumanEval/42", "cat": "code", "n": 179, "s": 0.6491682740161195}, {"id": "HumanEval/43", "cat": "code", "n": 718, "s": 2.128362638002727}, {"id": "HumanEval/44", "cat": "code", "n": 708, "s": 1.9873309560352936}, {"id": "HumanEval/45", "cat": "code", "n": 167, "s": 0.5416151629760861}, {"id": "gsm8k/40", "cat": "math", "n": 249, "s": 0.703309926961083}, {"id": "gsm8k/41", "cat": "math", "n": 522, "s": 1.8210055900271982}, {"id": "gsm8k/42", "cat": "math", "n": 166, "s": 0.6603326629847288}, {"id": "gsm8k/43", "cat": "math", "n": 471, "s": 1.3609160670312122}, {"id": "gsm8k/44", "cat": "math", "n": 413, "s": 1.306718583975453}, {"id": "gsm8k/45", "cat": "math", "n": 346, "s": 1.0891695099999197}, {"id": "mtbench/56561594", "cat": "chat", "n": 1024, "s": 2.965524340979755}, {"id": "mtbench/3583619", "cat": "chat", "n": 982, "s": 2.8919741269783117}, {"id": "mtbench/34377376", "cat": "chat", "n": 780, "s": 2.4272121600224636}, {"id": "mtbench/46306085", "cat": "chat", "n": 1024, "s": 3.3665989469736814}, {"id": "mtbench/50530142", "cat": "chat", "n": 1024, "s": 4.0905348300002515}, {"id": "mtbench/65906068", "cat": "chat", "n": 1024, "s": 3.4870682419859804}, {"id": "glaive/40", "cat": "tool", "n": 71, "s": 0.49407145904842764}, {"id": "glaive/41", "cat": "tool", "n": 123, "s": 0.7135702630039304}, {"id": "glaive/42", "cat": "tool", "n": 98, "s": 0.46649243601132184}, {"id": "glaive/43", "cat": "tool", "n": 75, "s": 0.4326253969920799}, {"id": "glaive/44", "cat": "tool", "n": 71, "s": 0.4095555520034395}, {"id": "glaive/45", "cat": "tool", "n": 71, "s": 0.3979798569926061}], "code": 322.0103049183074, "math": 312.18250786033457, "chat": 304.64541118668404, "tool": 174.65630839656896, "all": 300.1453113965595, "tau": 5.1395244504262, "accept_per_pos": [0.8689995513683266, 0.7662628981606101, 0.6603858232391207, 0.5688649618663078, 0.4908030506953791, 0.41947061462539253, 0.36473755047106327]}
|
mtp_draft/results/e384_recipe64k_k3.json
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
{"model": "bench", "per_request": [{"id": "HumanEval/40", "cat": "code", "n": 729, "s": 2.727701382013038}, {"id": "HumanEval/41", "cat": "code", "n": 414, "s": 1.7476835920242593}, {"id": "HumanEval/42", "cat": "code", "n": 179, "s": 0.7658775619929656}, {"id": "HumanEval/43", "cat": "code", "n": 861, "s": 3.1240575670381077}, {"id": "HumanEval/44", "cat": "code", "n": 714, "s": 2.5527657009661198}, {"id": "HumanEval/45", "cat": "code", "n": 168, "s": 0.8923461069935001}, {"id": "gsm8k/40", "cat": "math", "n": 306, "s": 1.2758885299554095}, {"id": "gsm8k/41", "cat": "math", "n": 602, "s": 2.479146101977676}, {"id": "gsm8k/42", "cat": "math", "n": 163, "s": 0.7538518089568242}, {"id": "gsm8k/43", "cat": "math", "n": 484, "s": 1.839121469995007}, {"id": "gsm8k/44", "cat": "math", "n": 401, "s": 1.5070016390527599}, {"id": "gsm8k/45", "cat": "math", "n": 346, "s": 1.3740820209495723}, {"id": "mtbench/56561594", "cat": "chat", "n": 1024, "s": 3.974660051986575}, {"id": "mtbench/3583619", "cat": "chat", "n": 988, "s": 3.468062022002414}, {"id": "mtbench/34377376", "cat": "chat", "n": 853, "s": 3.326899648993276}, {"id": "mtbench/46306085", "cat": "chat", "n": 1024, "s": 3.90042637498118}, {"id": "mtbench/50530142", "cat": "chat", "n": 1024, "s": 4.4263171890052035}, {"id": "mtbench/65906068", "cat": "chat", "n": 1024, "s": 4.085645671002567}, {"id": "glaive/40", "cat": "tool", "n": 71, "s": 0.4537901899893768}, {"id": "glaive/41", "cat": "tool", "n": 155, "s": 0.9037347360281274}, {"id": "glaive/42", "cat": "tool", "n": 98, "s": 0.5890757929882966}, {"id": "glaive/43", "cat": "tool", "n": 75, "s": 0.5211616730084643}, {"id": "glaive/44", "cat": "tool", "n": 71, "s": 0.4933487140224315}, {"id": "glaive/45", "cat": "tool", "n": 71, "s": 0.4984891830245033}], "code": 259.51633463447314, "math": 249.42866611721078, "chat": 256.10375263663406, "tool": 156.37644664054707, "all": 248.42110128744045, "tau": 3.307949790794979, "accept_per_pos": [0.8797768479776849, 0.7668061366806137, 0.6613668061366806]}
|
mtp_draft/results/e384_recipe64k_k5.json
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
{"model": "bench", "per_request": [{"id": "HumanEval/40", "cat": "code", "n": 703, "s": 2.5715905469842255}, {"id": "HumanEval/41", "cat": "code", "n": 444, "s": 1.5963689079508185}, {"id": "HumanEval/42", "cat": "code", "n": 179, "s": 0.7399305010330863}, {"id": "HumanEval/43", "cat": "code", "n": 688, "s": 2.2338579680072144}, {"id": "HumanEval/44", "cat": "code", "n": 714, "s": 2.232825448969379}, {"id": "HumanEval/45", "cat": "code", "n": 167, "s": 0.7399766870075837}, {"id": "gsm8k/40", "cat": "math", "n": 306, "s": 1.15714238100918}, {"id": "gsm8k/41", "cat": "math", "n": 554, "s": 2.0562278060242534}, {"id": "gsm8k/42", "cat": "math", "n": 171, "s": 0.8133257809677161}, {"id": "gsm8k/43", "cat": "math", "n": 461, "s": 1.5286793949780986}, {"id": "gsm8k/44", "cat": "math", "n": 408, "s": 1.3493359020212665}, {"id": "gsm8k/45", "cat": "math", "n": 342, "s": 1.2483290410018526}, {"id": "mtbench/56561594", "cat": "chat", "n": 1024, "s": 3.1446891850209795}, {"id": "mtbench/3583619", "cat": "chat", "n": 977, "s": 2.8968855519779027}, {"id": "mtbench/34377376", "cat": "chat", "n": 791, "s": 2.4376245160237886}, {"id": "mtbench/46306085", "cat": "chat", "n": 1024, "s": 3.3674850579700433}, {"id": "mtbench/50530142", "cat": "chat", "n": 1024, "s": 4.05100225500064}, {"id": "mtbench/65906068", "cat": "chat", "n": 1024, "s": 3.5702035660506226}, {"id": "glaive/40", "cat": "tool", "n": 71, "s": 0.5177643179777078}, {"id": "glaive/41", "cat": "tool", "n": 105, "s": 0.6613505010027438}, {"id": "glaive/42", "cat": "tool", "n": 98, "s": 0.5017052160110325}, {"id": "glaive/43", "cat": "tool", "n": 75, "s": 0.4769544790033251}, {"id": "glaive/44", "cat": "tool", "n": 71, "s": 0.4288208319921978}, {"id": "glaive/45", "cat": "tool", "n": 71, "s": 0.42839869804447517}], "code": 286.2213329154901, "math": 274.98944146632175, "chat": 301.2139456421067, "tool": 162.85272635015295, "all": 282.00898588670725, "tau": 4.3014925373134325, "accept_per_pos": [0.8686567164179104, 0.75, 0.6615671641791044, 0.5537313432835821, 0.46753731343283583]}
|
mtp_draft/results/e384_recipe64k_k7.json
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
{"model": "bench", "per_request": [{"id": "HumanEval/40", "cat": "code", "n": 712, "s": 2.0788060189806856}, {"id": "HumanEval/41", "cat": "code", "n": 397, "s": 1.2380512969684787}, {"id": "HumanEval/42", "cat": "code", "n": 179, "s": 0.5761018740013242}, {"id": "HumanEval/43", "cat": "code", "n": 718, "s": 2.004939425038174}, {"id": "HumanEval/44", "cat": "code", "n": 708, "s": 1.9182443649624474}, {"id": "HumanEval/45", "cat": "code", "n": 167, "s": 0.5227942789788358}, {"id": "gsm8k/40", "cat": "math", "n": 249, "s": 0.7487070900388062}, {"id": "gsm8k/41", "cat": "math", "n": 522, "s": 1.6979687780258246}, {"id": "gsm8k/42", "cat": "math", "n": 166, "s": 0.646616683981847}, {"id": "gsm8k/43", "cat": "math", "n": 471, "s": 1.3401818770216778}, {"id": "gsm8k/44", "cat": "math", "n": 413, "s": 1.189437868015375}, {"id": "gsm8k/45", "cat": "math", "n": 346, "s": 1.1400467989733443}, {"id": "mtbench/56561594", "cat": "chat", "n": 1024, "s": 2.917139215976931}, {"id": "mtbench/3583619", "cat": "chat", "n": 982, "s": 2.7524559579906054}, {"id": "mtbench/34377376", "cat": "chat", "n": 780, "s": 2.4050215109600686}, {"id": "mtbench/46306085", "cat": "chat", "n": 1024, "s": 3.3641807100502774}, {"id": "mtbench/50530142", "cat": "chat", "n": 1024, "s": 4.1067124850233085}, {"id": "mtbench/65906068", "cat": "chat", "n": 1024, "s": 3.5175412259995937}, {"id": "glaive/40", "cat": "tool", "n": 71, "s": 0.4751045739976689}, {"id": "glaive/41", "cat": "tool", "n": 123, "s": 0.6858198530389927}, {"id": "glaive/42", "cat": "tool", "n": 98, "s": 0.4428151000174694}, {"id": "glaive/43", "cat": "tool", "n": 75, "s": 0.41026709298603237}, {"id": "glaive/44", "cat": "tool", "n": 71, "s": 0.3740595959825441}, {"id": "glaive/45", "cat": "tool", "n": 71, "s": 0.4027617870015092}], "code": 345.4876695366444, "math": 320.4218699568157, "chat": 307.29603395733346, "tool": 182.3831491759556, "all": 308.8827079576811, "tau": 4.926514825956167, "accept_per_pos": [0.8620541469703481, 0.7494628276751182, 0.6355822948001719, 0.5371723248818221, 0.45423291792006876, 0.3807477438762355, 0.30726256983240224]}
|
mtp_draft/results/e384_recipe64k_k9.json
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
{"model": "bench", "per_request": [{"id": "HumanEval/40", "cat": "code", "n": 726, "s": 2.2813628219882958}, {"id": "HumanEval/41", "cat": "code", "n": 395, "s": 1.5880196589860134}, {"id": "HumanEval/42", "cat": "code", "n": 179, "s": 0.7044576379703358}, {"id": "HumanEval/43", "cat": "code", "n": 731, "s": 2.2817975389771163}, {"id": "HumanEval/44", "cat": "code", "n": 711, "s": 2.0792866839910857}, {"id": "HumanEval/45", "cat": "code", "n": 167, "s": 0.5578156499541365}, {"id": "gsm8k/40", "cat": "math", "n": 194, "s": 0.5612203259952366}, {"id": "gsm8k/41", "cat": "math", "n": 525, "s": 1.8817650109995157}, {"id": "gsm8k/42", "cat": "math", "n": 172, "s": 0.6732398690073751}, {"id": "gsm8k/43", "cat": "math", "n": 481, "s": 1.4211978020030074}, {"id": "gsm8k/44", "cat": "math", "n": 461, "s": 1.2046463890001178}, {"id": "gsm8k/45", "cat": "math", "n": 352, "s": 1.0732165930094197}, {"id": "mtbench/56561594", "cat": "chat", "n": 1024, "s": 3.4876003169920295}, {"id": "mtbench/3583619", "cat": "chat", "n": 1024, "s": 3.0580359949963167}, {"id": "mtbench/34377376", "cat": "chat", "n": 781, "s": 2.506533487990964}, {"id": "mtbench/46306085", "cat": "chat", "n": 1024, "s": 2.8171972099808045}, {"id": "mtbench/50530142", "cat": "chat", "n": 1024, "s": 4.456988577963784}, {"id": "mtbench/65906068", "cat": "chat", "n": 1024, "s": 3.5919092850526795}, {"id": "glaive/40", "cat": "tool", "n": 71, "s": 0.42223657004069537}, {"id": "glaive/41", "cat": "tool", "n": 171, "s": 0.7977454219944775}, {"id": "glaive/42", "cat": "tool", "n": 98, "s": 0.39193789300043136}, {"id": "glaive/43", "cat": "tool", "n": 76, "s": 0.36931639799149707}, {"id": "glaive/44", "cat": "tool", "n": 68, "s": 0.3202864989871159}, {"id": "glaive/45", "cat": "tool", "n": 71, "s": 0.3118133860407397}], "code": 306.44471485496496, "math": 320.6028335716688, "chat": 296.26074548320616, "tool": 212.37221861628046, "all": 297.37669708275394, "tau": 5.309665597801191, "accept_per_pos": [0.8625744388456252, 0.7530920751259734, 0.6284928996793404, 0.5231333027943198, 0.4406779661016949, 0.3673843334860284, 0.3005038937242327, 0.24049473202015575, 0.19331195602382042]}
|
mtp_draft/results/orig_native_k5.json
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
{"model": "bench", "per_request": [{"id": "HumanEval/40", "cat": "code", "n": 689, "s": 2.362393995979801}, {"id": "HumanEval/41", "cat": "code", "n": 495, "s": 1.9359628790407442}, {"id": "HumanEval/42", "cat": "code", "n": 179, "s": 0.6903294100193307}, {"id": "HumanEval/43", "cat": "code", "n": 944, "s": 3.16420370596461}, {"id": "HumanEval/44", "cat": "code", "n": 425, "s": 1.4295662239892408}, {"id": "HumanEval/45", "cat": "code", "n": 172, "s": 0.7223699850146659}, {"id": "gsm8k/40", "cat": "math", "n": 258, "s": 0.9329101420007646}, {"id": "gsm8k/41", "cat": "math", "n": 541, "s": 1.9815324809751473}, {"id": "gsm8k/42", "cat": "math", "n": 163, "s": 0.7296427360270172}, {"id": "gsm8k/43", "cat": "math", "n": 479, "s": 1.7465769789996557}, {"id": "gsm8k/44", "cat": "math", "n": 397, "s": 1.2734857919858769}, {"id": "gsm8k/45", "cat": "math", "n": 396, "s": 1.328218968003057}, {"id": "mtbench/56561594", "cat": "chat", "n": 1024, "s": 3.39288957597455}, {"id": "mtbench/3583619", "cat": "chat", "n": 979, "s": 2.9747322580078617}, {"id": "mtbench/34377376", "cat": "chat", "n": 833, "s": 2.504794050997589}, {"id": "mtbench/46306085", "cat": "chat", "n": 1024, "s": 3.21053582202876}, {"id": "mtbench/50530142", "cat": "chat", "n": 1024, "s": 4.134806908958126}, {"id": "mtbench/65906068", "cat": "chat", "n": 1024, "s": 3.8171016260166653}, {"id": "glaive/40", "cat": "tool", "n": 71, "s": 0.5119000870035961}, {"id": "glaive/41", "cat": "tool", "n": 174, "s": 0.8766445890069008}, {"id": "glaive/42", "cat": "tool", "n": 98, "s": 0.5194328450015746}, {"id": "glaive/43", "cat": "tool", "n": 75, "s": 0.4582692759577185}, {"id": "glaive/44", "cat": "tool", "n": 71, "s": 0.44306598301045597}, {"id": "glaive/45", "cat": "tool", "n": 71, "s": 0.41111837298376486}], "code": 281.80970194311817, "math": 279.5166904384815, "chat": 294.88601011648876, "tool": 173.8897599113674, "all": 279.3094103941716, "tau": 4.494399382000772, "accept_per_pos": [0.8895326380842024, 0.7864040169949787, 0.6925453843182696, 0.601004248744689, 0.5249130938586327]}
|
mtp_draft/run_mtp_serve.sh
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
#!/usr/bin/env bash
|
| 2 |
+
# One benchmark configuration: start vLLM serve, run the single-stream client, stop the server.
|
| 3 |
+
# usage: run_mtp_serve.sh MODEL_VIEW TAG K [DRAFT_VOCAB]
|
| 4 |
+
M=$1; TAG=$2; K=$3; V=${4:-}
|
| 5 |
+
cd /root/q38prune
|
| 6 |
+
mkdir -p results/mtp
|
| 7 |
+
while [ "$(awk '$1=="shmem"{print $2}' /sys/fs/cgroup/memory.stat)" -gt 2000000000 ]; do sleep 10; done
|
| 8 |
+
SPEC=()
|
| 9 |
+
if [ "$K" -gt 0 ]; then
|
| 10 |
+
if [ -n "$V" ]; then
|
| 11 |
+
export Q38_DRAFT_VOCAB=$V Q38_DRAFT_HEAD_Q=marlin Q38_DRAFT_MTP_Q=marlin
|
| 12 |
+
SPEC=(--speculative-config "{\"method\":\"mtp\",\"num_speculative_tokens\":$K,\"use_local_argmax_reduction\":true}")
|
| 13 |
+
else
|
| 14 |
+
unset Q38_DRAFT_VOCAB
|
| 15 |
+
SPEC=(--speculative-config "{\"method\":\"mtp\",\"num_speculative_tokens\":$K}")
|
| 16 |
+
fi
|
| 17 |
+
fi
|
| 18 |
+
./serve_vllm.sh "$M" bench 8000 --kv-cache-dtype auto --max-model-len 16384 --max-num-seqs 8 --block-size 48 \
|
| 19 |
+
--no-enable-prefix-caching --limit-mm-per-prompt '{"image":0,"video":0}' "${SPEC[@]}" > logs/mtp_serve_$TAG.log 2>&1 &
|
| 20 |
+
SP=$!
|
| 21 |
+
for i in $(seq 1 120); do curl -s localhost:8000/v1/models > /dev/null && break; sleep 10; done
|
| 22 |
+
/root/wdm/envs/jev/bin/python draft/bench_mtp_client.py --model bench --out results/mtp/$TAG.json > logs/mtp_client_$TAG.log 2>&1
|
| 23 |
+
grep RESULT logs/mtp_client_$TAG.log | cut -c1-600
|
| 24 |
+
grep -o "\[q38-draft\].*" logs/mtp_serve_$TAG.log | head -1 | cut -c1-400
|
| 25 |
+
kill $(pgrep -f "served-model-name benc[h]") 2>/dev/null
|
| 26 |
+
wait $SP 2>/dev/null
|
| 27 |
+
sleep 15
|
preprocessor_config.json
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"size": {
|
| 3 |
+
"longest_edge": 16777216,
|
| 4 |
+
"shortest_edge": 65536
|
| 5 |
+
},
|
| 6 |
+
"patch_size": 16,
|
| 7 |
+
"temporal_patch_size": 2,
|
| 8 |
+
"merge_size": 2,
|
| 9 |
+
"image_mean": [
|
| 10 |
+
0.5,
|
| 11 |
+
0.5,
|
| 12 |
+
0.5
|
| 13 |
+
],
|
| 14 |
+
"image_std": [
|
| 15 |
+
0.5,
|
| 16 |
+
0.5,
|
| 17 |
+
0.5
|
| 18 |
+
],
|
| 19 |
+
"processor_class": "Qwen3VLProcessor",
|
| 20 |
+
"image_processor_type": "Qwen2VLImageProcessorFast"
|
| 21 |
+
}
|
serve_vllm.sh
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
#!/usr/bin/env bash
|
| 2 |
+
# Serve this complete checkpoint with the vLLM layout patch shipped alongside it.
|
| 3 |
+
set -euo pipefail
|
| 4 |
+
ROOT=$(cd "$(dirname "$0")" && pwd)
|
| 5 |
+
export PYTHONPATH="$ROOT/vllm_patch${PYTHONPATH:+:$PYTHONPATH}"
|
| 6 |
+
export VLLM_WORKER_MULTIPROC_METHOD=spawn
|
| 7 |
+
export VLLM_SSM_CONV_STATE_LAYOUT=DS
|
| 8 |
+
if [ -d /usr/lib/x86_64-linux-gnu ]; then
|
| 9 |
+
export LD_LIBRARY_PATH="/usr/lib/x86_64-linux-gnu${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}"
|
| 10 |
+
fi
|
| 11 |
+
exec "${VLLM:-vllm}" serve "$ROOT" --served-model-name "${SERVED_NAME:-e384-rl}" \
|
| 12 |
+
--port "${PORT:-8000}" --tensor-parallel-size 1 --dtype bfloat16 \
|
| 13 |
+
--kv-cache-dtype fp8 --quantization modelopt_mixed --mamba-cache-mode align \
|
| 14 |
+
--enable-prefix-caching --enable-chunked-prefill --max-model-len 72000 \
|
| 15 |
+
--max-num-seqs 128 --gpu-memory-utilization 0.90 --reasoning-parser qwen3 \
|
| 16 |
+
--tool-call-parser qwen3_xml --enable-auto-tool-choice "$@"
|