AutomatosX commited on
Commit
2c67fa6
·
verified ·
1 Parent(s): 195ecdf

Publish no-MTP sibling of certified MTP pack (language path identical; mtp.safetensors omitted).

Browse files
.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,178 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ license: apache-2.0
3
+ library_name: mlx
4
+ base_model: Qwen/Qwen3.6-35B-A3B
5
+ base_model_relation: quantized
6
+ pipeline_tag: text-generation
7
+ tags:
8
+ - mlx
9
+ - apple-silicon
10
+ - quantized
11
+ - mixed-precision
12
+ - axquant
13
+ - axq
14
+ - development
15
+ - qwen3.6
16
+ - 6bit
17
+ - 6-bit
18
+ - vision
19
+ ---
20
+
21
+ # AX-Qwen3.6-35B-A3B-MLX-AXQ-6bit
22
+
23
+ An **AXQuant (AXQ)** mixed-precision MLX checkpoint for Apple Silicon, converted directly from
24
+ the BF16 source model. The language path is quantized while the vision tower are preserved at BF16 in the checkpoint (or a bound sidecar when present).
25
+
26
+ > **Development evidence — not a certified AXQuant release.** This package has conversion and
27
+ > artifact-integrity records, but it does not publish measured quality, long-context, kernel-speed,
28
+ > or MTP-speed evidence. Do not interpret the AXQ product label as a benchmark claim.
29
+
30
+
31
+ ## Model details
32
+
33
+ | Property | Value |
34
+ | --- | --- |
35
+ | Base model | [Qwen/Qwen3.6-35B-A3B](https://huggingface.co/Qwen/Qwen3.6-35B-A3B/tree/995ad96eacd98c81ed38be0c5b274b04031597b0) |
36
+ | Source revision | `995ad96eacd98c81ed38be0c5b274b04031597b0` |
37
+ | Product family | `qwen3.6` |
38
+ | Source architecture | `Qwen3_5MoeForConditionalGeneration` (mixture of experts (MoE)); text path optimized |
39
+ | Main-model parameters | 35.11B logical parameters |
40
+ | Quantizer | AXQuant `1.2.0` |
41
+ | Hub budget class | `6bit` |
42
+ | AXQuant base precision class | `6bit` |
43
+ | Planned storage-adjusted BPW | 5.6242 |
44
+ | Measured main-model BPW | 5.7595 |
45
+ | Measured total BPW | **5.6242** |
46
+ | Safetensors weight size | 25.27 GB |
47
+ | Approximate complete download | 25.30 GB |
48
+ | Configured maximum context | 262,144 tokens; practical limits depend on unified memory |
49
+ | Primary MLX runtime | MLX-LM |
50
+ | AX Engine native execution | Not established; no validated native manifest is included |
51
+ | MTP present | `False` |
52
+ | Vision present | `True` |
53
+ | Audio present | `False` |
54
+
55
+ This repository contains MLX Safetensors. It does **not** contain PyTorch or GGUF weights.
56
+
57
+ ## Choosing an AXQ pack
58
+
59
+ AXQ names describe a **storage-budget product class**, not one uniform precision applied to every
60
+ tensor. Protected tensors remain at higher precision, so the exact measured BPW is authoritative.
61
+ In particular, a `6bit`-named mixed plan may retain `4bit` as its base precision while selecting
62
+ 6-bit, 8-bit, or BF16 for other tensors to meet an approximately 6-BPW total budget. Protection
63
+ floors can also raise a `4bit`-named pack close to (or above) a `6bit` budget on small or heavily
64
+ protected models. When that collapse happens, AutomatosX does **not** publish a separate
65
+ misleading `4bit` sibling for that base.
66
+
67
+
68
+ | Sibling | Intended trade-off |
69
+ | --- | --- |
70
+ | [4bit sibling](https://huggingface.co/AutomatosX/AX-Qwen3.6-35B-A3B-MLX-AXQ-4bit) | Lower-storage AXQ budget; check its exact BPW |
71
+ | [6bit sibling](https://huggingface.co/AutomatosX/AX-Qwen3.6-35B-A3B-MLX-AXQ-6bit) | Higher average precision near the 6-BPW budget |
72
+
73
+ See the [AutomatosX collections](https://huggingface.co/AutomatosX/collections)
74
+ for the family catalog, or the [complete index](https://huggingface.co/collections/AutomatosX/automatosx-mlx-model-catalog).
75
+
76
+ ## Download
77
+
78
+ ```bash
79
+ python -m pip install -U huggingface_hub
80
+ hf download AutomatosX/AX-Qwen3.6-35B-A3B-MLX-AXQ-6bit --local-dir ./AX-Qwen3.6-35B-A3B-MLX-AXQ-6bit
81
+ ```
82
+
83
+ Allow at least 25.30 GB of free disk space. Pin the resulting Hub commit in reproducible
84
+ deployments rather than relying indefinitely on `main`.
85
+
86
+ ## Run with MLX-LM
87
+
88
+ ```bash
89
+ python -m pip install -U mlx-lm
90
+ mlx_lm.generate \
91
+ --model AutomatosX/AX-Qwen3.6-35B-A3B-MLX-AXQ-6bit \
92
+ --prompt "Explain mixed-precision quantization in three sentences." \
93
+ --max-tokens 128 \
94
+ --temp 0.0
95
+ ```
96
+
97
+ MLX-LM compatibility covers standard **text/backbone inference**. It may ignore AXQuant runtime
98
+ metadata and optional sidecars (`vision.safetensors`, `mtp.safetensors`); this command therefore
99
+ does not establish MTP acceleration or vision-language quality. The artifact records MLX
100
+ `0.32.0` and MLX-LM `0.31.3` from conversion.
101
+
102
+ ## AX Engine status
103
+
104
+ This package does **not** include a validated native `model-manifest.json`, so AX Engine execution
105
+ is not established by this release. The AX Engine fields in `axquant_runtime.json` describe the
106
+ intended compatibility contract, not observed runtime evidence. Use the architecture-specific MLX
107
+ runtime path above. The artifact records AX Engine version
108
+ `not recorded`, but version discovery alone is not a runtime check.
109
+
110
+ ## Quantization layout
111
+
112
+ | Main-weight precision | Parameters | Share |
113
+ | --- | ---: | ---: |
114
+ | `4bit` | 24.70B | 68.69% |
115
+ | `6bit` | 8.75B | 24.35% |
116
+ | `8bit` | 701.90M | 1.95% |
117
+ | `bf16` | 1.80B | 5.01% |
118
+
119
+ - Quantization methods: `affine, bf16`.
120
+ - Group sizes used by quantized assignments: `32, 64`.
121
+ - MTP sidecar: not included.
122
+ - Vision sidecar: 333 tensors, 446.57M parameters, 0.89 GB, BF16.
123
+ - Vision weights: protected BF16 sidecar.
124
+ - Optimization scope: `text-path`.
125
+ - Support tier: `convertible`.
126
+
127
+ BF16 sidecars, when present, are included in total download size. Their presence does not by itself
128
+ establish MTP acceleration or vision-language quality.
129
+
130
+ ## Evidence and validation status
131
+
132
+ | Check | Status |
133
+ | --- | --- |
134
+ | Planning evidence | `architecture_prior` |
135
+ | Calibration | none; the allocation is based on architecture priors |
136
+ | Quantizer execution | 469/469 recorded module conversions succeeded; 0 fallbacks |
137
+ | AX Engine native manifest | not included |
138
+ | Quality versus BF16 or uniform baselines | Not published; no quality-retention claim |
139
+ | MTP acceptance and speed | not measured; no MTP speedup claim |
140
+ | AX Engine kernel evidence | `unmeasured` |
141
+ | Vision-language quality | Not evaluated or claimed; vision tensors are preserved at BF16 |
142
+ | Speech-recognition quality | Not applicable |
143
+ | Long-context quality | 262,144-token capacity is config metadata, not a validated claim |
144
+ | Release certification | **Not certified**; formal AXQuant M0-M8 gates are not closed |
145
+
146
+ ## Intended use and limitations
147
+
148
+ - Intended for local development and evaluation on Apple Silicon with MLX-compatible runtimes.
149
+ - No minimum unified-memory figure is claimed; loadability depends on model size, context length,
150
+ KV-cache policy, runtime buffers, and other processes using unified memory.
151
+ - Architecture-prior allocation is not measured sensitivity. It must not be presented as measured
152
+ model quality.
153
+ - Vision weights are preserved at BF16, but this release does not claim validated VLM quality.
154
+ - The configured context window can require substantially more memory as the KV cache grows.
155
+ - AX Engine execution is not established because this package has no validated native manifest.
156
+
157
+ - Upstream capabilities, limitations, biases, and responsible-use guidance still apply.
158
+
159
+ ## Provenance and audit files
160
+
161
+ - [`axquant_manifest.json`](axquant_manifest.json): package identity, byte accounting, runtime
162
+ contract, software versions, and file checksums.
163
+ - [`axquant_plan.json`](axquant_plan.json): per-tensor precision decisions and planning evidence.
164
+ - [`axquant_quantizer_execution.json`](axquant_quantizer_execution.json): conversion coverage and
165
+ fallback records.
166
+ - [`axquant_runtime.json`](axquant_runtime.json): declared AX Engine and MLX compatibility metadata; runtime checks remain separate evidence.
167
+ - [`axquant_vision_sidecar_manifest.json`](axquant_vision_sidecar_manifest.json): protected vision tensor provenance.
168
+
169
+ All published provenance uses repository-relative paths. Local source paths are stripped before
170
+ publication. The checkpoint was converted from BF16 rather than re-quantized from an OptiQ
171
+ artifact. If an OptiQ repository is published separately, it uses a different quantizer and
172
+ should not be assumed to have identical BPW or quality.
173
+
174
+ ## License
175
+
176
+ The checkpoint follows the upstream model license where applicable (often Apache License 2.0). See
177
+ the [Qwen/Qwen3.6-35B-A3B model card](https://huggingface.co/Qwen/Qwen3.6-35B-A3B/tree/995ad96eacd98c81ed38be0c5b274b04031597b0) for license terms, model
178
+ limitations, and responsible-use guidance.
axquant_manifest.json ADDED
@@ -0,0 +1,220 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "axquant_version": "1.2.0",
3
+ "calibration": null,
4
+ "created_at": "2026-08-05T13:39:34.268276Z",
5
+ "effective_bpw": 5.62416175382127,
6
+ "files": [
7
+ {
8
+ "path": "README.md",
9
+ "sha256": "45c5ef4cc3d23cdf72529002aea36008f068e0bfdf9d128409dd55fb831242f7",
10
+ "size_bytes": 8054
11
+ },
12
+ {
13
+ "path": "axquant_plan.json",
14
+ "sha256": "e6e5d4059b5f677b6f63d966eebba6129a5e24717d23d289e6fb3b620326dfc9",
15
+ "size_bytes": 971223
16
+ },
17
+ {
18
+ "path": "axquant_quantizer_execution.json",
19
+ "sha256": "63c5c0a18374a0559bf5227a7bbbdbb5e8e184b23b377a06537fb055a4a57686",
20
+ "size_bytes": 124464
21
+ },
22
+ {
23
+ "path": "axquant_runtime.json",
24
+ "sha256": "4c7df1a009cc989f9dedd9113b377c88e52235e55dbd209b1ab5466eda033620",
25
+ "size_bytes": 1676
26
+ },
27
+ {
28
+ "path": "axquant_vision_sidecar_manifest.json",
29
+ "sha256": "af9e491342387394a21292114a19b464357375314c30b1799b168d3120c1e84d",
30
+ "size_bytes": 1072
31
+ },
32
+ {
33
+ "path": "chat_template.jinja",
34
+ "sha256": "e84f32a23fdda27689f868aa4a1a5621f41133e51a48d7f3efcbea2839574259",
35
+ "size_bytes": 7764
36
+ },
37
+ {
38
+ "path": "config.json",
39
+ "sha256": "30898a68ce3c1dc40ef83ae9ca8606013e97e1a6e9281409c9351395e4ff03ba",
40
+ "size_bytes": 138993
41
+ },
42
+ {
43
+ "path": "generation_config.json",
44
+ "sha256": "e70c136c1b78ddc1fb0905bac8e733a4dc448d4f852a5dd75143fffc70be550e",
45
+ "size_bytes": 202
46
+ },
47
+ {
48
+ "path": "model-00001-of-00005.safetensors",
49
+ "sha256": "860f667408f32e2353c15e7f88efcb8882b5e93e73afc222cb29b9cdf3a89c44",
50
+ "size_bytes": 5367600594
51
+ },
52
+ {
53
+ "path": "model-00002-of-00005.safetensors",
54
+ "sha256": "2dba4e082f746e20d94ee9623e5ba879379a1c2a9079bcf79a457df5b8856e29",
55
+ "size_bytes": 5358260540
56
+ },
57
+ {
58
+ "path": "model-00003-of-00005.safetensors",
59
+ "sha256": "f6c517b13633c3c3455f8c1f05b7a804fa0e6bcecb091f61a2c7cb825436e8ba",
60
+ "size_bytes": 5349479920
61
+ },
62
+ {
63
+ "path": "model-00004-of-00005.safetensors",
64
+ "sha256": "d2fbee3ba144584f68333788d2d31f0339a51d4aa6f0d5cbfdfd8c5260b0333c",
65
+ "size_bytes": 5252632964
66
+ },
67
+ {
68
+ "path": "model-00005-of-00005.safetensors",
69
+ "sha256": "860cfe8a94c0b2d8ca4ab509545096e5af73b480724147e1ffc92e2ce02b0df0",
70
+ "size_bytes": 3053704637
71
+ },
72
+ {
73
+ "path": "model.safetensors.index.json",
74
+ "sha256": "e2316c3702cf36cd3ed4a1ce3aa9cd507a3832944b3e8e99a1b10258da701e92",
75
+ "size_bytes": 186677
76
+ },
77
+ {
78
+ "path": "mtplx_runtime.json",
79
+ "sha256": "119b930ed4b470a08008aa2a51b4a83162907a85b8455f559cffa03e33236ed6",
80
+ "size_bytes": 108
81
+ },
82
+ {
83
+ "path": "tokenizer.json",
84
+ "sha256": "06b9509352d2af50381ab2247e083b80d32d5c0aba91c272ca9ff729b6a0e523",
85
+ "size_bytes": 19989325
86
+ },
87
+ {
88
+ "path": "tokenizer_config.json",
89
+ "sha256": "95c557768e6b88a7128befc7bfd3c7de50e5d51af9b8b33a9f4dee0e04f99679",
90
+ "size_bytes": 1161
91
+ },
92
+ {
93
+ "path": "vision.safetensors",
94
+ "sha256": "6623410d69074faf0ea027f1c1c3cabd731bd70d5bcb3b878a595eaba4c17767",
95
+ "size_bytes": 893179624
96
+ }
97
+ ],
98
+ "format": "mlx",
99
+ "logical_parameters": 35951822704,
100
+ "main_logical_parameters": 35107181936,
101
+ "main_weight_file_size_bytes": 25274858279,
102
+ "measured_main_bpw": 5.759472993321032,
103
+ "measured_total_bpw": 5.62416175382127,
104
+ "mtp_acceptance_retention": null,
105
+ "mtp_distribution": {},
106
+ "mtp_measured_speedup": null,
107
+ "mtp_policy": {
108
+ "candidate_bits": [
109
+ 8,
110
+ 16
111
+ ],
112
+ "min_bits": 8,
113
+ "mode": "disabled",
114
+ "optimize_for_acceptance": true,
115
+ "preserve_external_sidecar": true,
116
+ "protect_norms": true,
117
+ "protect_output_head": true
118
+ },
119
+ "mtp_present": false,
120
+ "mtp_weight_file_size_bytes": 0,
121
+ "plan_sha256": "52ae3d6db4734023ba7ac865e69c1864744e70c771537ba5655bc6be4ca50d7e",
122
+ "profile": "general",
123
+ "protected_weight_file_size_bytes": 893179624,
124
+ "quantizer": "axquant",
125
+ "runtime": {
126
+ "ax_engine": {
127
+ "decode_kernel": null,
128
+ "fused_mtp": null,
129
+ "kernel_evidence": "unmeasured",
130
+ "model_manifest": "model-manifest.json",
131
+ "preferred_group_size": 32
132
+ },
133
+ "compatible_runtimes": [
134
+ {
135
+ "compatibility_level": "B",
136
+ "manifest": "config.json",
137
+ "mtp_support": "runtime-dependent",
138
+ "name": "mlx-lm",
139
+ "notes": [
140
+ "Standard backbone inference is the compatibility target.",
141
+ "AXQuant MTP metadata may be ignored by MLX-LM."
142
+ ],
143
+ "standard_inference": true,
144
+ "standard_mlx_weights": true,
145
+ "support_level": "standard-inference"
146
+ }
147
+ ],
148
+ "created_at": "2026-08-05T13:39:05.854633Z",
149
+ "kv_cache": null,
150
+ "memory_policy": {
151
+ "kv_cache_precision": "runtime-default",
152
+ "mtp_buffers": "preallocate-when-enabled",
153
+ "prefix_cache": "runtime-managed",
154
+ "unified_memory_safety_margin": "benchmark-required"
155
+ },
156
+ "mtp": {
157
+ "acceptance_retention": null,
158
+ "detected": true,
159
+ "draft_tokens": 1,
160
+ "enabled_by_default": true,
161
+ "head_precision": null,
162
+ "measured_speedup": null,
163
+ "optimized": false,
164
+ "recommended_temperature_max": null,
165
+ "sidecar_file": "mtp.safetensors",
166
+ "verification_mode": "runtime-default"
167
+ },
168
+ "optimization_scope": "text-path",
169
+ "primary_runtime": {
170
+ "compatibility_level": "A",
171
+ "manifest": "model-manifest.json",
172
+ "mtp_support": "native",
173
+ "name": "ax-engine",
174
+ "notes": [
175
+ "Runtime claims require a passing AX Engine doctor and benchmark report."
176
+ ],
177
+ "standard_inference": true,
178
+ "standard_mlx_weights": true,
179
+ "support_level": "optimized"
180
+ },
181
+ "schema_version": "axquant.runtime.v1"
182
+ },
183
+ "schema_version": "axquant.artifact.v2",
184
+ "software_versions": {
185
+ "ax_engine": null,
186
+ "axquant": "1.2.0",
187
+ "mlx": "0.32.0",
188
+ "mlx_lm": "0.31.3",
189
+ "pydantic": "2.13.4",
190
+ "python": "3.13.14",
191
+ "safetensors": "0.8.0"
192
+ },
193
+ "source_model": {
194
+ "architecture": "Qwen3_5MoeForConditionalGeneration",
195
+ "format": "mlx",
196
+ "local_path": null,
197
+ "model_id": "Qwen/Qwen3.6-35B-A3B",
198
+ "revision": "995ad96eacd98c81ed38be0c5b274b04031597b0"
199
+ },
200
+ "target_class": "6bit",
201
+ "weight_distribution": {
202
+ "4bit": {
203
+ "fraction": 0.6869209985632332,
204
+ "parameters": 24696061952
205
+ },
206
+ "6bit": {
207
+ "fraction": 0.2434625553220185,
208
+ "parameters": 8752922624
209
+ },
210
+ "8bit": {
211
+ "fraction": 0.019523428722346983,
212
+ "parameters": 701902848
213
+ },
214
+ "bf16": {
215
+ "fraction": 0.0500930173924013,
216
+ "parameters": 1800935280
217
+ }
218
+ },
219
+ "weight_file_size_bytes": 25274858279
220
+ }
axquant_plan.json ADDED
The diff for this file is too large to render. See raw diff
 
axquant_quantizer_execution.json ADDED
The diff for this file is too large to render. See raw diff
 
axquant_runtime.json ADDED
@@ -0,0 +1,58 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "ax_engine": {
3
+ "decode_kernel": null,
4
+ "fused_mtp": null,
5
+ "kernel_evidence": "unmeasured",
6
+ "model_manifest": "model-manifest.json",
7
+ "preferred_group_size": 32
8
+ },
9
+ "compatible_runtimes": [
10
+ {
11
+ "compatibility_level": "B",
12
+ "manifest": "config.json",
13
+ "mtp_support": "runtime-dependent",
14
+ "name": "mlx-lm",
15
+ "notes": [
16
+ "Standard backbone inference is the compatibility target.",
17
+ "AXQuant MTP metadata may be ignored by MLX-LM."
18
+ ],
19
+ "standard_inference": true,
20
+ "standard_mlx_weights": true,
21
+ "support_level": "standard-inference"
22
+ }
23
+ ],
24
+ "created_at": "2026-08-05T13:39:05.854633Z",
25
+ "kv_cache": null,
26
+ "memory_policy": {
27
+ "kv_cache_precision": "runtime-default",
28
+ "mtp_buffers": "preallocate-when-enabled",
29
+ "prefix_cache": "runtime-managed",
30
+ "unified_memory_safety_margin": "benchmark-required"
31
+ },
32
+ "mtp": {
33
+ "acceptance_retention": null,
34
+ "detected": true,
35
+ "draft_tokens": 1,
36
+ "enabled_by_default": true,
37
+ "head_precision": null,
38
+ "measured_speedup": null,
39
+ "optimized": false,
40
+ "recommended_temperature_max": null,
41
+ "sidecar_file": "mtp.safetensors",
42
+ "verification_mode": "runtime-default"
43
+ },
44
+ "optimization_scope": "text-path",
45
+ "primary_runtime": {
46
+ "compatibility_level": "A",
47
+ "manifest": "model-manifest.json",
48
+ "mtp_support": "native",
49
+ "name": "ax-engine",
50
+ "notes": [
51
+ "Runtime claims require a passing AX Engine doctor and benchmark report."
52
+ ],
53
+ "standard_inference": true,
54
+ "standard_mlx_weights": true,
55
+ "support_level": "optimized"
56
+ },
57
+ "schema_version": "axquant.runtime.v1"
58
+ }
axquant_vision_sidecar_manifest.json ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "created_at": "2026-08-05T13:39:01.669426Z",
3
+ "dtypes": [
4
+ "BF16"
5
+ ],
6
+ "output": {
7
+ "path": "vision.safetensors",
8
+ "sha256": "6623410d69074faf0ea027f1c1c3cabd731bd70d5bcb3b878a595eaba4c17767",
9
+ "size_bytes": 893179624
10
+ },
11
+ "parameters": 446571248,
12
+ "role": "vision",
13
+ "schema_version": "axquant.protected-tensor-sidecar.v1",
14
+ "source_files": [
15
+ {
16
+ "path": "model-00001-of-00026.safetensors",
17
+ "sha256": "adee7bcb930aed22e0677e58d4873b48dadb1ed8001cb5c6a0487286eadb3478",
18
+ "size_bytes": 3996199712
19
+ },
20
+ {
21
+ "path": "model-00002-of-00026.safetensors",
22
+ "sha256": "88f2dfd2b9e73e4b70be533dbf61bcfa3c9a0003758900fcbc9d9b96f5751d4b",
23
+ "size_bytes": 1284907696
24
+ }
25
+ ],
26
+ "source_model": {
27
+ "architecture": "Qwen3_5MoeForConditionalGeneration",
28
+ "format": "mlx",
29
+ "local_path": null,
30
+ "model_id": "Qwen/Qwen3.6-35B-A3B",
31
+ "revision": "995ad96eacd98c81ed38be0c5b274b04031597b0"
32
+ },
33
+ "tensor_count": 333,
34
+ "tensor_names_sha256": "74db978fa718039692971f2ece846f2cc7a62a960047b5cebe2d758cc82ac2e9"
35
+ }
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 (preserve_thinking is defined and preserve_thinking is true) or (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 | string if args_value is string else args_value | tojson | safe %}
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
The diff for this file is too large to render. See raw diff
 
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
+ }
model-00001-of-00005.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:860f667408f32e2353c15e7f88efcb8882b5e93e73afc222cb29b9cdf3a89c44
3
+ size 5367600594
model-00002-of-00005.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:2dba4e082f746e20d94ee9623e5ba879379a1c2a9079bcf79a457df5b8856e29
3
+ size 5358260540
model-00003-of-00005.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:f6c517b13633c3c3455f8c1f05b7a804fa0e6bcecb091f61a2c7cb825436e8ba
3
+ size 5349479920
model-00004-of-00005.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:d2fbee3ba144584f68333788d2d31f0339a51d4aa6f0d5cbfdfd8c5260b0333c
3
+ size 5252632964
model-00005-of-00005.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:860cfe8a94c0b2d8ca4ab509545096e5af73b480724147e1ffc92e2ce02b0df0
3
+ size 3053704637
model.safetensors.index.json ADDED
The diff for this file is too large to render. See raw diff
 
mtplx_runtime.json ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ {
2
+ "mtp_depth_max": 1,
3
+ "mtp_norm_layout": "raw_hf_delta",
4
+ "schema_version": "axquant.mtp-runtime.v1"
5
+ }
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,33 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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": "<|im_end|>",
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
+ "tool_parser_type": "qwen3_coder",
29
+ "unk_token": null,
30
+ "video_token": "<|video_pad|>",
31
+ "vision_bos_token": "<|vision_start|>",
32
+ "vision_eos_token": "<|vision_end|>"
33
+ }
vision.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:6623410d69074faf0ea027f1c1c3cabd731bd70d5bcb3b878a595eaba4c17767
3
+ size 893179624