zhijianliu commited on
Commit
a93f2a0
·
verified ·
1 Parent(s): b3878b2

Qwen3.6-35B-A3B packed for Splash: package, manifest, and model card

Browse files
Files changed (4) hide show
  1. LICENSE +202 -0
  2. README.md +288 -0
  3. layout.json +0 -0
  4. manifest.json +412 -0
LICENSE ADDED
@@ -0,0 +1,202 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ Apache License
3
+ Version 2.0, January 2004
4
+ http://www.apache.org/licenses/
5
+
6
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
7
+
8
+ 1. Definitions.
9
+
10
+ "License" shall mean the terms and conditions for use, reproduction,
11
+ and distribution as defined by Sections 1 through 9 of this document.
12
+
13
+ "Licensor" shall mean the copyright owner or entity authorized by
14
+ the copyright owner that is granting the License.
15
+
16
+ "Legal Entity" shall mean the union of the acting entity and all
17
+ other entities that control, are controlled by, or are under common
18
+ control with that entity. For the purposes of this definition,
19
+ "control" means (i) the power, direct or indirect, to cause the
20
+ direction or management of such entity, whether by contract or
21
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
22
+ outstanding shares, or (iii) beneficial ownership of such entity.
23
+
24
+ "You" (or "Your") shall mean an individual or Legal Entity
25
+ exercising permissions granted by this License.
26
+
27
+ "Source" form shall mean the preferred form for making modifications,
28
+ including but not limited to software source code, documentation
29
+ source, and configuration files.
30
+
31
+ "Object" form shall mean any form resulting from mechanical
32
+ transformation or translation of a Source form, including but
33
+ not limited to compiled object code, generated documentation,
34
+ and conversions to other media types.
35
+
36
+ "Work" shall mean the work of authorship, whether in Source or
37
+ Object form, made available under the License, as indicated by a
38
+ copyright notice that is included in or attached to the work
39
+ (an example is provided in the Appendix below).
40
+
41
+ "Derivative Works" shall mean any work, whether in Source or Object
42
+ form, that is based on (or derived from) the Work and for which the
43
+ editorial revisions, annotations, elaborations, or other modifications
44
+ represent, as a whole, an original work of authorship. For the purposes
45
+ of this License, Derivative Works shall not include works that remain
46
+ separable from, or merely link (or bind by name) to the interfaces of,
47
+ the Work and Derivative Works thereof.
48
+
49
+ "Contribution" shall mean any work of authorship, including
50
+ the original version of the Work and any modifications or additions
51
+ to that Work or Derivative Works thereof, that is intentionally
52
+ submitted to Licensor for inclusion in the Work by the copyright owner
53
+ or by an individual or Legal Entity authorized to submit on behalf of
54
+ the copyright owner. For the purposes of this definition, "submitted"
55
+ means any form of electronic, verbal, or written communication sent
56
+ to the Licensor or its representatives, including but not limited to
57
+ communication on electronic mailing lists, source code control systems,
58
+ and issue tracking systems that are managed by, or on behalf of, the
59
+ Licensor for the purpose of discussing and improving the Work, but
60
+ excluding communication that is conspicuously marked or otherwise
61
+ designated in writing by the copyright owner as "Not a Contribution."
62
+
63
+ "Contributor" shall mean Licensor and any individual or Legal Entity
64
+ on behalf of whom a Contribution has been received by Licensor and
65
+ subsequently incorporated within the Work.
66
+
67
+ 2. Grant of Copyright License. Subject to the terms and conditions of
68
+ this License, each Contributor hereby grants to You a perpetual,
69
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
70
+ copyright license to reproduce, prepare Derivative Works of,
71
+ publicly display, publicly perform, sublicense, and distribute the
72
+ Work and such Derivative Works in Source or Object form.
73
+
74
+ 3. Grant of Patent License. Subject to the terms and conditions of
75
+ this License, each Contributor hereby grants to You a perpetual,
76
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
77
+ (except as stated in this section) patent license to make, have made,
78
+ use, offer to sell, sell, import, and otherwise transfer the Work,
79
+ where such license applies only to those patent claims licensable
80
+ by such Contributor that are necessarily infringed by their
81
+ Contribution(s) alone or by combination of their Contribution(s)
82
+ with the Work to which such Contribution(s) was submitted. If You
83
+ institute patent litigation against any entity (including a
84
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
85
+ or a Contribution incorporated within the Work constitutes direct
86
+ or contributory patent infringement, then any patent licenses
87
+ granted to You under this License for that Work shall terminate
88
+ as of the date such litigation is filed.
89
+
90
+ 4. Redistribution. You may reproduce and distribute copies of the
91
+ Work or Derivative Works thereof in any medium, with or without
92
+ modifications, and in Source or Object form, provided that You
93
+ meet the following conditions:
94
+
95
+ (a) You must give any other recipients of the Work or
96
+ Derivative Works a copy of this License; and
97
+
98
+ (b) You must cause any modified files to carry prominent notices
99
+ stating that You changed the files; and
100
+
101
+ (c) You must retain, in the Source form of any Derivative Works
102
+ that You distribute, all copyright, patent, trademark, and
103
+ attribution notices from the Source form of the Work,
104
+ excluding those notices that do not pertain to any part of
105
+ the Derivative Works; and
106
+
107
+ (d) If the Work includes a "NOTICE" text file as part of its
108
+ distribution, then any Derivative Works that You distribute must
109
+ include a readable copy of the attribution notices contained
110
+ within such NOTICE file, excluding those notices that do not
111
+ pertain to any part of the Derivative Works, in at least one
112
+ of the following places: within a NOTICE text file distributed
113
+ as part of the Derivative Works; within the Source form or
114
+ documentation, if provided along with the Derivative Works; or,
115
+ within a display generated by the Derivative Works, if and
116
+ wherever such third-party notices normally appear. The contents
117
+ of the NOTICE file are for informational purposes only and
118
+ do not modify the License. You may add Your own attribution
119
+ notices within Derivative Works that You distribute, alongside
120
+ or as an addendum to the NOTICE text from the Work, provided
121
+ that such additional attribution notices cannot be construed
122
+ as modifying the License.
123
+
124
+ You may add Your own copyright statement to Your modifications and
125
+ may provide additional or different license terms and conditions
126
+ for use, reproduction, or distribution of Your modifications, or
127
+ for any such Derivative Works as a whole, provided Your use,
128
+ reproduction, and distribution of the Work otherwise complies with
129
+ the conditions stated in this License.
130
+
131
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
132
+ any Contribution intentionally submitted for inclusion in the Work
133
+ by You to the Licensor shall be under the terms and conditions of
134
+ this License, without any additional terms or conditions.
135
+ Notwithstanding the above, nothing herein shall supersede or modify
136
+ the terms of any separate license agreement you may have executed
137
+ with Licensor regarding such Contributions.
138
+
139
+ 6. Trademarks. This License does not grant permission to use the trade
140
+ names, trademarks, service marks, or product names of the Licensor,
141
+ except as required for reasonable and customary use in describing the
142
+ origin of the Work and reproducing the content of the NOTICE file.
143
+
144
+ 7. Disclaimer of Warranty. Unless required by applicable law or
145
+ agreed to in writing, Licensor provides the Work (and each
146
+ Contributor provides its Contributions) on an "AS IS" BASIS,
147
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
148
+ implied, including, without limitation, any warranties or conditions
149
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
150
+ PARTICULAR PURPOSE. You are solely responsible for determining the
151
+ appropriateness of using or redistributing the Work and assume any
152
+ risks associated with Your exercise of permissions under this License.
153
+
154
+ 8. Limitation of Liability. In no event and under no legal theory,
155
+ whether in tort (including negligence), contract, or otherwise,
156
+ unless required by applicable law (such as deliberate and grossly
157
+ negligent acts) or agreed to in writing, shall any Contributor be
158
+ liable to You for damages, including any direct, indirect, special,
159
+ incidental, or consequential damages of any character arising as a
160
+ result of this License or out of the use or inability to use the
161
+ Work (including but not limited to damages for loss of goodwill,
162
+ work stoppage, computer failure or malfunction, or any and all
163
+ other commercial damages or losses), even if such Contributor
164
+ has been advised of the possibility of such damages.
165
+
166
+ 9. Accepting Warranty or Additional Liability. While redistributing
167
+ the Work or Derivative Works thereof, You may choose to offer,
168
+ and charge a fee for, acceptance of support, warranty, indemnity,
169
+ or other liability obligations and/or rights consistent with this
170
+ License. However, in accepting such obligations, You may act only
171
+ on Your own behalf and on Your sole responsibility, not on behalf
172
+ of any other Contributor, and only if You agree to indemnify,
173
+ defend, and hold each Contributor harmless for any liability
174
+ incurred by, or claims asserted against, such Contributor by reason
175
+ of your accepting any such warranty or additional liability.
176
+
177
+ END OF TERMS AND CONDITIONS
178
+
179
+ APPENDIX: How to apply the Apache License to your work.
180
+
181
+ To apply the Apache License to your work, attach the following
182
+ boilerplate notice, with the fields enclosed by brackets "[]"
183
+ replaced with your own identifying information. (Don't include
184
+ the brackets!) The text should be enclosed in the appropriate
185
+ comment syntax for the file format. We also recommend that a
186
+ file or class name and description of purpose be included on the
187
+ same "printed page" as the copyright notice for easier
188
+ identification within third-party archives.
189
+
190
+ Copyright 2026 Alibaba Cloud
191
+
192
+ Licensed under the Apache License, Version 2.0 (the "License");
193
+ you may not use this file except in compliance with the License.
194
+ You may obtain a copy of the License at
195
+
196
+ http://www.apache.org/licenses/LICENSE-2.0
197
+
198
+ Unless required by applicable law or agreed to in writing, software
199
+ distributed under the License is distributed on an "AS IS" BASIS,
200
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
201
+ See the License for the specific language governing permissions and
202
+ limitations under the License.
README.md ADDED
@@ -0,0 +1,288 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ license: apache-2.0
3
+ library_name: splash
4
+ pipeline_tag: text-generation
5
+ inference: false
6
+ base_model:
7
+ - mlx-community/Qwen3.6-35B-A3B-4bit
8
+ - incoai/Qwen3.6-35B-A3B-DFlash2
9
+ base_model_relation: quantized
10
+ tags:
11
+ - splash
12
+ - apple-silicon
13
+ - metal
14
+ - local-inference
15
+ - dflash2
16
+ - speculative-decoding
17
+ - qwen3.6
18
+ - moe
19
+ - 4-bit
20
+ ---
21
+
22
+ # Qwen3.6-35B-A3B-Splash
23
+
24
+ **Qwen3.6-35B-A3B, packed for Splash on Apple silicon.**
25
+
26
+ [Splash](https://github.com/incoai/splash) is Inco AI's open-source inference
27
+ engine for Apple silicon, built around the model. Each model on its roster
28
+ gets its own kernels, its own DFlash 2 draft, and a memory plan computed for
29
+ the machine it runs on.
30
+
31
+ This package is what Splash maps into memory when you serve Qwen3.6-35B-A3B:
32
+ the 4-bit target, its DFlash 2 draft, the vision encoder, and the tokenizer,
33
+ laid out as fixed runtime artifacts. It is not a Transformers or MLX
34
+ checkpoint and does not load in those frameworks.
35
+
36
+ Qwen3.6-35B-A3B is the faster of the two launch models in Splash's benchmarks,
37
+ a mixture-of-experts model with 35B total parameters and about 3B active per
38
+ token. The other,
39
+ [Qwen3.8-27B-Splash](https://huggingface.co/incoai/Qwen3.8-27B-Splash), is a
40
+ dense 27B model.
41
+
42
+ [Engine](https://github.com/incoai/splash) ·
43
+ [Launch post and benchmarks](https://inco.ai/blog/splash/) ·
44
+ [DFlash 2](https://inco.ai/blog/dflash2/)
45
+
46
+ ## Model details
47
+
48
+ ### Description
49
+
50
+ - **Developed by:** Inco AI. Qwen3.6-35B-A3B is by Alibaba's Qwen team.
51
+ - **Model type:** a Splash package: the 4-bit Qwen3.6-35B-A3B target, its DFlash 2 draft
52
+ model, the vision encoder, and the tokenizer, as fixed-layout runtime
53
+ artifacts.
54
+ - **Languages:** as Qwen3.6-35B-A3B.
55
+ - **License:** Apache-2.0. Every upstream component is Apache-2.0 as well:
56
+ Qwen3.6-35B-A3B (Alibaba), its 4-bit conversion (mlx-community), and the DFlash 2 draft
57
+ (Inco AI).
58
+ - **Packaged from:** [`mlx-community/Qwen3.6-35B-A3B-4bit`](https://huggingface.co/mlx-community/Qwen3.6-35B-A3B-4bit)
59
+ for the target, tokenizer, and vision encoder, and
60
+ [`incoai/Qwen3.6-35B-A3B-DFlash2`](https://huggingface.co/incoai/Qwen3.6-35B-A3B-DFlash2) for the draft, at the
61
+ revisions listed under Technical specifications.
62
+
63
+ ### Sources
64
+
65
+ - **Engine:** <https://github.com/incoai/splash>
66
+ - **Launch post and benchmarks:** <https://inco.ai/blog/splash/>
67
+ - **Draft model:** <https://inco.ai/blog/dflash2/>
68
+ - **Companion package:** [Qwen3.8-27B-Splash](https://huggingface.co/incoai/Qwen3.8-27B-Splash)
69
+
70
+ ## Uses
71
+
72
+ ### Direct use
73
+
74
+ Serve Qwen3.6-35B-A3B locally with Splash: to coding agents (OpenCode, Claude
75
+ Code, Codex CLI, Hermes Agent) and to any client of the OpenAI Chat
76
+ Completions, Responses, or Anthropic Messages APIs. Text, images, and inline
77
+ PDFs in. Streaming, tool calls, and JSON Schema output out.
78
+
79
+ ### Out-of-scope use
80
+
81
+ - Loading it anywhere but Splash. It is not a Transformers, MLX, or GGUF
82
+ checkpoint. For other engines, use the upstream checkpoints.
83
+ - Using the draft on its own. It is not a standalone language model.
84
+ - Anything Qwen3.6-35B-A3B's own license and usage policy exclude.
85
+
86
+ ## Bias, risks, and limitations
87
+
88
+ - The package inherits Qwen3.6-35B-A3B's biases, knowledge cutoff, and failure modes. See
89
+ the upstream model card.
90
+ - The target is the upstream 4-bit conversion. We have not published a quality
91
+ comparison against the bf16 checkpoint.
92
+ - The draft proposes tokens and the target verifies every one, so speculative
93
+ decoding changes the speed and not the output distribution.
94
+ - Reasoning is on by default. Reasoning tokens count toward the output limit and
95
+ the time to the final answer.
96
+ - Usable context is bounded by the memory left after the weights, so a 36 GB
97
+ Mac holds less context and fewer concurrent requests than a 48 GB one.
98
+ - The server binds `127.0.0.1` and has no authentication. Put a proxy in front
99
+ of it before exposing it to a network.
100
+
101
+ ## How to get started
102
+
103
+ ### Requirements
104
+
105
+ Apple M3 or newer, macOS 26.4 or later, [Homebrew](https://brew.sh), and **36
106
+ GB of unified memory, 48 GB or more recommended**. Splash checks available
107
+ memory at startup and stops with a budget breakdown if the model does not fit.
108
+ More memory means more context and more concurrent requests.
109
+
110
+ ### Quick start
111
+
112
+ ```bash
113
+ brew install incoai/tap/splash
114
+ splash serve --model incoai/Qwen3.6-35B-A3B-Splash
115
+ ```
116
+
117
+ That is the complete setup. The first run downloads this package (20.9 GB),
118
+ verifies it, computes a memory plan for this machine, and starts the server.
119
+ Interrupted downloads resume. Later runs need no network.
120
+
121
+ When it prints its `Ready` line, the server is up. Open:
122
+
123
+ - Chat: <http://127.0.0.1:8000>
124
+ - API: <http://127.0.0.1:8000/v1>
125
+
126
+ To point a coding agent at it, run one of these in another terminal:
127
+
128
+ ```bash
129
+ splash opencode # or: splash claude / splash codex / splash hermes
130
+ ```
131
+
132
+ This launches the agent you already have installed and points it at the
133
+ serving model. Keep the server terminal open. **Ctrl+C stops the server.**
134
+
135
+ ### Use the API
136
+
137
+ Splash serves OpenAI Chat Completions and Responses, and Anthropic Messages,
138
+ all streaming, with tool calls, JSON Schema output, images, and inline PDFs
139
+ (up to 20 pages and 10 MiB each).
140
+
141
+ ```bash
142
+ curl http://127.0.0.1:8000/v1/chat/completions \
143
+ -H 'Content-Type: application/json' \
144
+ -d '{
145
+ "model": "incoai/Qwen3.6-35B-A3B-Splash",
146
+ "messages": [{"role": "user", "content": "Explain speculative decoding in one sentence."}]
147
+ }'
148
+ ```
149
+
150
+ `model` is the package ID you served, exactly as passed to `--model`. Leave it
151
+ out to address whatever is serving. `GET /v1/models` lists it.
152
+
153
+ #### Reasoning
154
+
155
+ Qwen3.6-35B-A3B reasons before it answers by default. Its reasoning is a
156
+ switch, not a dial: on Chat Completions, `"reasoning_effort": "none"` turns it
157
+ off, the other accepted levels (`minimal` through `max`) all render the same
158
+ prompt, and anything else is rejected with a 400. Responses takes the same
159
+ values in `reasoning.effort`. Anthropic Messages follows the `thinking` field
160
+ and is off unless you send `{"type": "enabled"}` or `{"type": "adaptive"}`.
161
+ Reasoning comes back as `reasoning_content` and is counted in
162
+ `completion_tokens_details.reasoning_tokens`.
163
+
164
+ The benchmarks below were run with reasoning on.
165
+
166
+ #### Context and memory
167
+
168
+ The model's native context window is 256K tokens. Splash grows its 8-bit KV cache as requests need it, within the memory left
169
+ after the weights and the requests in flight, so the usable window depends on
170
+ the machine and the workload. The settings are ceilings that leave room for
171
+ other work on the same Mac:
172
+
173
+ ```bash
174
+ splash serve --model incoai/Qwen3.6-35B-A3B-Splash --max-memory 28G # cap Metal allocations
175
+ splash serve --model incoai/Qwen3.6-35B-A3B-Splash --max-context 100K # cap one request
176
+ ```
177
+
178
+ `--max-memory` is a ceiling, not a reservation. The
179
+ [README](https://github.com/incoai/splash#settings) lists every flag with its
180
+ default.
181
+
182
+ ## Training details
183
+
184
+ This package adds no training. The target weights are upstream's 4-bit
185
+ conversion of Qwen3.6-35B-A3B. The draft was trained by Inco AI against
186
+ Qwen3.6-35B-A3B. The [DFlash 2 post](https://inco.ai/blog/dflash2/) and the
187
+ [draft's card](https://huggingface.co/incoai/Qwen3.6-35B-A3B-DFlash2) describe
188
+ its training.
189
+
190
+ ## Evaluation
191
+
192
+ ### Setup
193
+
194
+ Measured on an M5 Pro (16-core GPU, 48 GB unified memory) with selected
195
+ SPEED-Bench coding prompts, over HTTP, with reasoning on, with a 1,024-token
196
+ output limit. Single-request figures are medians, and concurrent throughput is
197
+ averaged over four waves. Decode counts reasoning tokens. The ratio in each
198
+ cell is against the next-fastest engine we measured.
199
+
200
+ ### Results
201
+
202
+ | Metric | Qwen3.6-35B-A3B |
203
+ | --- | ---: |
204
+ | Decode · short prompt | 210 tok/s (1.7×) |
205
+ | Prefill · 32K prompt | 2,011 tok/s (1.3×) |
206
+ | Time to first token · 32K prompt, uncached | 17 s (1.3×) |
207
+ | Cached time to first token · 32K replay | 123 ms (6.6×) |
208
+ | Aggregate decode · 4 concurrent short prompts | 357 tok/s (2.0×) |
209
+ | Aggregate decode · 4 concurrent 32K prompts | 236 tok/s (3.8×) |
210
+
211
+ ### Summary
212
+
213
+ Splash led on every measure at every prompt length we tested. The cached
214
+ figure replays a prompt exactly. A real agent turn also pays to process the
215
+ tokens it appends. These are end-to-end numbers for the complete package on
216
+ the hardware above. The [launch post](https://inco.ai/blog/splash/) has the
217
+ full comparison against oMLX, Lily, uzu, and Ollama.
218
+
219
+ ## Technical specifications
220
+
221
+ ### Package contents
222
+
223
+ ```
224
+ target/ 42 files 18.2 GiB Qwen3.6-35B-A3B, 4-bit, one packed file per layer
225
+ draft/ 7 files 0.5 GiB DFlash 2 draft model
226
+ vision/ 1 file 0.8 GiB bf16 vision encoder (vision/model.bin)
227
+ tokenizer/ 5 files tokenizer and chat template
228
+ manifest.json provenance, geometry, and SHA-256 of every artifact
229
+ layout.json section-level map of every packed file
230
+ ```
231
+
232
+ The packed weights in `target/`, `draft/`, and `vision/` are fixed-layout
233
+ binaries that Splash maps directly from disk, with `StorageN=256` tiling and
234
+ 16 KiB section alignment. The target keeps the
235
+ upstream conversion's mixed precision (4-bit affine weights with group size
236
+ 64, 8-bit expert routers) across its 40 hybrid layers (gated DeltaNet and
237
+ attention), 256 experts with 8 routed per token plus a shared expert, and a
238
+ 248,320-token vocabulary. The vision encoder is the target checkpoint's own
239
+ bf16 encoder.
240
+
241
+ | Component | Source | Revision |
242
+ | --- | --- | --- |
243
+ | Target, tokenizer, vision | [`mlx-community/Qwen3.6-35B-A3B-4bit`](https://huggingface.co/mlx-community/Qwen3.6-35B-A3B-4bit) | `38740b847e4cb78f352aba30aa41c76e08e6eb46` |
244
+ | Draft | [`incoai/Qwen3.6-35B-A3B-DFlash2`](https://huggingface.co/incoai/Qwen3.6-35B-A3B-DFlash2) | `8e713508f0bb02f03b5cb5cabbc8d9604f924be2` |
245
+
246
+ The draft is a six-layer DFlash 2 model (hidden size 2048, 32 query heads,
247
+ 8 KV heads, 2048-token sliding-window attention, non-causal) that reads the
248
+ target's hidden states at eight layers and proposes 7 tokens per step. The
249
+ target verifies the block of 8 in one pass. Its projections are 4-bit affine
250
+ (group size 64, `StorageN=256`); its norms, convolution kernels, and selector
251
+ codebooks are bf16. The package's execution
252
+ geometry, recorded in `manifest.json`, batches up to four sequences per decode
253
+ step, prefills 2,048 tokens per step, and allocates KV cache in 32-token blocks.
254
+
255
+ The chat template is upstream's with one change: a system message that
256
+ appears after the first turn is rendered in place instead of being rejected,
257
+ which is what coding agents that inject instructions mid-conversation need.
258
+
259
+ ### Integrity
260
+
261
+ `manifest.json` records the upstream revisions above, the execution geometry,
262
+ the converter's hashes, and the size and SHA-256 of every artifact. Splash pins
263
+ an immutable commit of this repository plus the manifest's SHA-256, checks
264
+ every artifact's SHA-256 before publishing the package into its local model
265
+ directory, and re-checks sizes and alignment on every start.
266
+
267
+ ### Compute infrastructure
268
+
269
+ - **Hardware:** Apple silicon, M3 or newer, with 36 GB of unified memory or
270
+ more.
271
+ - **Software:** Splash on macOS 26.4 or later. The kernels are Metal, compiled
272
+ for this model's shapes and shipped precompiled.
273
+
274
+ ## Citation
275
+
276
+ ```bibtex
277
+ @misc{inco2026splash,
278
+ title = {{Splash: A Local Engine Built Around the Model}},
279
+ author = {{Inco AI}},
280
+ year = {2026},
281
+ month = {September},
282
+ url = {https://inco.ai/blog/splash/}
283
+ }
284
+ ```
285
+
286
+ ## Contact
287
+
288
+ <contact@inco.ai>, or an issue on <https://github.com/incoai/splash>.
layout.json ADDED
The diff for this file is too large to render. See raw diff
 
manifest.json ADDED
@@ -0,0 +1,412 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "artifact_set_sha256": "0c465f96066fe62f185273a5c58f6de0f493d9bc64b0e43f77d1229eead2440a",
3
+ "artifacts": [
4
+ {
5
+ "path": "draft/layer-0.bin",
6
+ "sha256": "6e49b64d9448bf9965826d6c92badcd40c3321a7b86066c25b7c30852cc4c5b9",
7
+ "size": 34324480
8
+ },
9
+ {
10
+ "path": "draft/layer-1.bin",
11
+ "sha256": "755ef7fcf8107c3a2cd5bd24e96ad726aa06174f72d628413e32fa7b7d8ffdda",
12
+ "size": 34324480
13
+ },
14
+ {
15
+ "path": "draft/layer-2.bin",
16
+ "sha256": "126cedd11a4b13febc299df0101a096dd6f6761e86bc0ac5db1dc6f2f78c31c1",
17
+ "size": 34324480
18
+ },
19
+ {
20
+ "path": "draft/layer-3.bin",
21
+ "sha256": "d96490a76307408fc2d2e42d86481f3061b04a2289193d2e8face84531b68f9e",
22
+ "size": 34324480
23
+ },
24
+ {
25
+ "path": "draft/layer-4.bin",
26
+ "sha256": "92103acb13eb656fc46220f07bdc4f1da0233fed8b27ab5f2877544f1147bd93",
27
+ "size": 34324480
28
+ },
29
+ {
30
+ "path": "draft/layer-5.bin",
31
+ "sha256": "2de274812de6d8cdf8bdfb2b6edd43da1b7b4b82e5ffe7316e36d6d50404600d",
32
+ "size": 34324480
33
+ },
34
+ {
35
+ "path": "draft/model.bin",
36
+ "sha256": "532f9ca34fd57b0d042f79232bea70770c28e23d69eeb2293a46e9640959926f",
37
+ "size": 273498112
38
+ },
39
+ {
40
+ "path": "layout.json",
41
+ "sha256": "2e67217507b9b13c613a4ea6deb2cb5bc937547a520bf79a1a4a900db62860d7",
42
+ "size": 255855
43
+ },
44
+ {
45
+ "path": "target/embedding.bin",
46
+ "sha256": "a7f9ff6c44ef0bf5486d1e52c6fa0f19634fb76d7fdcac901990ed1bbd57539b",
47
+ "size": 286081024
48
+ },
49
+ {
50
+ "path": "target/head.bin",
51
+ "sha256": "326d8301942438f3cb5c1f3f1ae51853ab72ad50ac67cecaba034fb10e88ca53",
52
+ "size": 286097408
53
+ },
54
+ {
55
+ "path": "target/layer-0.bin",
56
+ "sha256": "f48116252d484df38ac0b72b957bbf0dc343a59f8b3d570834ca06f00e36e8cb",
57
+ "size": 475201536
58
+ },
59
+ {
60
+ "path": "target/layer-1.bin",
61
+ "sha256": "c872c1a91630b620ab8ec787fba8f68318af6605ae605bb27eac782613882f2b",
62
+ "size": 475201536
63
+ },
64
+ {
65
+ "path": "target/layer-10.bin",
66
+ "sha256": "0499eaf879d9ac8859c1abe3c25950ee0b6b3084d44e8040fb7e6ba6208197e4",
67
+ "size": 475201536
68
+ },
69
+ {
70
+ "path": "target/layer-11.bin",
71
+ "sha256": "866ab4178775804d39169ec30132f010c9d431a89ef336249a127df411e2e7d1",
72
+ "size": 471285760
73
+ },
74
+ {
75
+ "path": "target/layer-12.bin",
76
+ "sha256": "f10c319788e01ce6f8afdbf825707ed9c58bbb9e00e70a1e203f31617614fa25",
77
+ "size": 475201536
78
+ },
79
+ {
80
+ "path": "target/layer-13.bin",
81
+ "sha256": "6ce396e63dbabed82b69429eacfca5e0ed6c8d8891d0cc860ad028bc74a85eb8",
82
+ "size": 475201536
83
+ },
84
+ {
85
+ "path": "target/layer-14.bin",
86
+ "sha256": "6c26a5f399a66523a61c14da22268ab0ba3fc28215c30cc108ca09e8928036a0",
87
+ "size": 475201536
88
+ },
89
+ {
90
+ "path": "target/layer-15.bin",
91
+ "sha256": "2bcef296c32a8b12dd2c896b3dcef475b7bfab6c9d89502dc66e13dbc67ca7cc",
92
+ "size": 471285760
93
+ },
94
+ {
95
+ "path": "target/layer-16.bin",
96
+ "sha256": "8bf4d6dea481856f385589bcd808a52abe710b19b48b86121da13b29e9788f44",
97
+ "size": 475201536
98
+ },
99
+ {
100
+ "path": "target/layer-17.bin",
101
+ "sha256": "e1e4529d23161aaf24dcc0914dc1c03fa7e3c7d3d4411222f563a0e41b139e09",
102
+ "size": 475201536
103
+ },
104
+ {
105
+ "path": "target/layer-18.bin",
106
+ "sha256": "48c051aa2d2ede66cf45edf94abc49d06a5a2a72dda79339dfd41c9bcbe742ff",
107
+ "size": 475201536
108
+ },
109
+ {
110
+ "path": "target/layer-19.bin",
111
+ "sha256": "677f3bfd2162f6184a9cc14b96dbc8ead8dce285e2a80e6b52386397a0fe2c68",
112
+ "size": 471285760
113
+ },
114
+ {
115
+ "path": "target/layer-2.bin",
116
+ "sha256": "948d5e57d2ab8fd0781980d90cdfb1ed1a3133c7f139b4df0f1ab38c05f0d1c2",
117
+ "size": 475201536
118
+ },
119
+ {
120
+ "path": "target/layer-20.bin",
121
+ "sha256": "962dd25046d60c5b9e1eeccd24b8984b24ee22f9fa5ac19f82db45e883d795c5",
122
+ "size": 475201536
123
+ },
124
+ {
125
+ "path": "target/layer-21.bin",
126
+ "sha256": "991f2146d38887cc3eede8a028a995a6fded77e31d3d06a5c22afa2e1294ae03",
127
+ "size": 475201536
128
+ },
129
+ {
130
+ "path": "target/layer-22.bin",
131
+ "sha256": "dc59b50c77178f7f80915394ad4b3213fc85e71fff17e763f37181f406aa8f02",
132
+ "size": 475201536
133
+ },
134
+ {
135
+ "path": "target/layer-23.bin",
136
+ "sha256": "20e3eb6d773c5491337bb219441ac10af1ce055f4731f687703862205e3d9bd0",
137
+ "size": 471285760
138
+ },
139
+ {
140
+ "path": "target/layer-24.bin",
141
+ "sha256": "704ecb6ec7a5c3862f581669806deb1be7d94b20792e87fc076905c5fbee00c9",
142
+ "size": 475201536
143
+ },
144
+ {
145
+ "path": "target/layer-25.bin",
146
+ "sha256": "da26a4ffd02dc2acafd7ed755f74faa2e51b7a24aae49751c1dc4de34707872f",
147
+ "size": 475201536
148
+ },
149
+ {
150
+ "path": "target/layer-26.bin",
151
+ "sha256": "09997fe9dfb6a20a9b4eb75c081f66eca11c44a1d57cc2154e734574136ed216",
152
+ "size": 475201536
153
+ },
154
+ {
155
+ "path": "target/layer-27.bin",
156
+ "sha256": "76d5a2dfbf1d9ad1cda0efa1627751cc3f774e849eee562ebe52cfa12e1a856a",
157
+ "size": 471285760
158
+ },
159
+ {
160
+ "path": "target/layer-28.bin",
161
+ "sha256": "2fd221c193924fbb24b8255c24f8bbc771a4a9feb2520eb33befcf1e00ff29b5",
162
+ "size": 475201536
163
+ },
164
+ {
165
+ "path": "target/layer-29.bin",
166
+ "sha256": "5f28c541ee7141e6b4272a94425ee15a1de2c8104941556c855aa5d795828fe5",
167
+ "size": 475201536
168
+ },
169
+ {
170
+ "path": "target/layer-3.bin",
171
+ "sha256": "05c156052a20a1baa3b78c04fab330f15e64d53f0b34a97e88fa53f74e6b2db0",
172
+ "size": 471285760
173
+ },
174
+ {
175
+ "path": "target/layer-30.bin",
176
+ "sha256": "c78d51b8e802dee1e4d845d553acd62db04505cb558d160a6dc18f7d2db902a9",
177
+ "size": 475201536
178
+ },
179
+ {
180
+ "path": "target/layer-31.bin",
181
+ "sha256": "79716bdda3250501a042b25df1cecdc92570f3527632f5b3033aa78e5dafc929",
182
+ "size": 471285760
183
+ },
184
+ {
185
+ "path": "target/layer-32.bin",
186
+ "sha256": "2c106e5b430917d056f43bb45a3154d285934f9101732a16734496e5bfbe0bb8",
187
+ "size": 475201536
188
+ },
189
+ {
190
+ "path": "target/layer-33.bin",
191
+ "sha256": "34a97f512c4bd302af0d89368d886a24337f253297068a6b7d7c8cdd6bd62252",
192
+ "size": 475201536
193
+ },
194
+ {
195
+ "path": "target/layer-34.bin",
196
+ "sha256": "85ab41f1975bf8fc42b6d5d5e727f64eab5aae1d24c0afea2726cee5258b9097",
197
+ "size": 475201536
198
+ },
199
+ {
200
+ "path": "target/layer-35.bin",
201
+ "sha256": "7887d3f5e2478a270827149c7c85031ff6b5d4324b891d1880eb15c196b73369",
202
+ "size": 471285760
203
+ },
204
+ {
205
+ "path": "target/layer-36.bin",
206
+ "sha256": "3086e83787f03b1df90984bb986197ac325385a51f88de5932e54d30d15b0d17",
207
+ "size": 475201536
208
+ },
209
+ {
210
+ "path": "target/layer-37.bin",
211
+ "sha256": "d952e0e17c4f137c4f70f8acc203cf999f855668eb4b7ebf045163390f2d4353",
212
+ "size": 475201536
213
+ },
214
+ {
215
+ "path": "target/layer-38.bin",
216
+ "sha256": "0ae30a9dd447e61d5d4f89d650fd23c5abe4bc76cab5f7d205e5fc4738613805",
217
+ "size": 475201536
218
+ },
219
+ {
220
+ "path": "target/layer-39.bin",
221
+ "sha256": "70be79b973be193808a23efdb4337c176ec95c35a1c0037e021122e07f846c32",
222
+ "size": 471285760
223
+ },
224
+ {
225
+ "path": "target/layer-4.bin",
226
+ "sha256": "d95f30e81b433b0636285d84b120db1f72bad5f0e22bd62f84352d67b49a727d",
227
+ "size": 475201536
228
+ },
229
+ {
230
+ "path": "target/layer-5.bin",
231
+ "sha256": "a59c1be3c30b2c12702a108472f63d01dfe32be156c43f74d2ced47fa12b1b07",
232
+ "size": 475201536
233
+ },
234
+ {
235
+ "path": "target/layer-6.bin",
236
+ "sha256": "bbe39e033c15f9e7a8d2eb900614450a63854e73d6dc2187304cbb45b65cfc2d",
237
+ "size": 475201536
238
+ },
239
+ {
240
+ "path": "target/layer-7.bin",
241
+ "sha256": "b6544739de16a0ccdedb444aa477c250e18c5a3a0ff35551d965a513ee3f5779",
242
+ "size": 471285760
243
+ },
244
+ {
245
+ "path": "target/layer-8.bin",
246
+ "sha256": "6da1022800157028d974dbc802f5efe4083791b652d925c3d662c56c4652ccff",
247
+ "size": 475201536
248
+ },
249
+ {
250
+ "path": "target/layer-9.bin",
251
+ "sha256": "3bf6a860a4f336bb24c4c8e6d491601a07d4c5fdae4d1c70f79d476b22622f9a",
252
+ "size": 475201536
253
+ },
254
+ {
255
+ "path": "tokenizer/chat_template.jinja",
256
+ "sha256": "2f9e9d2156f90806f09464c24681486adcc158dbe8e8030cd55f55edff0eaa66",
257
+ "size": 7755
258
+ },
259
+ {
260
+ "path": "tokenizer/config.json",
261
+ "sha256": "a822a9e48b0aafbe3144ec37d4fb067e178ed96615ce6e4420b3149893cc5767",
262
+ "size": 23591
263
+ },
264
+ {
265
+ "path": "tokenizer/tokenizer.json",
266
+ "sha256": "87a7830d63fcf43bf241c3c5242e96e62dd3fdc29224ca26fed8ea333db72de4",
267
+ "size": 19989343
268
+ },
269
+ {
270
+ "path": "tokenizer/tokenizer_config.json",
271
+ "sha256": "e98f1901ac6f0adff67b1d540bfa0c36ac1a0cf59eb72ed78146ef89aafa1182",
272
+ "size": 1139
273
+ },
274
+ {
275
+ "path": "tokenizer/vocab.json",
276
+ "sha256": "ce99b4cb2983d118806ce0a8b777a35b093e2000a503ebde25853284c9dfa003",
277
+ "size": 6722759
278
+ },
279
+ {
280
+ "path": "vision/model.bin",
281
+ "sha256": "20ba816b644c7221d33d1b188612d096dae3e96600be2dc3d4bd1600c0d30d00",
282
+ "size": 901939200
283
+ }
284
+ ],
285
+ "converter": {
286
+ "adapter_sha256": "d8a306e1a428eb9c762b994a0b7c99f15aa8c6f70309f20445ce741ef7ae8636",
287
+ "mlx_version": "0.32.2",
288
+ "source_git_commit": "d441abae04c3560d250eaac3affb81a38771f60f",
289
+ "source_path": "install/convert.py",
290
+ "source_sha256": "dd4f4b60549195835ca037a0ad01586e19ecd9390c8200a6e6f9a912f066f2aa"
291
+ },
292
+ "draft": {
293
+ "architecture": "DFlash2DraftModel",
294
+ "block_size": 8,
295
+ "dynamic_conv_group_size": 16,
296
+ "dynamic_conv_kernel_size": 2,
297
+ "hidden_size": 2048,
298
+ "intermediate_size": 6144,
299
+ "is_causal": false,
300
+ "layers": 6,
301
+ "selector_rank": 256,
302
+ "selector_top_k": 16,
303
+ "sliding_window": 2048,
304
+ "target_capture_layers": [
305
+ 1,
306
+ 6,
307
+ 11,
308
+ 16,
309
+ 22,
310
+ 27,
311
+ 32,
312
+ 37
313
+ ]
314
+ },
315
+ "execution_geometry": {
316
+ "allocation_extent_target_bytes": 134217728,
317
+ "attention_history_group": 128,
318
+ "draft_proposal_tokens": 7,
319
+ "draft_query_rows": 8,
320
+ "draft_sliding_window": 2048,
321
+ "maximum_batch_width": 4,
322
+ "prefill_token_budget": 2048,
323
+ "target_kv_block_tokens": 32,
324
+ "target_verify_rows": 8
325
+ },
326
+ "format": {
327
+ "draft_layer_magic": "MDFD0004",
328
+ "name": "splash-packed-q4-moe",
329
+ "q4_bits": 4,
330
+ "q8_bits": 8,
331
+ "quant_group_size": 64,
332
+ "section_alignment_bytes": 16384,
333
+ "storage_n": 256,
334
+ "target_layer_magic": "MDFM0001",
335
+ "vision_magic": "MDFV0001"
336
+ },
337
+ "model": "Qwen3.6-35B-A3B",
338
+ "schema_version": 4,
339
+ "target": {
340
+ "architecture": "qwen3_5_moe",
341
+ "attention_packed_width": 9216,
342
+ "experts": 256,
343
+ "experts_per_token": 8,
344
+ "gdn_actual_width": 12352,
345
+ "gdn_packed_width": 12544,
346
+ "hidden_size": 2048,
347
+ "layer_types": [
348
+ "gdn",
349
+ "gdn",
350
+ "gdn",
351
+ "attention",
352
+ "gdn",
353
+ "gdn",
354
+ "gdn",
355
+ "attention",
356
+ "gdn",
357
+ "gdn",
358
+ "gdn",
359
+ "attention",
360
+ "gdn",
361
+ "gdn",
362
+ "gdn",
363
+ "attention",
364
+ "gdn",
365
+ "gdn",
366
+ "gdn",
367
+ "attention",
368
+ "gdn",
369
+ "gdn",
370
+ "gdn",
371
+ "attention",
372
+ "gdn",
373
+ "gdn",
374
+ "gdn",
375
+ "attention",
376
+ "gdn",
377
+ "gdn",
378
+ "gdn",
379
+ "attention",
380
+ "gdn",
381
+ "gdn",
382
+ "gdn",
383
+ "attention",
384
+ "gdn",
385
+ "gdn",
386
+ "gdn",
387
+ "attention"
388
+ ],
389
+ "layers": 40,
390
+ "moe_intermediate_size": 512,
391
+ "shared_expert_intermediate_size": 512,
392
+ "vocabulary_size": 248320
393
+ },
394
+ "upstream": {
395
+ "draft": {
396
+ "repo_id": "incoai/Qwen3.6-35B-A3B-DFlash2",
397
+ "revision": "8e713508f0bb02f03b5cb5cabbc8d9604f924be2"
398
+ },
399
+ "target": {
400
+ "repo_id": "mlx-community/Qwen3.6-35B-A3B-4bit",
401
+ "revision": "38740b847e4cb78f352aba30aa41c76e08e6eb46"
402
+ },
403
+ "tokenizer": {
404
+ "repo_id": "mlx-community/Qwen3.6-35B-A3B-4bit",
405
+ "revision": "38740b847e4cb78f352aba30aa41c76e08e6eb46"
406
+ },
407
+ "vision": {
408
+ "repo_id": "mlx-community/Qwen3.6-35B-A3B-4bit",
409
+ "revision": "38740b847e4cb78f352aba30aa41c76e08e6eb46"
410
+ }
411
+ }
412
+ }