decider-4b-fp8: quantized weights and model card
Browse files- .gitattributes +1 -0
- README.md +79 -0
- chat_template.jinja +154 -0
- config.json +181 -0
- decider_config.json +21 -0
- generation_config.json +6 -0
- model.safetensors +3 -0
- recipe.yaml +10 -0
- tokenizer.json +3 -0
- tokenizer_config.json +32 -0
.gitattributes
CHANGED
|
@@ -33,3 +33,4 @@ saved_model/**/* 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
|
|
|
|
|
|
| 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 |
+
tokenizer.json filter=lfs diff=lfs merge=lfs -text
|
README.md
ADDED
|
@@ -0,0 +1,79 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
license: apache-2.0
|
| 3 |
+
base_model: Mapika/decider-4b
|
| 4 |
+
base_model_relation: quantized
|
| 5 |
+
language: [en]
|
| 6 |
+
pipeline_tag: text-classification
|
| 7 |
+
tags: [decision-model, calibrated, structured-output, multi-task, system-one, one-pass, fp8, llm-compressor, vllm]
|
| 8 |
+
---
|
| 9 |
+
|
| 10 |
+
# decider-4b-fp8
|
| 11 |
+
|
| 12 |
+
[Mapika/decider-4b](https://huggingface.co/Mapika/decider-4b) v2.1 quantized to FP8 for vLLM: FP8 E4M3 weights with one scale per output channel and FP8 activations scaled per token at run time. 4.85 GB against 8.41 GB for the bf16 checkpoint. Quantized and measured by LLM Tech; the model, its training and its evaluation protocol are Mapika's. Read the [bf16 card](https://huggingface.co/Mapika/decider-4b) for what the model is and how it was trained.
|
| 13 |
+
|
| 14 |
+
The base revision is `eb5fbdfc9448473ec25e399882912863afbdb70e`. Tokenizer, chat template, generation config and `decider_config.json` (temperatures included) are the author's files unchanged, apart from the `version` and `quantization` fields.
|
| 15 |
+
|
| 16 |
+
## Accuracy against the bf16 weights
|
| 17 |
+
|
| 18 |
+
Both models were run through vLLM 0.29.0 on the same rows: the author's regression set rebuilt from public data (95 tasks, 67 in-task and 28 held-out, 144,226 rows, plain state-first layout, the author's temperature map) and the 231 public JevBench items. Our bf16 run matches the author's published regression accuracy and NLL within 0.0005 (in-task 0.8308 / 0.4145 NLL, held-out 0.7838 / 0.5689 in `eval_results.json`).
|
| 19 |
+
|
| 20 |
+
| | in-task acc / NLL / ECE (67 tasks) | held-out acc / NLL / ECE (28 tasks) | JevBench easy / standard / hard |
|
| 21 |
+
|---|---|---|---|
|
| 22 |
+
| bf16 | 0.8308 / 0.4146 / 0.0302 | 0.7837 / 0.5686 / 0.0773 | 48/48, 71/72, 73/111 |
|
| 23 |
+
| FP8 | 0.8300 / 0.4157 / 0.0311 | 0.7823 / 0.5709 / 0.0788 | 48/48, 71/72, 74/111 |
|
| 24 |
+
|
| 25 |
+
Accuracy moves by -0.1 points in-task and -0.1 held-out; NLL by +0.0011 and +0.0023. Per task: lower on 44, higher on 34, equal on 17; the largest drops are fin_phrasebank (-1.2, 970 rows), commonsense_qa (-0.9, 1221 rows), openbookqa (-0.8, 500 rows), wic (-0.8, 638 rows). The public JevBench tiers are 48, 72 and 111 items; differences of one to three items are within their noise.
|
| 26 |
+
|
| 27 |
+
## Speed
|
| 28 |
+
|
| 29 |
+
vLLM 0.29.0 on one RTX PRO 6000 Blackwell Server Edition (96 GB), prefix caching off, one output token per row, unique random states. Prefill throughput is the best over batch sizes 1 to 64; latency is one request alone.
|
| 30 |
+
|
| 31 |
+
| state length | bf16 tokens/s | FP8 tokens/s | bf16 latency | FP8 latency |
|
| 32 |
+
|---|---|---|---|---|
|
| 33 |
+
| 1,024 | 38,941 | 56,393 (x1.45) | 34 ms | 24 ms |
|
| 34 |
+
| 8,192 | 36,724 | 52,205 (x1.42) | 228 ms | 160 ms |
|
| 35 |
+
| 32,768 | 30,699 | 40,786 (x1.33) | 1082 ms | 817 ms |
|
| 36 |
+
|
| 37 |
+
## Usage
|
| 38 |
+
|
| 39 |
+
The author's package serves this checkpoint as is. `decider.serve_vllm` exposes `POST /v1/systemone`, the System One request shape (TypeSafe's Jev format):
|
| 40 |
+
|
| 41 |
+
```bash
|
| 42 |
+
pip install "decider-ai[serve]==1.6.0" vllm==0.29.0 ninja # vLLM builds kernels with ninja on first start
|
| 43 |
+
DECIDER_MODEL=llmtech/decider-4b-fp8 uvicorn decider.serve_vllm:app --port 8000
|
| 44 |
+
```
|
| 45 |
+
|
| 46 |
+
```bash
|
| 47 |
+
curl -s localhost:8000/v1/systemone -H 'content-type: application/json' -d '{
|
| 48 |
+
"model": "decider",
|
| 49 |
+
"state": "My card was charged twice for the same purchase.",
|
| 50 |
+
"questions": {
|
| 51 |
+
"dept": {"type": "choice", "instructions": "Which department should handle this?",
|
| 52 |
+
"criteria": {"billing": null, "technical support": null, "sales": null}},
|
| 53 |
+
"refund": {"type": "noul", "instructions": "Does this need a refund action?"}
|
| 54 |
+
}
|
| 55 |
+
}'
|
| 56 |
+
```
|
| 57 |
+
|
| 58 |
+
The checkpoint was run only through vLLM 0.29.0 on Blackwell (SM120) here.
|
| 59 |
+
|
| 60 |
+
## What is quantized
|
| 61 |
+
|
| 62 |
+
llm-compressor 0.14.0, scheme `FP8_DYNAMIC`, no calibration data. The same modules as in the author's NVFP4 recipe stay in bf16.
|
| 63 |
+
|
| 64 |
+
| kept in bf16 | quantized |
|
| 65 |
+
|---|---|
|
| 66 |
+
| `embed_tokens`, `lm_head`, `linear_attn.conv1d`, `linear_attn.in_proj_a`, `linear_attn.in_proj_b`, norms | attention `q_proj`, `k_proj`, `v_proj`, `o_proj`; delta-net `in_proj_qkv`, `in_proj_z`, `out_proj`; MLP `gate_proj`, `up_proj`, `down_proj` (200 linear layers) |
|
| 67 |
+
|
| 68 |
+
The KV cache is not quantized.
|
| 69 |
+
|
| 70 |
+
## Limitations
|
| 71 |
+
|
| 72 |
+
* Everything in the bf16 card applies.
|
| 73 |
+
* The quantization costs 0.1 points in-task and 0.1 held-out against bf16 in the same engine.
|
| 74 |
+
* Only the regression set and the public JevBench items were re-measured; the OpenJev, Mind2Web, browser, game and Bespoke numbers of the bf16 card were not.
|
| 75 |
+
* Measured with vLLM 0.29.0 on RTX PRO 6000 Blackwell only; not with TensorRT-LLM or SGLang.
|
| 76 |
+
|
| 77 |
+
## About
|
| 78 |
+
|
| 79 |
+
Quantized and measured by [LLM Tech](https://llmtech.eu); questions go to the Community tab. Model: Apache 2.0, by [Mapika](https://huggingface.co/Mapika) ([GitHub](https://github.com/Mapika/decider)).
|
chat_template.jinja
ADDED
|
@@ -0,0 +1,154 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 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 |
+
{%- if tools and tools is iterable and tools is not mapping %}
|
| 46 |
+
{{- '<|im_start|>system\n' }}
|
| 47 |
+
{{- "# Tools\n\nYou have access to the following functions:\n\n<tools>" }}
|
| 48 |
+
{%- for tool in tools %}
|
| 49 |
+
{{- "\n" }}
|
| 50 |
+
{{- tool | tojson }}
|
| 51 |
+
{%- endfor %}
|
| 52 |
+
{{- "\n</tools>" }}
|
| 53 |
+
{{- '\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>' }}
|
| 54 |
+
{%- if messages[0].role == 'system' %}
|
| 55 |
+
{%- set content = render_content(messages[0].content, false, true)|trim %}
|
| 56 |
+
{%- if content %}
|
| 57 |
+
{{- '\n\n' + content }}
|
| 58 |
+
{%- endif %}
|
| 59 |
+
{%- endif %}
|
| 60 |
+
{{- '<|im_end|>\n' }}
|
| 61 |
+
{%- else %}
|
| 62 |
+
{%- if messages[0].role == 'system' %}
|
| 63 |
+
{%- set content = render_content(messages[0].content, false, true)|trim %}
|
| 64 |
+
{{- '<|im_start|>system\n' + content + '<|im_end|>\n' }}
|
| 65 |
+
{%- endif %}
|
| 66 |
+
{%- endif %}
|
| 67 |
+
{%- set ns = namespace(multi_step_tool=true, last_query_index=messages|length - 1) %}
|
| 68 |
+
{%- for message in messages[::-1] %}
|
| 69 |
+
{%- set index = (messages|length - 1) - loop.index0 %}
|
| 70 |
+
{%- if ns.multi_step_tool and message.role == "user" %}
|
| 71 |
+
{%- set content = render_content(message.content, false)|trim %}
|
| 72 |
+
{%- if not(content.startswith('<tool_response>') and content.endswith('</tool_response>')) %}
|
| 73 |
+
{%- set ns.multi_step_tool = false %}
|
| 74 |
+
{%- set ns.last_query_index = index %}
|
| 75 |
+
{%- endif %}
|
| 76 |
+
{%- endif %}
|
| 77 |
+
{%- endfor %}
|
| 78 |
+
{%- if ns.multi_step_tool %}
|
| 79 |
+
{{- raise_exception('No user query found in messages.') }}
|
| 80 |
+
{%- endif %}
|
| 81 |
+
{%- for message in messages %}
|
| 82 |
+
{%- set content = render_content(message.content, true)|trim %}
|
| 83 |
+
{%- if message.role == "system" %}
|
| 84 |
+
{%- if not loop.first %}
|
| 85 |
+
{{- raise_exception('System message must be at the beginning.') }}
|
| 86 |
+
{%- endif %}
|
| 87 |
+
{%- elif message.role == "user" %}
|
| 88 |
+
{{- '<|im_start|>' + message.role + '\n' + content + '<|im_end|>' + '\n' }}
|
| 89 |
+
{%- elif message.role == "assistant" %}
|
| 90 |
+
{%- set reasoning_content = '' %}
|
| 91 |
+
{%- if message.reasoning_content is string %}
|
| 92 |
+
{%- set reasoning_content = message.reasoning_content %}
|
| 93 |
+
{%- else %}
|
| 94 |
+
{%- if '</think>' in content %}
|
| 95 |
+
{%- set reasoning_content = content.split('</think>')[0].rstrip('\n').split('<think>')[-1].lstrip('\n') %}
|
| 96 |
+
{%- set content = content.split('</think>')[-1].lstrip('\n') %}
|
| 97 |
+
{%- endif %}
|
| 98 |
+
{%- endif %}
|
| 99 |
+
{%- set reasoning_content = reasoning_content|trim %}
|
| 100 |
+
{%- if loop.index0 > ns.last_query_index %}
|
| 101 |
+
{{- '<|im_start|>' + message.role + '\n<think>\n' + reasoning_content + '\n</think>\n\n' + content }}
|
| 102 |
+
{%- else %}
|
| 103 |
+
{{- '<|im_start|>' + message.role + '\n' + content }}
|
| 104 |
+
{%- endif %}
|
| 105 |
+
{%- if message.tool_calls and message.tool_calls is iterable and message.tool_calls is not mapping %}
|
| 106 |
+
{%- for tool_call in message.tool_calls %}
|
| 107 |
+
{%- if tool_call.function is defined %}
|
| 108 |
+
{%- set tool_call = tool_call.function %}
|
| 109 |
+
{%- endif %}
|
| 110 |
+
{%- if loop.first %}
|
| 111 |
+
{%- if content|trim %}
|
| 112 |
+
{{- '\n\n<tool_call>\n<function=' + tool_call.name + '>\n' }}
|
| 113 |
+
{%- else %}
|
| 114 |
+
{{- '<tool_call>\n<function=' + tool_call.name + '>\n' }}
|
| 115 |
+
{%- endif %}
|
| 116 |
+
{%- else %}
|
| 117 |
+
{{- '\n<tool_call>\n<function=' + tool_call.name + '>\n' }}
|
| 118 |
+
{%- endif %}
|
| 119 |
+
{%- if tool_call.arguments is defined %}
|
| 120 |
+
{%- for args_name, args_value in tool_call.arguments|items %}
|
| 121 |
+
{{- '<parameter=' + args_name + '>\n' }}
|
| 122 |
+
{%- set args_value = args_value | tojson | safe if args_value is mapping or (args_value is sequence and args_value is not string) else args_value | string %}
|
| 123 |
+
{{- args_value }}
|
| 124 |
+
{{- '\n</parameter>\n' }}
|
| 125 |
+
{%- endfor %}
|
| 126 |
+
{%- endif %}
|
| 127 |
+
{{- '</function>\n</tool_call>' }}
|
| 128 |
+
{%- endfor %}
|
| 129 |
+
{%- endif %}
|
| 130 |
+
{{- '<|im_end|>\n' }}
|
| 131 |
+
{%- elif message.role == "tool" %}
|
| 132 |
+
{%- if loop.previtem and loop.previtem.role != "tool" %}
|
| 133 |
+
{{- '<|im_start|>user' }}
|
| 134 |
+
{%- endif %}
|
| 135 |
+
{{- '\n<tool_response>\n' }}
|
| 136 |
+
{{- content }}
|
| 137 |
+
{{- '\n</tool_response>' }}
|
| 138 |
+
{%- if not loop.last and loop.nextitem.role != "tool" %}
|
| 139 |
+
{{- '<|im_end|>\n' }}
|
| 140 |
+
{%- elif loop.last %}
|
| 141 |
+
{{- '<|im_end|>\n' }}
|
| 142 |
+
{%- endif %}
|
| 143 |
+
{%- else %}
|
| 144 |
+
{{- raise_exception('Unexpected message role.') }}
|
| 145 |
+
{%- endif %}
|
| 146 |
+
{%- endfor %}
|
| 147 |
+
{%- if add_generation_prompt %}
|
| 148 |
+
{{- '<|im_start|>assistant\n' }}
|
| 149 |
+
{%- if enable_thinking is defined and enable_thinking is false %}
|
| 150 |
+
{{- '<think>\n\n</think>\n\n' }}
|
| 151 |
+
{%- else %}
|
| 152 |
+
{{- '<think>\n' }}
|
| 153 |
+
{%- endif %}
|
| 154 |
+
{%- endif %}
|
config.json
ADDED
|
@@ -0,0 +1,181 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"architectures": [
|
| 3 |
+
"Qwen3_5ForCausalLM"
|
| 4 |
+
],
|
| 5 |
+
"attention_bias": false,
|
| 6 |
+
"attention_dropout": 0.0,
|
| 7 |
+
"attn_output_gate": true,
|
| 8 |
+
"bos_token_id": null,
|
| 9 |
+
"dtype": "bfloat16",
|
| 10 |
+
"eos_token_id": 248044,
|
| 11 |
+
"full_attention_interval": 4,
|
| 12 |
+
"head_dim": 256,
|
| 13 |
+
"hidden_act": "silu",
|
| 14 |
+
"hidden_size": 2560,
|
| 15 |
+
"initializer_range": 0.02,
|
| 16 |
+
"intermediate_size": 9216,
|
| 17 |
+
"layer_types": [
|
| 18 |
+
"linear_attention",
|
| 19 |
+
"linear_attention",
|
| 20 |
+
"linear_attention",
|
| 21 |
+
"full_attention",
|
| 22 |
+
"linear_attention",
|
| 23 |
+
"linear_attention",
|
| 24 |
+
"linear_attention",
|
| 25 |
+
"full_attention",
|
| 26 |
+
"linear_attention",
|
| 27 |
+
"linear_attention",
|
| 28 |
+
"linear_attention",
|
| 29 |
+
"full_attention",
|
| 30 |
+
"linear_attention",
|
| 31 |
+
"linear_attention",
|
| 32 |
+
"linear_attention",
|
| 33 |
+
"full_attention",
|
| 34 |
+
"linear_attention",
|
| 35 |
+
"linear_attention",
|
| 36 |
+
"linear_attention",
|
| 37 |
+
"full_attention",
|
| 38 |
+
"linear_attention",
|
| 39 |
+
"linear_attention",
|
| 40 |
+
"linear_attention",
|
| 41 |
+
"full_attention",
|
| 42 |
+
"linear_attention",
|
| 43 |
+
"linear_attention",
|
| 44 |
+
"linear_attention",
|
| 45 |
+
"full_attention",
|
| 46 |
+
"linear_attention",
|
| 47 |
+
"linear_attention",
|
| 48 |
+
"linear_attention",
|
| 49 |
+
"full_attention"
|
| 50 |
+
],
|
| 51 |
+
"linear_conv_kernel_dim": 4,
|
| 52 |
+
"linear_key_head_dim": 128,
|
| 53 |
+
"linear_num_key_heads": 16,
|
| 54 |
+
"linear_num_value_heads": 32,
|
| 55 |
+
"linear_value_head_dim": 128,
|
| 56 |
+
"mamba_ssm_dtype": "float32",
|
| 57 |
+
"max_position_embeddings": 262144,
|
| 58 |
+
"mlp_only_layers": [],
|
| 59 |
+
"model_type": "qwen3_5_text",
|
| 60 |
+
"mtp_num_hidden_layers": 1,
|
| 61 |
+
"mtp_use_dedicated_embeddings": false,
|
| 62 |
+
"num_attention_heads": 16,
|
| 63 |
+
"num_hidden_layers": 32,
|
| 64 |
+
"num_key_value_heads": 4,
|
| 65 |
+
"pad_token_id": null,
|
| 66 |
+
"partial_rotary_factor": 0.25,
|
| 67 |
+
"quantization_config": {
|
| 68 |
+
"config_groups": {
|
| 69 |
+
"group_0": {
|
| 70 |
+
"format": "float-quantized",
|
| 71 |
+
"input_activations": {
|
| 72 |
+
"actorder": null,
|
| 73 |
+
"block_structure": null,
|
| 74 |
+
"dynamic": true,
|
| 75 |
+
"group_size": null,
|
| 76 |
+
"num_bits": 8,
|
| 77 |
+
"observer": null,
|
| 78 |
+
"observer_kwargs": {},
|
| 79 |
+
"scale_dtype": null,
|
| 80 |
+
"strategy": "token",
|
| 81 |
+
"symmetric": true,
|
| 82 |
+
"type": "float",
|
| 83 |
+
"zp_dtype": null
|
| 84 |
+
},
|
| 85 |
+
"output_activations": null,
|
| 86 |
+
"targets": [
|
| 87 |
+
"Linear"
|
| 88 |
+
],
|
| 89 |
+
"weights": {
|
| 90 |
+
"actorder": null,
|
| 91 |
+
"block_structure": null,
|
| 92 |
+
"dynamic": false,
|
| 93 |
+
"group_size": null,
|
| 94 |
+
"num_bits": 8,
|
| 95 |
+
"observer": "memoryless_minmax",
|
| 96 |
+
"observer_kwargs": {},
|
| 97 |
+
"scale_dtype": null,
|
| 98 |
+
"strategy": "channel",
|
| 99 |
+
"symmetric": true,
|
| 100 |
+
"type": "float",
|
| 101 |
+
"zp_dtype": null
|
| 102 |
+
}
|
| 103 |
+
}
|
| 104 |
+
},
|
| 105 |
+
"format": "float-quantized",
|
| 106 |
+
"global_compression_ratio": null,
|
| 107 |
+
"ignore": [
|
| 108 |
+
"model.language_model.layers.0.linear_attn.in_proj_b",
|
| 109 |
+
"model.language_model.layers.0.linear_attn.in_proj_a",
|
| 110 |
+
"model.language_model.layers.1.linear_attn.in_proj_b",
|
| 111 |
+
"model.language_model.layers.1.linear_attn.in_proj_a",
|
| 112 |
+
"model.language_model.layers.2.linear_attn.in_proj_b",
|
| 113 |
+
"model.language_model.layers.2.linear_attn.in_proj_a",
|
| 114 |
+
"model.language_model.layers.4.linear_attn.in_proj_b",
|
| 115 |
+
"model.language_model.layers.4.linear_attn.in_proj_a",
|
| 116 |
+
"model.language_model.layers.5.linear_attn.in_proj_b",
|
| 117 |
+
"model.language_model.layers.5.linear_attn.in_proj_a",
|
| 118 |
+
"model.language_model.layers.6.linear_attn.in_proj_b",
|
| 119 |
+
"model.language_model.layers.6.linear_attn.in_proj_a",
|
| 120 |
+
"model.language_model.layers.8.linear_attn.in_proj_b",
|
| 121 |
+
"model.language_model.layers.8.linear_attn.in_proj_a",
|
| 122 |
+
"model.language_model.layers.9.linear_attn.in_proj_b",
|
| 123 |
+
"model.language_model.layers.9.linear_attn.in_proj_a",
|
| 124 |
+
"model.language_model.layers.10.linear_attn.in_proj_b",
|
| 125 |
+
"model.language_model.layers.10.linear_attn.in_proj_a",
|
| 126 |
+
"model.language_model.layers.12.linear_attn.in_proj_b",
|
| 127 |
+
"model.language_model.layers.12.linear_attn.in_proj_a",
|
| 128 |
+
"model.language_model.layers.13.linear_attn.in_proj_b",
|
| 129 |
+
"model.language_model.layers.13.linear_attn.in_proj_a",
|
| 130 |
+
"model.language_model.layers.14.linear_attn.in_proj_b",
|
| 131 |
+
"model.language_model.layers.14.linear_attn.in_proj_a",
|
| 132 |
+
"model.language_model.layers.16.linear_attn.in_proj_b",
|
| 133 |
+
"model.language_model.layers.16.linear_attn.in_proj_a",
|
| 134 |
+
"model.language_model.layers.17.linear_attn.in_proj_b",
|
| 135 |
+
"model.language_model.layers.17.linear_attn.in_proj_a",
|
| 136 |
+
"model.language_model.layers.18.linear_attn.in_proj_b",
|
| 137 |
+
"model.language_model.layers.18.linear_attn.in_proj_a",
|
| 138 |
+
"model.language_model.layers.20.linear_attn.in_proj_b",
|
| 139 |
+
"model.language_model.layers.20.linear_attn.in_proj_a",
|
| 140 |
+
"model.language_model.layers.21.linear_attn.in_proj_b",
|
| 141 |
+
"model.language_model.layers.21.linear_attn.in_proj_a",
|
| 142 |
+
"model.language_model.layers.22.linear_attn.in_proj_b",
|
| 143 |
+
"model.language_model.layers.22.linear_attn.in_proj_a",
|
| 144 |
+
"model.language_model.layers.24.linear_attn.in_proj_b",
|
| 145 |
+
"model.language_model.layers.24.linear_attn.in_proj_a",
|
| 146 |
+
"model.language_model.layers.25.linear_attn.in_proj_b",
|
| 147 |
+
"model.language_model.layers.25.linear_attn.in_proj_a",
|
| 148 |
+
"model.language_model.layers.26.linear_attn.in_proj_b",
|
| 149 |
+
"model.language_model.layers.26.linear_attn.in_proj_a",
|
| 150 |
+
"model.language_model.layers.28.linear_attn.in_proj_b",
|
| 151 |
+
"model.language_model.layers.28.linear_attn.in_proj_a",
|
| 152 |
+
"model.language_model.layers.29.linear_attn.in_proj_b",
|
| 153 |
+
"model.language_model.layers.29.linear_attn.in_proj_a",
|
| 154 |
+
"model.language_model.layers.30.linear_attn.in_proj_b",
|
| 155 |
+
"model.language_model.layers.30.linear_attn.in_proj_a",
|
| 156 |
+
"lm_head"
|
| 157 |
+
],
|
| 158 |
+
"kv_cache_scheme": null,
|
| 159 |
+
"quant_method": "compressed-tensors",
|
| 160 |
+
"quantization_status": "compressed",
|
| 161 |
+
"sparsity_config": {},
|
| 162 |
+
"transform_config": {},
|
| 163 |
+
"version": "0.19.0"
|
| 164 |
+
},
|
| 165 |
+
"rms_norm_eps": 1e-06,
|
| 166 |
+
"rope_parameters": {
|
| 167 |
+
"mrope_interleaved": true,
|
| 168 |
+
"mrope_section": [
|
| 169 |
+
11,
|
| 170 |
+
11,
|
| 171 |
+
10
|
| 172 |
+
],
|
| 173 |
+
"partial_rotary_factor": 0.25,
|
| 174 |
+
"rope_theta": 10000000,
|
| 175 |
+
"rope_type": "default"
|
| 176 |
+
},
|
| 177 |
+
"tie_word_embeddings": true,
|
| 178 |
+
"transformers_version": "5.17.0",
|
| 179 |
+
"use_cache": true,
|
| 180 |
+
"vocab_size": 248320
|
| 181 |
+
}
|
decider_config.json
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"temperature": 1.099,
|
| 3 |
+
"temperature_by_type": {
|
| 4 |
+
"choice": 1.11,
|
| 5 |
+
"noul": 1.56,
|
| 6 |
+
"score": 1.287
|
| 7 |
+
},
|
| 8 |
+
"neutralize_none": false,
|
| 9 |
+
"version": "4b-v2.1-fp8-llmtech",
|
| 10 |
+
"base": "Mapika/decider-4b v1 + LoRA (merged); v1 is Qwen/Qwen3.5-4B-Base + one supervised pass over mixture v2",
|
| 11 |
+
"layout": "plain",
|
| 12 |
+
"max_options": 255,
|
| 13 |
+
"max_state_tokens": 32768,
|
| 14 |
+
"schema_first": false,
|
| 15 |
+
"schema_first_trained": false,
|
| 16 |
+
"isolated_levels": true,
|
| 17 |
+
"release_date": "2026-09-24",
|
| 18 |
+
"requires": "decider-ai>=1.4.0 for temperature_by_type; older versions serve every answer at temperature",
|
| 19 |
+
"stage": "decider-4b v1 + LoRA rank 64 (alpha 128) on attention and MLP, LR 1e-4, 2 epochs (1,518 steps of 65,536 tokens) over v2's 29,325-row mix in the plain state-first layout (generated decision families with code-computed answers, Qwen3.6-27B-written document questions kept when two independent answers agreed, human-labelled public sets, replay of v1's mixture v2), with the replay rows trained toward v1's own answer distribution (KL to v1) instead of their labels, merged into the bf16 weights; no RL stage; temperature fitted by NLL on 61 in-task regression tasks (the 67 in-task tasks without banking77, clinc_oos, mmlu, arc, winogrande, hellaswag); temperature_by_type fitted with decider.calibrate.fit_by_type on the same regression rows plus our own validation rows (choice, noul and score answers)",
|
| 20 |
+
"quantization": "FP8_DYNAMIC (llm-compressor 0.14.0, compressed-tensors 0.19.0): FP8 E4M3 weights per output channel, FP8 activations scaled per token at run time, no calibration data; reference: bf16 Mapika/decider-4b v2.1"
|
| 21 |
+
}
|
generation_config.json
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"_from_model_config": true,
|
| 3 |
+
"eos_token_id": 248044,
|
| 4 |
+
"transformers_version": "5.17.0",
|
| 5 |
+
"use_cache": true
|
| 6 |
+
}
|
model.safetensors
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:1db8cbc7afbb216a705cd1a109e754f94cb8991e11419790b72f13ae89274f85
|
| 3 |
+
size 4848688760
|
recipe.yaml
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
default_stage:
|
| 2 |
+
default_modifiers:
|
| 3 |
+
QuantizationModifier:
|
| 4 |
+
targets: [Linear]
|
| 5 |
+
ignore: [lm_head, 're:(^|.*\.)lm_head$', 're:.*embed_tokens$', 're:.*linear_attn\.in_proj_a$',
|
| 6 |
+
're:.*linear_attn\.in_proj_b$', 're:.*linear_attn\.conv1d$', 're:(^|.*\.)mtp\..*',
|
| 7 |
+
're:.*visual.*']
|
| 8 |
+
scheme: FP8_DYNAMIC
|
| 9 |
+
bypass_divisibility_checks: false
|
| 10 |
+
requires_calibration_data: false
|
tokenizer.json
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:06b9509352d2af50381ab2247e083b80d32d5c0aba91c272ca9ff729b6a0e523
|
| 3 |
+
size 19989325
|
tokenizer_config.json
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"add_prefix_space": false,
|
| 3 |
+
"audio_bos_token": "<|audio_start|>",
|
| 4 |
+
"audio_eos_token": "<|audio_end|>",
|
| 5 |
+
"audio_token": "<|audio_pad|>",
|
| 6 |
+
"backend": "tokenizers",
|
| 7 |
+
"bos_token": null,
|
| 8 |
+
"clean_up_tokenization_spaces": false,
|
| 9 |
+
"eos_token": "<|endoftext|>",
|
| 10 |
+
"errors": "replace",
|
| 11 |
+
"image_token": "<|image_pad|>",
|
| 12 |
+
"is_local": true,
|
| 13 |
+
"local_files_only": false,
|
| 14 |
+
"model_max_length": 262144,
|
| 15 |
+
"model_specific_special_tokens": {
|
| 16 |
+
"audio_bos_token": "<|audio_start|>",
|
| 17 |
+
"audio_eos_token": "<|audio_end|>",
|
| 18 |
+
"audio_token": "<|audio_pad|>",
|
| 19 |
+
"image_token": "<|image_pad|>",
|
| 20 |
+
"video_token": "<|video_pad|>",
|
| 21 |
+
"vision_bos_token": "<|vision_start|>",
|
| 22 |
+
"vision_eos_token": "<|vision_end|>"
|
| 23 |
+
},
|
| 24 |
+
"pad_token": "<|endoftext|>",
|
| 25 |
+
"pretokenize_regex": "(?i:'s|'t|'re|'ve|'m|'ll|'d)|[^\\r\\n\\p{L}\\p{N}]?[\\p{L}\\p{M}]+|\\p{N}| ?[^\\s\\p{L}\\p{M}\\p{N}]+[\\r\\n]*|\\s*[\\r\\n]+|\\s+(?!\\S)|\\s+",
|
| 26 |
+
"split_special_tokens": false,
|
| 27 |
+
"tokenizer_class": "Qwen2Tokenizer",
|
| 28 |
+
"unk_token": null,
|
| 29 |
+
"video_token": "<|video_pad|>",
|
| 30 |
+
"vision_bos_token": "<|vision_start|>",
|
| 31 |
+
"vision_eos_token": "<|vision_end|>"
|
| 32 |
+
}
|