ctech123 commited on
Commit
d07994b
·
0 Parent(s):

Duplicate from ctech123/Qwen3.8-Flash-Next-E384-FP4-V2

Browse files
This view is limited to 50 files because it contains too many changes.   See raw diff
Files changed (50) hide show
  1. .gitattributes +37 -0
  2. README.md +108 -0
  3. behavior_results.json +135 -0
  4. benchmark_results.json +73 -0
  5. chat_template.jinja +170 -0
  6. config.json +1682 -0
  7. expert_selection.json +1 -0
  8. generation_config.json +12 -0
  9. merges.txt +0 -0
  10. model-00001-of-00021.safetensors +3 -0
  11. model-00002-of-00021.safetensors +3 -0
  12. model-00003-of-00021.safetensors +3 -0
  13. model-00004-of-00021.safetensors +3 -0
  14. model-00005-of-00021.safetensors +3 -0
  15. model-00006-of-00021.safetensors +3 -0
  16. model-00007-of-00021.safetensors +3 -0
  17. model-00008-of-00021.safetensors +3 -0
  18. model-00009-of-00021.safetensors +3 -0
  19. model-00010-of-00021.safetensors +3 -0
  20. model-00011-of-00021.safetensors +3 -0
  21. model-00012-of-00021.safetensors +3 -0
  22. model-00013-of-00021.safetensors +3 -0
  23. model-00014-of-00021.safetensors +3 -0
  24. model-00015-of-00021.safetensors +3 -0
  25. model-00016-of-00021.safetensors +3 -0
  26. model-00017-of-00021.safetensors +3 -0
  27. model-00018-of-00021.safetensors +3 -0
  28. model-00019-of-00021.safetensors +3 -0
  29. model-00020-of-00021.safetensors +3 -0
  30. model-00021-of-00021.safetensors +3 -0
  31. model.safetensors.index.json +3 -0
  32. mtp_draft/artifacts/draft_vocab_64k.pt +3 -0
  33. mtp_draft/bench_mtp_client.py +72 -0
  34. mtp_draft/compare_outputs.py +22 -0
  35. mtp_draft/nvfp4_ops.py +54 -0
  36. mtp_draft/plugin/pyproject.toml +15 -0
  37. mtp_draft/plugin/q38_mtp_draft.py +19 -0
  38. mtp_draft/q38_draft.py +112 -0
  39. mtp_draft/results/e384_k0.json +1 -0
  40. mtp_draft/results/e384_native_k3.json +1 -0
  41. mtp_draft/results/e384_native_k5.json +1 -0
  42. mtp_draft/results/e384_native_k7.json +1 -0
  43. mtp_draft/results/e384_recipe64k_k3.json +1 -0
  44. mtp_draft/results/e384_recipe64k_k5.json +1 -0
  45. mtp_draft/results/e384_recipe64k_k7.json +1 -0
  46. mtp_draft/results/e384_recipe64k_k9.json +1 -0
  47. mtp_draft/results/orig_native_k5.json +1 -0
  48. mtp_draft/run_mtp_serve.sh +27 -0
  49. preprocessor_config.json +21 -0
  50. 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 "$@"