gump2049 commited on
Commit
3a89afd
·
verified ·
1 Parent(s): 5809cb9

Initial public MLX 8bit release

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
CODE-LICENSE.txt ADDED
@@ -0,0 +1,201 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Apache License
2
+ Version 2.0, January 2004
3
+ http://www.apache.org/licenses/
4
+
5
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
6
+
7
+ 1. Definitions.
8
+
9
+ "License" shall mean the terms and conditions for use, reproduction,
10
+ and distribution as defined by Sections 1 through 9 of this document.
11
+
12
+ "Licensor" shall mean the copyright owner or entity authorized by
13
+ the copyright owner that is granting the License.
14
+
15
+ "Legal Entity" shall mean the union of the acting entity and all
16
+ other entities that control, are controlled by, or are under common
17
+ control with that entity. For the purposes of this definition,
18
+ "control" means (i) the power, direct or indirect, to cause the
19
+ direction or management of such entity, whether by contract or
20
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
21
+ outstanding shares, or (iii) beneficial ownership of such entity.
22
+
23
+ "You" (or "Your") shall mean an individual or Legal Entity
24
+ exercising permissions granted by this License.
25
+
26
+ "Source" form shall mean the preferred form for making modifications,
27
+ including but not limited to software source code, documentation
28
+ source, and configuration files.
29
+
30
+ "Object" form shall mean any form resulting from mechanical
31
+ transformation or translation of a Source form, including but
32
+ not limited to compiled object code, generated documentation,
33
+ and conversions to other media types.
34
+
35
+ "Work" shall mean the work of authorship, whether in Source or
36
+ Object form, made available under the License, as indicated by a
37
+ copyright notice that is included in or attached to the work
38
+ (an example is provided in the Appendix below).
39
+
40
+ "Derivative Works" shall mean any work, whether in Source or Object
41
+ form, that is based on (or derived from) the Work and for which the
42
+ editorial revisions, annotations, elaborations, or other modifications
43
+ represent, as a whole, an original work of authorship. For the purposes
44
+ of this License, Derivative Works shall not include works that remain
45
+ separable from, or merely link (or bind by name) to the interfaces of,
46
+ the Work and Derivative Works thereof.
47
+
48
+ "Contribution" shall mean any work of authorship, including
49
+ the original version of the Work and any modifications or additions
50
+ to that Work or Derivative Works thereof, that is intentionally
51
+ submitted to Licensor for inclusion in the Work by the copyright owner
52
+ or by an individual or Legal Entity authorized to submit on behalf of
53
+ the copyright owner. For the purposes of this definition, "submitted"
54
+ means any form of electronic, verbal, or written communication sent
55
+ to the Licensor or its representatives, including but not limited to
56
+ communication on electronic mailing lists, source code control systems,
57
+ and issue tracking systems that are managed by, or on behalf of, the
58
+ Licensor for the purpose of discussing and improving the Work, but
59
+ excluding communication that is conspicuously marked or otherwise
60
+ designated in writing by the copyright owner as "Not a Contribution."
61
+
62
+ "Contributor" shall mean Licensor and any individual or Legal Entity
63
+ on behalf of whom a Contribution has been received by Licensor and
64
+ subsequently incorporated within the Work.
65
+
66
+ 2. Grant of Copyright License. Subject to the terms and conditions of
67
+ this License, each Contributor hereby grants to You a perpetual,
68
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
69
+ copyright license to reproduce, prepare Derivative Works of,
70
+ publicly display, publicly perform, sublicense, and distribute the
71
+ Work and such Derivative Works in Source or Object form.
72
+
73
+ 3. Grant of Patent License. Subject to the terms and conditions of
74
+ this License, each Contributor hereby grants to You a perpetual,
75
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
76
+ (except as stated in this section) patent license to make, have made,
77
+ use, offer to sell, sell, import, and otherwise transfer the Work,
78
+ where such license applies only to those patent claims licensable
79
+ by such Contributor that are necessarily infringed by their
80
+ Contribution(s) alone or by combination of their Contribution(s)
81
+ with the Work to which such Contribution(s) was submitted. If You
82
+ institute patent litigation against any entity (including a
83
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
84
+ or a Contribution incorporated within the Work constitutes direct
85
+ or contributory patent infringement, then any patent licenses
86
+ granted to You under this License for that Work shall terminate
87
+ as of the date such litigation is filed.
88
+
89
+ 4. Redistribution. You may reproduce and distribute copies of the
90
+ Work or Derivative Works thereof in any medium, with or without
91
+ modifications, and in Source or Object form, provided that You
92
+ meet the following conditions:
93
+
94
+ (a) You must give any other recipients of the Work or
95
+ Derivative Works a copy of this License; and
96
+
97
+ (b) You must cause any modified files to carry prominent notices
98
+ stating that You changed the files; and
99
+
100
+ (c) You must retain, in the Source form of any Derivative Works
101
+ that You distribute, all copyright, patent, trademark, and
102
+ attribution notices from the Source form of the Work,
103
+ excluding those notices that do not pertain to any part of
104
+ the Derivative Works; and
105
+
106
+ (d) If the Work includes a "NOTICE" text file as part of its
107
+ distribution, then any Derivative Works that You distribute must
108
+ include a readable copy of the attribution notices contained
109
+ within such NOTICE file, excluding those notices that do not
110
+ pertain to any part of the Derivative Works, in at least one
111
+ of the following places: within a NOTICE text file distributed
112
+ as part of the Derivative Works; within the Source form or
113
+ documentation, if provided along with the Derivative Works; or,
114
+ within a display generated by the Derivative Works, if and
115
+ wherever such third-party notices normally appear. The contents
116
+ of the NOTICE file are for informational purposes only and
117
+ do not modify the License. You may add Your own attribution
118
+ notices within Derivative Works that You distribute, alongside
119
+ or as an addendum to the NOTICE text from the Work, provided
120
+ that such additional attribution notices cannot be construed
121
+ as modifying the License.
122
+
123
+ You may add Your own copyright statement to Your modifications and
124
+ may provide additional or different license terms and conditions
125
+ for use, reproduction, or distribution of Your modifications, or
126
+ for any such Derivative Works as a whole, provided Your use,
127
+ reproduction, and distribution of the Work otherwise complies with
128
+ the conditions stated in this License.
129
+
130
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
131
+ any Contribution intentionally submitted for inclusion in the Work
132
+ by You to the Licensor shall be under the terms and conditions of
133
+ this License, without any additional terms or conditions.
134
+ Notwithstanding the above, nothing herein shall supersede or modify
135
+ the terms of any separate license agreement you may have executed
136
+ with Licensor regarding such Contributions.
137
+
138
+ 6. Trademarks. This License does not grant permission to use the trade
139
+ names, trademarks, service marks, or product names of the Licensor,
140
+ except as required for reasonable and customary use in describing the
141
+ origin of the Work and reproducing the content of the NOTICE file.
142
+
143
+ 7. Disclaimer of Warranty. Unless required by applicable law or
144
+ agreed to in writing, Licensor provides the Work (and each
145
+ Contributor provides its Contributions) on an "AS IS" BASIS,
146
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
147
+ implied, including, without limitation, any warranties or conditions
148
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
149
+ PARTICULAR PURPOSE. You are solely responsible for determining the
150
+ appropriateness of using or redistributing the Work and assume any
151
+ risks associated with Your exercise of permissions under this License.
152
+
153
+ 8. Limitation of Liability. In no event and under no legal theory,
154
+ whether in tort (including negligence), contract, or otherwise,
155
+ unless required by applicable law (such as deliberate and grossly
156
+ negligent acts) or agreed to in writing, shall any Contributor be
157
+ liable to You for damages, including any direct, indirect, special,
158
+ incidental, or consequential damages of any character arising as a
159
+ result of this License or out of the use or inability to use the
160
+ Work (including but not limited to damages for loss of goodwill,
161
+ work stoppage, computer failure or malfunction, or any and all
162
+ other commercial damages or losses), even if such Contributor
163
+ has been advised of the possibility of such damages.
164
+
165
+ 9. Accepting Warranty or Additional Liability. While redistributing
166
+ the Work or Derivative Works thereof, You may choose to offer,
167
+ and charge a fee for, acceptance of support, warranty, indemnity,
168
+ or other liability obligations and/or rights consistent with this
169
+ License. However, in accepting such obligations, You may act only
170
+ on Your own behalf and on Your sole responsibility, not on behalf
171
+ of any other Contributor, and only if You agree to indemnify,
172
+ defend, and hold each Contributor harmless for any liability
173
+ incurred by, or claims asserted against, such Contributor by reason
174
+ of your accepting any such warranty or additional liability.
175
+
176
+ END OF TERMS AND CONDITIONS
177
+
178
+ APPENDIX: How to apply the Apache License to your work.
179
+
180
+ To apply the Apache License to your work, attach the following
181
+ boilerplate notice, with the fields enclosed by brackets "[]"
182
+ replaced with your own identifying information. (Don't include
183
+ the brackets!) The text should be enclosed in the appropriate
184
+ comment syntax for the file format. We also recommend that a
185
+ file or class name and description of purpose be included on the
186
+ same "printed page" as the copyright notice for easier
187
+ identification within third-party archives.
188
+
189
+ Copyright [yyyy] [name of copyright owner]
190
+
191
+ Licensed under the Apache License, Version 2.0 (the "License");
192
+ you may not use this file except in compliance with the License.
193
+ You may obtain a copy of the License at
194
+
195
+ http://www.apache.org/licenses/LICENSE-2.0
196
+
197
+ Unless required by applicable law or agreed to in writing, software
198
+ distributed under the License is distributed on an "AS IS" BASIS,
199
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
200
+ See the License for the specific language governing permissions and
201
+ limitations under the License.
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.
NOTICE ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
 
1
+ APUS-OpenJev-v1-35B-A3B
2
+
3
+ Base model: Qwen/Qwen3.5-35B-A3B, revision 59d61f3ce65a6d9863b86d2e96597125219dc754.
4
+ Base weights and configuration retain their upstream Apache-2.0 LICENSE.
5
+ The bundled reference-runtime source derives from xDAN-ms-swift-jev (Apache-2.0; see CODE-LICENSE.txt).
6
+ Changes include 20/40-layer MoE dispatch and preservation of checkpoint FP32 state during BF16 loading.
7
+ See runtime-source-provenance.json, merge-provenance.json and release-manifest.json for source identities.
8
+ Authors: gumpcheng (xDAN2099), zhangxu, APUS AI-LAB.
README.md ADDED
@@ -0,0 +1,55 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ library_name: mlx
3
+ license: apache-2.0
4
+ base_model: apus-ailab/APUS-OpenJev-v1-35B-A3B
5
+ base_model_relation: quantized
6
+ pipeline_tag: text-generation
7
+ language:
8
+ - en
9
+ - zh
10
+ tags:
11
+ - apus-openjev
12
+ - decision-model
13
+ - mlx
14
+ - apple-silicon
15
+ ---
16
+
17
+ # APUS-OpenJev-v1-35B-A3B-MLX-8bit
18
+
19
+ [English](README.md) | [中文](README.zh-CN.md) · [Source model](https://huggingface.co/apus-ailab/APUS-OpenJev-v1-35B-A3B) · [Collection](https://huggingface.co/collections/apus-ailab/apus-openjev-v1-6ab1ee888eb002fcdd3a2825) · [MLX-4bit](https://huggingface.co/apus-ailab/APUS-OpenJev-v1-35B-A3B-MLX-4bit) · [GGUF / Ollama](https://huggingface.co/apus-ailab/APUS-OpenJev-v1-35B-A3B-GGUF)
20
+
21
+ MLX weights (8-bit affine, group size 64) of [APUS-OpenJev-v1-35B-A3B](https://huggingface.co/apus-ailab/APUS-OpenJev-v1-35B-A3B) for **Apple Silicon Macs** (mlx-lm, LM Studio).
22
+
23
+ OpenJev is a **decision model**: each request supplies a state, an instruction and 2–16 candidates, and the model scores candidate labels A–P. It is not a chat model.
24
+
25
+ ## Quick start
26
+
27
+ ```bash
28
+ pip install mlx-lm
29
+ hf download apus-ailab/APUS-OpenJev-v1-35B-A3B-MLX-8bit --local-dir ./openjev
30
+ python ./openjev/examples/openjev_mlx.py --model ./openjev
31
+ ```
32
+
33
+ `examples/openjev_mlx.py` renders prompts with [openjev_contracts.py](openjev_contracts.py) (the training contract) and returns the exact candidate distribution.
34
+
35
+ ## Parity
36
+
37
+ Frozen80 with identical prompt tokens, compared with the HF BF16 release (full depth, **71/80 · 88.75%**):
38
+
39
+ | Run / 运行 | Backend / 后端 | Frozen80 | = HF BF16 | Max Δp |
40
+ |---|---|---:|---:|---:|
41
+ | NVIDIA RTX PRO 6000 (CUDA) | mlx 0.32.2 on Linux x86_64 (Device(gpu, 0)) | 71/80 · 88.75% | 80/80 | 0.1931 |
42
+
43
+ Converted and scored with MLX on Linux (CUDA); the files are platform-independent and load unchanged on Apple Silicon (for 4B, the same kind of file gave identical decisions on CUDA and Metal). Peak memory on Frozen80 was 38.66 GB; plan for a Mac with at least 64 GB of unified memory. Frozen80 is a reused development panel, not a blind benchmark.
44
+
45
+ ## Conversion
46
+
47
+ - mlx-lm `0.31.3` / mlx `0.32.2`; 8-bit affine, group size 64.
48
+ - GDN `A_log` and `linear_attn.norm.weight` keep their source precision (FP32 in the 35B release).
49
+ - Full depth only, text only, probabilities **not calibrated**.
50
+
51
+ ## License
52
+
53
+ Apache-2.0, inherited from the source model; see [LICENSE](LICENSE). Base model: [Qwen/Qwen3.5-35B-A3B](https://huggingface.co/Qwen/Qwen3.5-35B-A3B).
54
+
55
+ **Authors:** gumpcheng ([xDAN2099](https://huggingface.co/xDAN2099)), zhangxu, [APUS AI-LAB](https://github.com/APUS-AI-Lab).
README.zh-CN.md ADDED
@@ -0,0 +1,55 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ library_name: mlx
3
+ license: apache-2.0
4
+ base_model: apus-ailab/APUS-OpenJev-v1-35B-A3B
5
+ base_model_relation: quantized
6
+ pipeline_tag: text-generation
7
+ language:
8
+ - en
9
+ - zh
10
+ tags:
11
+ - apus-openjev
12
+ - decision-model
13
+ - mlx
14
+ - apple-silicon
15
+ ---
16
+
17
+ # APUS-OpenJev-v1-35B-A3B-MLX-8bit
18
+
19
+ [English](README.md) | [中文](README.zh-CN.md) · [源模型](https://huggingface.co/apus-ailab/APUS-OpenJev-v1-35B-A3B) · [Collection](https://huggingface.co/collections/apus-ailab/apus-openjev-v1-6ab1ee888eb002fcdd3a2825) · [MLX-4bit](https://huggingface.co/apus-ailab/APUS-OpenJev-v1-35B-A3B-MLX-4bit) · [GGUF / Ollama](https://huggingface.co/apus-ailab/APUS-OpenJev-v1-35B-A3B-GGUF)
20
+
21
+ [APUS-OpenJev-v1-35B-A3B](https://huggingface.co/apus-ailab/APUS-OpenJev-v1-35B-A3B) 的 MLX 权重(8bit affine,group size 64),适用于 **Apple Silicon Mac**(mlx-lm、LM Studio)。
22
+
23
+ OpenJev 是**决策模型**:每个请求给出状态、指令和 2–16 个候选,模型对候选标签 A–P 打分。它不是聊天模型。
24
+
25
+ ## 快速开始
26
+
27
+ ```bash
28
+ pip install mlx-lm
29
+ hf download apus-ailab/APUS-OpenJev-v1-35B-A3B-MLX-8bit --local-dir ./openjev
30
+ python ./openjev/examples/openjev_mlx.py --model ./openjev
31
+ ```
32
+
33
+ `examples/openjev_mlx.py` 使用 [openjev_contracts.py](openjev_contracts.py)(训练时的格式)渲染 prompt,返回精确的候选分布。
34
+
35
+ ## 一致性
36
+
37
+ Frozen80 使用完全相同的 prompt token,与 HF BF16 发布版(完整深度,**71/80 · 88.75%**)对比:
38
+
39
+ | Run / 运行 | Backend / 后端 | Frozen80 | = HF BF16 | Max Δp |
40
+ |---|---|---:|---:|---:|
41
+ | NVIDIA RTX PRO 6000 (CUDA) | mlx 0.32.2 on Linux x86_64 (Device(gpu, 0)) | 71/80 · 88.75% | 80/80 | 0.1931 |
42
+
43
+ 在 Linux(CUDA)上用 MLX 转换并评测;MLX 文件与平台无关,可直接在 Apple Silicon 上加载(4B 的同类文件在 CUDA 与 Metal 上决策完全一致)。Frozen80 评测峰值内存 38.66 GB,建议使用统一内存不少于 64 GB 的 Mac。Frozen80 是复用的开发面板,不是盲测。
44
+
45
+ ## 转换说明
46
+
47
+ - mlx-lm `0.31.3` / mlx `0.32.2`;8bit affine,group size 64。
48
+ - GDN 的 `A_log` 和 `linear_attn.norm.weight` 保持源精度(35B 发布版中为 FP32)。
49
+ - 仅完整深度、仅文本,概率**未经校准**。
50
+
51
+ ## 许可
52
+
53
+ Apache-2.0,继承自源模型,见 [LICENSE](LICENSE)。基座模型:[Qwen/Qwen3.5-35B-A3B](https://huggingface.co/Qwen/Qwen3.5-35B-A3B)。
54
+
55
+ **作者:** gumpcheng([xDAN2099](https://huggingface.co/xDAN2099))、zhangxu、[APUS AI-LAB](https://github.com/APUS-AI-Lab)。
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,753 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "architectures": [
3
+ "Qwen3_5MoeForConditionalGeneration"
4
+ ],
5
+ "eos_token_id": [
6
+ 248046,
7
+ 248044
8
+ ],
9
+ "image_token_id": 248056,
10
+ "model_type": "qwen3_5_moe",
11
+ "quantization": {
12
+ "group_size": 64,
13
+ "bits": 8,
14
+ "mode": "affine",
15
+ "language_model.model.layers.0.mlp.gate": {
16
+ "group_size": 64,
17
+ "bits": 8
18
+ },
19
+ "language_model.model.layers.0.mlp.shared_expert_gate": {
20
+ "group_size": 64,
21
+ "bits": 8
22
+ },
23
+ "language_model.model.layers.1.mlp.gate": {
24
+ "group_size": 64,
25
+ "bits": 8
26
+ },
27
+ "language_model.model.layers.1.mlp.shared_expert_gate": {
28
+ "group_size": 64,
29
+ "bits": 8
30
+ },
31
+ "language_model.model.layers.2.mlp.gate": {
32
+ "group_size": 64,
33
+ "bits": 8
34
+ },
35
+ "language_model.model.layers.2.mlp.shared_expert_gate": {
36
+ "group_size": 64,
37
+ "bits": 8
38
+ },
39
+ "language_model.model.layers.3.mlp.gate": {
40
+ "group_size": 64,
41
+ "bits": 8
42
+ },
43
+ "language_model.model.layers.3.mlp.shared_expert_gate": {
44
+ "group_size": 64,
45
+ "bits": 8
46
+ },
47
+ "language_model.model.layers.4.mlp.gate": {
48
+ "group_size": 64,
49
+ "bits": 8
50
+ },
51
+ "language_model.model.layers.4.mlp.shared_expert_gate": {
52
+ "group_size": 64,
53
+ "bits": 8
54
+ },
55
+ "language_model.model.layers.5.mlp.gate": {
56
+ "group_size": 64,
57
+ "bits": 8
58
+ },
59
+ "language_model.model.layers.5.mlp.shared_expert_gate": {
60
+ "group_size": 64,
61
+ "bits": 8
62
+ },
63
+ "language_model.model.layers.6.mlp.gate": {
64
+ "group_size": 64,
65
+ "bits": 8
66
+ },
67
+ "language_model.model.layers.6.mlp.shared_expert_gate": {
68
+ "group_size": 64,
69
+ "bits": 8
70
+ },
71
+ "language_model.model.layers.7.mlp.gate": {
72
+ "group_size": 64,
73
+ "bits": 8
74
+ },
75
+ "language_model.model.layers.7.mlp.shared_expert_gate": {
76
+ "group_size": 64,
77
+ "bits": 8
78
+ },
79
+ "language_model.model.layers.8.mlp.gate": {
80
+ "group_size": 64,
81
+ "bits": 8
82
+ },
83
+ "language_model.model.layers.8.mlp.shared_expert_gate": {
84
+ "group_size": 64,
85
+ "bits": 8
86
+ },
87
+ "language_model.model.layers.9.mlp.gate": {
88
+ "group_size": 64,
89
+ "bits": 8
90
+ },
91
+ "language_model.model.layers.9.mlp.shared_expert_gate": {
92
+ "group_size": 64,
93
+ "bits": 8
94
+ },
95
+ "language_model.model.layers.10.mlp.gate": {
96
+ "group_size": 64,
97
+ "bits": 8
98
+ },
99
+ "language_model.model.layers.10.mlp.shared_expert_gate": {
100
+ "group_size": 64,
101
+ "bits": 8
102
+ },
103
+ "language_model.model.layers.11.mlp.gate": {
104
+ "group_size": 64,
105
+ "bits": 8
106
+ },
107
+ "language_model.model.layers.11.mlp.shared_expert_gate": {
108
+ "group_size": 64,
109
+ "bits": 8
110
+ },
111
+ "language_model.model.layers.12.mlp.gate": {
112
+ "group_size": 64,
113
+ "bits": 8
114
+ },
115
+ "language_model.model.layers.12.mlp.shared_expert_gate": {
116
+ "group_size": 64,
117
+ "bits": 8
118
+ },
119
+ "language_model.model.layers.13.mlp.gate": {
120
+ "group_size": 64,
121
+ "bits": 8
122
+ },
123
+ "language_model.model.layers.13.mlp.shared_expert_gate": {
124
+ "group_size": 64,
125
+ "bits": 8
126
+ },
127
+ "language_model.model.layers.14.mlp.gate": {
128
+ "group_size": 64,
129
+ "bits": 8
130
+ },
131
+ "language_model.model.layers.14.mlp.shared_expert_gate": {
132
+ "group_size": 64,
133
+ "bits": 8
134
+ },
135
+ "language_model.model.layers.15.mlp.gate": {
136
+ "group_size": 64,
137
+ "bits": 8
138
+ },
139
+ "language_model.model.layers.15.mlp.shared_expert_gate": {
140
+ "group_size": 64,
141
+ "bits": 8
142
+ },
143
+ "language_model.model.layers.16.mlp.gate": {
144
+ "group_size": 64,
145
+ "bits": 8
146
+ },
147
+ "language_model.model.layers.16.mlp.shared_expert_gate": {
148
+ "group_size": 64,
149
+ "bits": 8
150
+ },
151
+ "language_model.model.layers.17.mlp.gate": {
152
+ "group_size": 64,
153
+ "bits": 8
154
+ },
155
+ "language_model.model.layers.17.mlp.shared_expert_gate": {
156
+ "group_size": 64,
157
+ "bits": 8
158
+ },
159
+ "language_model.model.layers.18.mlp.gate": {
160
+ "group_size": 64,
161
+ "bits": 8
162
+ },
163
+ "language_model.model.layers.18.mlp.shared_expert_gate": {
164
+ "group_size": 64,
165
+ "bits": 8
166
+ },
167
+ "language_model.model.layers.19.mlp.gate": {
168
+ "group_size": 64,
169
+ "bits": 8
170
+ },
171
+ "language_model.model.layers.19.mlp.shared_expert_gate": {
172
+ "group_size": 64,
173
+ "bits": 8
174
+ },
175
+ "language_model.model.layers.20.mlp.gate": {
176
+ "group_size": 64,
177
+ "bits": 8
178
+ },
179
+ "language_model.model.layers.20.mlp.shared_expert_gate": {
180
+ "group_size": 64,
181
+ "bits": 8
182
+ },
183
+ "language_model.model.layers.21.mlp.gate": {
184
+ "group_size": 64,
185
+ "bits": 8
186
+ },
187
+ "language_model.model.layers.21.mlp.shared_expert_gate": {
188
+ "group_size": 64,
189
+ "bits": 8
190
+ },
191
+ "language_model.model.layers.22.mlp.gate": {
192
+ "group_size": 64,
193
+ "bits": 8
194
+ },
195
+ "language_model.model.layers.22.mlp.shared_expert_gate": {
196
+ "group_size": 64,
197
+ "bits": 8
198
+ },
199
+ "language_model.model.layers.23.mlp.gate": {
200
+ "group_size": 64,
201
+ "bits": 8
202
+ },
203
+ "language_model.model.layers.23.mlp.shared_expert_gate": {
204
+ "group_size": 64,
205
+ "bits": 8
206
+ },
207
+ "language_model.model.layers.24.mlp.gate": {
208
+ "group_size": 64,
209
+ "bits": 8
210
+ },
211
+ "language_model.model.layers.24.mlp.shared_expert_gate": {
212
+ "group_size": 64,
213
+ "bits": 8
214
+ },
215
+ "language_model.model.layers.25.mlp.gate": {
216
+ "group_size": 64,
217
+ "bits": 8
218
+ },
219
+ "language_model.model.layers.25.mlp.shared_expert_gate": {
220
+ "group_size": 64,
221
+ "bits": 8
222
+ },
223
+ "language_model.model.layers.26.mlp.gate": {
224
+ "group_size": 64,
225
+ "bits": 8
226
+ },
227
+ "language_model.model.layers.26.mlp.shared_expert_gate": {
228
+ "group_size": 64,
229
+ "bits": 8
230
+ },
231
+ "language_model.model.layers.27.mlp.gate": {
232
+ "group_size": 64,
233
+ "bits": 8
234
+ },
235
+ "language_model.model.layers.27.mlp.shared_expert_gate": {
236
+ "group_size": 64,
237
+ "bits": 8
238
+ },
239
+ "language_model.model.layers.28.mlp.gate": {
240
+ "group_size": 64,
241
+ "bits": 8
242
+ },
243
+ "language_model.model.layers.28.mlp.shared_expert_gate": {
244
+ "group_size": 64,
245
+ "bits": 8
246
+ },
247
+ "language_model.model.layers.29.mlp.gate": {
248
+ "group_size": 64,
249
+ "bits": 8
250
+ },
251
+ "language_model.model.layers.29.mlp.shared_expert_gate": {
252
+ "group_size": 64,
253
+ "bits": 8
254
+ },
255
+ "language_model.model.layers.30.mlp.gate": {
256
+ "group_size": 64,
257
+ "bits": 8
258
+ },
259
+ "language_model.model.layers.30.mlp.shared_expert_gate": {
260
+ "group_size": 64,
261
+ "bits": 8
262
+ },
263
+ "language_model.model.layers.31.mlp.gate": {
264
+ "group_size": 64,
265
+ "bits": 8
266
+ },
267
+ "language_model.model.layers.31.mlp.shared_expert_gate": {
268
+ "group_size": 64,
269
+ "bits": 8
270
+ },
271
+ "language_model.model.layers.32.mlp.gate": {
272
+ "group_size": 64,
273
+ "bits": 8
274
+ },
275
+ "language_model.model.layers.32.mlp.shared_expert_gate": {
276
+ "group_size": 64,
277
+ "bits": 8
278
+ },
279
+ "language_model.model.layers.33.mlp.gate": {
280
+ "group_size": 64,
281
+ "bits": 8
282
+ },
283
+ "language_model.model.layers.33.mlp.shared_expert_gate": {
284
+ "group_size": 64,
285
+ "bits": 8
286
+ },
287
+ "language_model.model.layers.34.mlp.gate": {
288
+ "group_size": 64,
289
+ "bits": 8
290
+ },
291
+ "language_model.model.layers.34.mlp.shared_expert_gate": {
292
+ "group_size": 64,
293
+ "bits": 8
294
+ },
295
+ "language_model.model.layers.35.mlp.gate": {
296
+ "group_size": 64,
297
+ "bits": 8
298
+ },
299
+ "language_model.model.layers.35.mlp.shared_expert_gate": {
300
+ "group_size": 64,
301
+ "bits": 8
302
+ },
303
+ "language_model.model.layers.36.mlp.gate": {
304
+ "group_size": 64,
305
+ "bits": 8
306
+ },
307
+ "language_model.model.layers.36.mlp.shared_expert_gate": {
308
+ "group_size": 64,
309
+ "bits": 8
310
+ },
311
+ "language_model.model.layers.37.mlp.gate": {
312
+ "group_size": 64,
313
+ "bits": 8
314
+ },
315
+ "language_model.model.layers.37.mlp.shared_expert_gate": {
316
+ "group_size": 64,
317
+ "bits": 8
318
+ },
319
+ "language_model.model.layers.38.mlp.gate": {
320
+ "group_size": 64,
321
+ "bits": 8
322
+ },
323
+ "language_model.model.layers.38.mlp.shared_expert_gate": {
324
+ "group_size": 64,
325
+ "bits": 8
326
+ },
327
+ "language_model.model.layers.39.mlp.gate": {
328
+ "group_size": 64,
329
+ "bits": 8
330
+ },
331
+ "language_model.model.layers.39.mlp.shared_expert_gate": {
332
+ "group_size": 64,
333
+ "bits": 8
334
+ }
335
+ },
336
+ "quantization_config": {
337
+ "group_size": 64,
338
+ "bits": 8,
339
+ "mode": "affine",
340
+ "language_model.model.layers.0.mlp.gate": {
341
+ "group_size": 64,
342
+ "bits": 8
343
+ },
344
+ "language_model.model.layers.0.mlp.shared_expert_gate": {
345
+ "group_size": 64,
346
+ "bits": 8
347
+ },
348
+ "language_model.model.layers.1.mlp.gate": {
349
+ "group_size": 64,
350
+ "bits": 8
351
+ },
352
+ "language_model.model.layers.1.mlp.shared_expert_gate": {
353
+ "group_size": 64,
354
+ "bits": 8
355
+ },
356
+ "language_model.model.layers.2.mlp.gate": {
357
+ "group_size": 64,
358
+ "bits": 8
359
+ },
360
+ "language_model.model.layers.2.mlp.shared_expert_gate": {
361
+ "group_size": 64,
362
+ "bits": 8
363
+ },
364
+ "language_model.model.layers.3.mlp.gate": {
365
+ "group_size": 64,
366
+ "bits": 8
367
+ },
368
+ "language_model.model.layers.3.mlp.shared_expert_gate": {
369
+ "group_size": 64,
370
+ "bits": 8
371
+ },
372
+ "language_model.model.layers.4.mlp.gate": {
373
+ "group_size": 64,
374
+ "bits": 8
375
+ },
376
+ "language_model.model.layers.4.mlp.shared_expert_gate": {
377
+ "group_size": 64,
378
+ "bits": 8
379
+ },
380
+ "language_model.model.layers.5.mlp.gate": {
381
+ "group_size": 64,
382
+ "bits": 8
383
+ },
384
+ "language_model.model.layers.5.mlp.shared_expert_gate": {
385
+ "group_size": 64,
386
+ "bits": 8
387
+ },
388
+ "language_model.model.layers.6.mlp.gate": {
389
+ "group_size": 64,
390
+ "bits": 8
391
+ },
392
+ "language_model.model.layers.6.mlp.shared_expert_gate": {
393
+ "group_size": 64,
394
+ "bits": 8
395
+ },
396
+ "language_model.model.layers.7.mlp.gate": {
397
+ "group_size": 64,
398
+ "bits": 8
399
+ },
400
+ "language_model.model.layers.7.mlp.shared_expert_gate": {
401
+ "group_size": 64,
402
+ "bits": 8
403
+ },
404
+ "language_model.model.layers.8.mlp.gate": {
405
+ "group_size": 64,
406
+ "bits": 8
407
+ },
408
+ "language_model.model.layers.8.mlp.shared_expert_gate": {
409
+ "group_size": 64,
410
+ "bits": 8
411
+ },
412
+ "language_model.model.layers.9.mlp.gate": {
413
+ "group_size": 64,
414
+ "bits": 8
415
+ },
416
+ "language_model.model.layers.9.mlp.shared_expert_gate": {
417
+ "group_size": 64,
418
+ "bits": 8
419
+ },
420
+ "language_model.model.layers.10.mlp.gate": {
421
+ "group_size": 64,
422
+ "bits": 8
423
+ },
424
+ "language_model.model.layers.10.mlp.shared_expert_gate": {
425
+ "group_size": 64,
426
+ "bits": 8
427
+ },
428
+ "language_model.model.layers.11.mlp.gate": {
429
+ "group_size": 64,
430
+ "bits": 8
431
+ },
432
+ "language_model.model.layers.11.mlp.shared_expert_gate": {
433
+ "group_size": 64,
434
+ "bits": 8
435
+ },
436
+ "language_model.model.layers.12.mlp.gate": {
437
+ "group_size": 64,
438
+ "bits": 8
439
+ },
440
+ "language_model.model.layers.12.mlp.shared_expert_gate": {
441
+ "group_size": 64,
442
+ "bits": 8
443
+ },
444
+ "language_model.model.layers.13.mlp.gate": {
445
+ "group_size": 64,
446
+ "bits": 8
447
+ },
448
+ "language_model.model.layers.13.mlp.shared_expert_gate": {
449
+ "group_size": 64,
450
+ "bits": 8
451
+ },
452
+ "language_model.model.layers.14.mlp.gate": {
453
+ "group_size": 64,
454
+ "bits": 8
455
+ },
456
+ "language_model.model.layers.14.mlp.shared_expert_gate": {
457
+ "group_size": 64,
458
+ "bits": 8
459
+ },
460
+ "language_model.model.layers.15.mlp.gate": {
461
+ "group_size": 64,
462
+ "bits": 8
463
+ },
464
+ "language_model.model.layers.15.mlp.shared_expert_gate": {
465
+ "group_size": 64,
466
+ "bits": 8
467
+ },
468
+ "language_model.model.layers.16.mlp.gate": {
469
+ "group_size": 64,
470
+ "bits": 8
471
+ },
472
+ "language_model.model.layers.16.mlp.shared_expert_gate": {
473
+ "group_size": 64,
474
+ "bits": 8
475
+ },
476
+ "language_model.model.layers.17.mlp.gate": {
477
+ "group_size": 64,
478
+ "bits": 8
479
+ },
480
+ "language_model.model.layers.17.mlp.shared_expert_gate": {
481
+ "group_size": 64,
482
+ "bits": 8
483
+ },
484
+ "language_model.model.layers.18.mlp.gate": {
485
+ "group_size": 64,
486
+ "bits": 8
487
+ },
488
+ "language_model.model.layers.18.mlp.shared_expert_gate": {
489
+ "group_size": 64,
490
+ "bits": 8
491
+ },
492
+ "language_model.model.layers.19.mlp.gate": {
493
+ "group_size": 64,
494
+ "bits": 8
495
+ },
496
+ "language_model.model.layers.19.mlp.shared_expert_gate": {
497
+ "group_size": 64,
498
+ "bits": 8
499
+ },
500
+ "language_model.model.layers.20.mlp.gate": {
501
+ "group_size": 64,
502
+ "bits": 8
503
+ },
504
+ "language_model.model.layers.20.mlp.shared_expert_gate": {
505
+ "group_size": 64,
506
+ "bits": 8
507
+ },
508
+ "language_model.model.layers.21.mlp.gate": {
509
+ "group_size": 64,
510
+ "bits": 8
511
+ },
512
+ "language_model.model.layers.21.mlp.shared_expert_gate": {
513
+ "group_size": 64,
514
+ "bits": 8
515
+ },
516
+ "language_model.model.layers.22.mlp.gate": {
517
+ "group_size": 64,
518
+ "bits": 8
519
+ },
520
+ "language_model.model.layers.22.mlp.shared_expert_gate": {
521
+ "group_size": 64,
522
+ "bits": 8
523
+ },
524
+ "language_model.model.layers.23.mlp.gate": {
525
+ "group_size": 64,
526
+ "bits": 8
527
+ },
528
+ "language_model.model.layers.23.mlp.shared_expert_gate": {
529
+ "group_size": 64,
530
+ "bits": 8
531
+ },
532
+ "language_model.model.layers.24.mlp.gate": {
533
+ "group_size": 64,
534
+ "bits": 8
535
+ },
536
+ "language_model.model.layers.24.mlp.shared_expert_gate": {
537
+ "group_size": 64,
538
+ "bits": 8
539
+ },
540
+ "language_model.model.layers.25.mlp.gate": {
541
+ "group_size": 64,
542
+ "bits": 8
543
+ },
544
+ "language_model.model.layers.25.mlp.shared_expert_gate": {
545
+ "group_size": 64,
546
+ "bits": 8
547
+ },
548
+ "language_model.model.layers.26.mlp.gate": {
549
+ "group_size": 64,
550
+ "bits": 8
551
+ },
552
+ "language_model.model.layers.26.mlp.shared_expert_gate": {
553
+ "group_size": 64,
554
+ "bits": 8
555
+ },
556
+ "language_model.model.layers.27.mlp.gate": {
557
+ "group_size": 64,
558
+ "bits": 8
559
+ },
560
+ "language_model.model.layers.27.mlp.shared_expert_gate": {
561
+ "group_size": 64,
562
+ "bits": 8
563
+ },
564
+ "language_model.model.layers.28.mlp.gate": {
565
+ "group_size": 64,
566
+ "bits": 8
567
+ },
568
+ "language_model.model.layers.28.mlp.shared_expert_gate": {
569
+ "group_size": 64,
570
+ "bits": 8
571
+ },
572
+ "language_model.model.layers.29.mlp.gate": {
573
+ "group_size": 64,
574
+ "bits": 8
575
+ },
576
+ "language_model.model.layers.29.mlp.shared_expert_gate": {
577
+ "group_size": 64,
578
+ "bits": 8
579
+ },
580
+ "language_model.model.layers.30.mlp.gate": {
581
+ "group_size": 64,
582
+ "bits": 8
583
+ },
584
+ "language_model.model.layers.30.mlp.shared_expert_gate": {
585
+ "group_size": 64,
586
+ "bits": 8
587
+ },
588
+ "language_model.model.layers.31.mlp.gate": {
589
+ "group_size": 64,
590
+ "bits": 8
591
+ },
592
+ "language_model.model.layers.31.mlp.shared_expert_gate": {
593
+ "group_size": 64,
594
+ "bits": 8
595
+ },
596
+ "language_model.model.layers.32.mlp.gate": {
597
+ "group_size": 64,
598
+ "bits": 8
599
+ },
600
+ "language_model.model.layers.32.mlp.shared_expert_gate": {
601
+ "group_size": 64,
602
+ "bits": 8
603
+ },
604
+ "language_model.model.layers.33.mlp.gate": {
605
+ "group_size": 64,
606
+ "bits": 8
607
+ },
608
+ "language_model.model.layers.33.mlp.shared_expert_gate": {
609
+ "group_size": 64,
610
+ "bits": 8
611
+ },
612
+ "language_model.model.layers.34.mlp.gate": {
613
+ "group_size": 64,
614
+ "bits": 8
615
+ },
616
+ "language_model.model.layers.34.mlp.shared_expert_gate": {
617
+ "group_size": 64,
618
+ "bits": 8
619
+ },
620
+ "language_model.model.layers.35.mlp.gate": {
621
+ "group_size": 64,
622
+ "bits": 8
623
+ },
624
+ "language_model.model.layers.35.mlp.shared_expert_gate": {
625
+ "group_size": 64,
626
+ "bits": 8
627
+ },
628
+ "language_model.model.layers.36.mlp.gate": {
629
+ "group_size": 64,
630
+ "bits": 8
631
+ },
632
+ "language_model.model.layers.36.mlp.shared_expert_gate": {
633
+ "group_size": 64,
634
+ "bits": 8
635
+ },
636
+ "language_model.model.layers.37.mlp.gate": {
637
+ "group_size": 64,
638
+ "bits": 8
639
+ },
640
+ "language_model.model.layers.37.mlp.shared_expert_gate": {
641
+ "group_size": 64,
642
+ "bits": 8
643
+ },
644
+ "language_model.model.layers.38.mlp.gate": {
645
+ "group_size": 64,
646
+ "bits": 8
647
+ },
648
+ "language_model.model.layers.38.mlp.shared_expert_gate": {
649
+ "group_size": 64,
650
+ "bits": 8
651
+ },
652
+ "language_model.model.layers.39.mlp.gate": {
653
+ "group_size": 64,
654
+ "bits": 8
655
+ },
656
+ "language_model.model.layers.39.mlp.shared_expert_gate": {
657
+ "group_size": 64,
658
+ "bits": 8
659
+ }
660
+ },
661
+ "text_config": {
662
+ "attention_bias": false,
663
+ "attention_dropout": 0.0,
664
+ "attn_output_gate": true,
665
+ "dtype": "bfloat16",
666
+ "eos_token_id": 248044,
667
+ "full_attention_interval": 4,
668
+ "head_dim": 256,
669
+ "hidden_act": "silu",
670
+ "hidden_size": 2048,
671
+ "initializer_range": 0.02,
672
+ "layer_types": [
673
+ "linear_attention",
674
+ "linear_attention",
675
+ "linear_attention",
676
+ "full_attention",
677
+ "linear_attention",
678
+ "linear_attention",
679
+ "linear_attention",
680
+ "full_attention",
681
+ "linear_attention",
682
+ "linear_attention",
683
+ "linear_attention",
684
+ "full_attention",
685
+ "linear_attention",
686
+ "linear_attention",
687
+ "linear_attention",
688
+ "full_attention",
689
+ "linear_attention",
690
+ "linear_attention",
691
+ "linear_attention",
692
+ "full_attention",
693
+ "linear_attention",
694
+ "linear_attention",
695
+ "linear_attention",
696
+ "full_attention",
697
+ "linear_attention",
698
+ "linear_attention",
699
+ "linear_attention",
700
+ "full_attention",
701
+ "linear_attention",
702
+ "linear_attention",
703
+ "linear_attention",
704
+ "full_attention",
705
+ "linear_attention",
706
+ "linear_attention",
707
+ "linear_attention",
708
+ "full_attention",
709
+ "linear_attention",
710
+ "linear_attention",
711
+ "linear_attention",
712
+ "full_attention"
713
+ ],
714
+ "linear_conv_kernel_dim": 4,
715
+ "linear_key_head_dim": 128,
716
+ "linear_num_key_heads": 16,
717
+ "linear_num_value_heads": 32,
718
+ "linear_value_head_dim": 128,
719
+ "max_position_embeddings": 262144,
720
+ "mlp_only_layers": [],
721
+ "model_type": "qwen3_5_moe_text",
722
+ "moe_intermediate_size": 512,
723
+ "mtp_num_hidden_layers": 1,
724
+ "mtp_use_dedicated_embeddings": false,
725
+ "num_attention_heads": 16,
726
+ "num_experts": 256,
727
+ "num_experts_per_tok": 8,
728
+ "num_hidden_layers": 40,
729
+ "num_key_value_heads": 2,
730
+ "rms_norm_eps": 1e-06,
731
+ "router_aux_loss_coef": 0.001,
732
+ "shared_expert_intermediate_size": 512,
733
+ "use_cache": true,
734
+ "vocab_size": 248320,
735
+ "mamba_ssm_dtype": "float32",
736
+ "rope_parameters": {
737
+ "mrope_interleaved": true,
738
+ "mrope_section": [
739
+ 11,
740
+ 11,
741
+ 10
742
+ ],
743
+ "rope_theta": 10000000,
744
+ "partial_rotary_factor": 0.25,
745
+ "type": "default"
746
+ }
747
+ },
748
+ "tie_word_embeddings": false,
749
+ "transformers_version": "4.57.0.dev0",
750
+ "video_token_id": 248057,
751
+ "vision_end_token_id": 248054,
752
+ "vision_start_token_id": 248053
753
+ }
conversion-provenance.json ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "llama_cpp": {
3
+ "tag": "b11118",
4
+ "commit": "e6ab7c1a41054a888ada952eab4c886444c2f5ad"
5
+ },
6
+ "ollama": "0.34.3",
7
+ "mlx": "0.32.2",
8
+ "mlx_lm": "0.31.3",
9
+ "convert_env": {
10
+ "torch": "2.11.0+cpu",
11
+ "transformers": "4.57.6"
12
+ },
13
+ "reference_runtime": {
14
+ "torch": "2.8.0+cu128",
15
+ "transformers": "5.16.1",
16
+ "effort": "high"
17
+ },
18
+ "hardware": "NVIDIA RTX PRO 6000 Blackwell 96GB (Linux); Apple M5 24GB for Mac checks",
19
+ "date": "2026-09-23",
20
+ "source_repository": "apus-ailab/APUS-OpenJev-v1-35B-A3B",
21
+ "source_revision": "4947385291375f6f5149b3156ff2811c65ebf020",
22
+ "base_model": "Qwen/Qwen3.5-35B-A3B"
23
+ }
conversion.json ADDED
@@ -0,0 +1,333 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "source_snapshot": "/workspace/ms-swift-jev/gguf-release-20260923/src/35B-A3B",
3
+ "recipe": {
4
+ "mode": "affine",
5
+ "bits": 8,
6
+ "group_size": 64
7
+ },
8
+ "quantization": {
9
+ "group_size": 64,
10
+ "bits": 8,
11
+ "mode": "affine",
12
+ "language_model.model.layers.0.mlp.gate": {
13
+ "group_size": 64,
14
+ "bits": 8
15
+ },
16
+ "language_model.model.layers.0.mlp.shared_expert_gate": {
17
+ "group_size": 64,
18
+ "bits": 8
19
+ },
20
+ "language_model.model.layers.1.mlp.gate": {
21
+ "group_size": 64,
22
+ "bits": 8
23
+ },
24
+ "language_model.model.layers.1.mlp.shared_expert_gate": {
25
+ "group_size": 64,
26
+ "bits": 8
27
+ },
28
+ "language_model.model.layers.2.mlp.gate": {
29
+ "group_size": 64,
30
+ "bits": 8
31
+ },
32
+ "language_model.model.layers.2.mlp.shared_expert_gate": {
33
+ "group_size": 64,
34
+ "bits": 8
35
+ },
36
+ "language_model.model.layers.3.mlp.gate": {
37
+ "group_size": 64,
38
+ "bits": 8
39
+ },
40
+ "language_model.model.layers.3.mlp.shared_expert_gate": {
41
+ "group_size": 64,
42
+ "bits": 8
43
+ },
44
+ "language_model.model.layers.4.mlp.gate": {
45
+ "group_size": 64,
46
+ "bits": 8
47
+ },
48
+ "language_model.model.layers.4.mlp.shared_expert_gate": {
49
+ "group_size": 64,
50
+ "bits": 8
51
+ },
52
+ "language_model.model.layers.5.mlp.gate": {
53
+ "group_size": 64,
54
+ "bits": 8
55
+ },
56
+ "language_model.model.layers.5.mlp.shared_expert_gate": {
57
+ "group_size": 64,
58
+ "bits": 8
59
+ },
60
+ "language_model.model.layers.6.mlp.gate": {
61
+ "group_size": 64,
62
+ "bits": 8
63
+ },
64
+ "language_model.model.layers.6.mlp.shared_expert_gate": {
65
+ "group_size": 64,
66
+ "bits": 8
67
+ },
68
+ "language_model.model.layers.7.mlp.gate": {
69
+ "group_size": 64,
70
+ "bits": 8
71
+ },
72
+ "language_model.model.layers.7.mlp.shared_expert_gate": {
73
+ "group_size": 64,
74
+ "bits": 8
75
+ },
76
+ "language_model.model.layers.8.mlp.gate": {
77
+ "group_size": 64,
78
+ "bits": 8
79
+ },
80
+ "language_model.model.layers.8.mlp.shared_expert_gate": {
81
+ "group_size": 64,
82
+ "bits": 8
83
+ },
84
+ "language_model.model.layers.9.mlp.gate": {
85
+ "group_size": 64,
86
+ "bits": 8
87
+ },
88
+ "language_model.model.layers.9.mlp.shared_expert_gate": {
89
+ "group_size": 64,
90
+ "bits": 8
91
+ },
92
+ "language_model.model.layers.10.mlp.gate": {
93
+ "group_size": 64,
94
+ "bits": 8
95
+ },
96
+ "language_model.model.layers.10.mlp.shared_expert_gate": {
97
+ "group_size": 64,
98
+ "bits": 8
99
+ },
100
+ "language_model.model.layers.11.mlp.gate": {
101
+ "group_size": 64,
102
+ "bits": 8
103
+ },
104
+ "language_model.model.layers.11.mlp.shared_expert_gate": {
105
+ "group_size": 64,
106
+ "bits": 8
107
+ },
108
+ "language_model.model.layers.12.mlp.gate": {
109
+ "group_size": 64,
110
+ "bits": 8
111
+ },
112
+ "language_model.model.layers.12.mlp.shared_expert_gate": {
113
+ "group_size": 64,
114
+ "bits": 8
115
+ },
116
+ "language_model.model.layers.13.mlp.gate": {
117
+ "group_size": 64,
118
+ "bits": 8
119
+ },
120
+ "language_model.model.layers.13.mlp.shared_expert_gate": {
121
+ "group_size": 64,
122
+ "bits": 8
123
+ },
124
+ "language_model.model.layers.14.mlp.gate": {
125
+ "group_size": 64,
126
+ "bits": 8
127
+ },
128
+ "language_model.model.layers.14.mlp.shared_expert_gate": {
129
+ "group_size": 64,
130
+ "bits": 8
131
+ },
132
+ "language_model.model.layers.15.mlp.gate": {
133
+ "group_size": 64,
134
+ "bits": 8
135
+ },
136
+ "language_model.model.layers.15.mlp.shared_expert_gate": {
137
+ "group_size": 64,
138
+ "bits": 8
139
+ },
140
+ "language_model.model.layers.16.mlp.gate": {
141
+ "group_size": 64,
142
+ "bits": 8
143
+ },
144
+ "language_model.model.layers.16.mlp.shared_expert_gate": {
145
+ "group_size": 64,
146
+ "bits": 8
147
+ },
148
+ "language_model.model.layers.17.mlp.gate": {
149
+ "group_size": 64,
150
+ "bits": 8
151
+ },
152
+ "language_model.model.layers.17.mlp.shared_expert_gate": {
153
+ "group_size": 64,
154
+ "bits": 8
155
+ },
156
+ "language_model.model.layers.18.mlp.gate": {
157
+ "group_size": 64,
158
+ "bits": 8
159
+ },
160
+ "language_model.model.layers.18.mlp.shared_expert_gate": {
161
+ "group_size": 64,
162
+ "bits": 8
163
+ },
164
+ "language_model.model.layers.19.mlp.gate": {
165
+ "group_size": 64,
166
+ "bits": 8
167
+ },
168
+ "language_model.model.layers.19.mlp.shared_expert_gate": {
169
+ "group_size": 64,
170
+ "bits": 8
171
+ },
172
+ "language_model.model.layers.20.mlp.gate": {
173
+ "group_size": 64,
174
+ "bits": 8
175
+ },
176
+ "language_model.model.layers.20.mlp.shared_expert_gate": {
177
+ "group_size": 64,
178
+ "bits": 8
179
+ },
180
+ "language_model.model.layers.21.mlp.gate": {
181
+ "group_size": 64,
182
+ "bits": 8
183
+ },
184
+ "language_model.model.layers.21.mlp.shared_expert_gate": {
185
+ "group_size": 64,
186
+ "bits": 8
187
+ },
188
+ "language_model.model.layers.22.mlp.gate": {
189
+ "group_size": 64,
190
+ "bits": 8
191
+ },
192
+ "language_model.model.layers.22.mlp.shared_expert_gate": {
193
+ "group_size": 64,
194
+ "bits": 8
195
+ },
196
+ "language_model.model.layers.23.mlp.gate": {
197
+ "group_size": 64,
198
+ "bits": 8
199
+ },
200
+ "language_model.model.layers.23.mlp.shared_expert_gate": {
201
+ "group_size": 64,
202
+ "bits": 8
203
+ },
204
+ "language_model.model.layers.24.mlp.gate": {
205
+ "group_size": 64,
206
+ "bits": 8
207
+ },
208
+ "language_model.model.layers.24.mlp.shared_expert_gate": {
209
+ "group_size": 64,
210
+ "bits": 8
211
+ },
212
+ "language_model.model.layers.25.mlp.gate": {
213
+ "group_size": 64,
214
+ "bits": 8
215
+ },
216
+ "language_model.model.layers.25.mlp.shared_expert_gate": {
217
+ "group_size": 64,
218
+ "bits": 8
219
+ },
220
+ "language_model.model.layers.26.mlp.gate": {
221
+ "group_size": 64,
222
+ "bits": 8
223
+ },
224
+ "language_model.model.layers.26.mlp.shared_expert_gate": {
225
+ "group_size": 64,
226
+ "bits": 8
227
+ },
228
+ "language_model.model.layers.27.mlp.gate": {
229
+ "group_size": 64,
230
+ "bits": 8
231
+ },
232
+ "language_model.model.layers.27.mlp.shared_expert_gate": {
233
+ "group_size": 64,
234
+ "bits": 8
235
+ },
236
+ "language_model.model.layers.28.mlp.gate": {
237
+ "group_size": 64,
238
+ "bits": 8
239
+ },
240
+ "language_model.model.layers.28.mlp.shared_expert_gate": {
241
+ "group_size": 64,
242
+ "bits": 8
243
+ },
244
+ "language_model.model.layers.29.mlp.gate": {
245
+ "group_size": 64,
246
+ "bits": 8
247
+ },
248
+ "language_model.model.layers.29.mlp.shared_expert_gate": {
249
+ "group_size": 64,
250
+ "bits": 8
251
+ },
252
+ "language_model.model.layers.30.mlp.gate": {
253
+ "group_size": 64,
254
+ "bits": 8
255
+ },
256
+ "language_model.model.layers.30.mlp.shared_expert_gate": {
257
+ "group_size": 64,
258
+ "bits": 8
259
+ },
260
+ "language_model.model.layers.31.mlp.gate": {
261
+ "group_size": 64,
262
+ "bits": 8
263
+ },
264
+ "language_model.model.layers.31.mlp.shared_expert_gate": {
265
+ "group_size": 64,
266
+ "bits": 8
267
+ },
268
+ "language_model.model.layers.32.mlp.gate": {
269
+ "group_size": 64,
270
+ "bits": 8
271
+ },
272
+ "language_model.model.layers.32.mlp.shared_expert_gate": {
273
+ "group_size": 64,
274
+ "bits": 8
275
+ },
276
+ "language_model.model.layers.33.mlp.gate": {
277
+ "group_size": 64,
278
+ "bits": 8
279
+ },
280
+ "language_model.model.layers.33.mlp.shared_expert_gate": {
281
+ "group_size": 64,
282
+ "bits": 8
283
+ },
284
+ "language_model.model.layers.34.mlp.gate": {
285
+ "group_size": 64,
286
+ "bits": 8
287
+ },
288
+ "language_model.model.layers.34.mlp.shared_expert_gate": {
289
+ "group_size": 64,
290
+ "bits": 8
291
+ },
292
+ "language_model.model.layers.35.mlp.gate": {
293
+ "group_size": 64,
294
+ "bits": 8
295
+ },
296
+ "language_model.model.layers.35.mlp.shared_expert_gate": {
297
+ "group_size": 64,
298
+ "bits": 8
299
+ },
300
+ "language_model.model.layers.36.mlp.gate": {
301
+ "group_size": 64,
302
+ "bits": 8
303
+ },
304
+ "language_model.model.layers.36.mlp.shared_expert_gate": {
305
+ "group_size": 64,
306
+ "bits": 8
307
+ },
308
+ "language_model.model.layers.37.mlp.gate": {
309
+ "group_size": 64,
310
+ "bits": 8
311
+ },
312
+ "language_model.model.layers.37.mlp.shared_expert_gate": {
313
+ "group_size": 64,
314
+ "bits": 8
315
+ },
316
+ "language_model.model.layers.38.mlp.gate": {
317
+ "group_size": 64,
318
+ "bits": 8
319
+ },
320
+ "language_model.model.layers.38.mlp.shared_expert_gate": {
321
+ "group_size": 64,
322
+ "bits": 8
323
+ },
324
+ "language_model.model.layers.39.mlp.gate": {
325
+ "group_size": 64,
326
+ "bits": 8
327
+ },
328
+ "language_model.model.layers.39.mlp.shared_expert_gate": {
329
+ "group_size": 64,
330
+ "bits": 8
331
+ }
332
+ }
333
+ }
evaluation/mlx-8bit.summary.json ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "variant": "35B-A3B-MLX-8bit",
3
+ "backend": "mlx 0.32.2 on Linux x86_64 (Device(gpu, 0))",
4
+ "rows": 80,
5
+ "correct": 71,
6
+ "reference_correct": 71,
7
+ "decision_agreement": 80,
8
+ "changed_panel_indexes": [],
9
+ "max_abs_probability_delta": 0.1930832862854004,
10
+ "mean_abs_probability_delta": 0.00731312684911245,
11
+ "peak_memory_gb": 38.66,
12
+ "seconds": 279.82,
13
+ "by_family": {
14
+ "browser": {
15
+ "rows": 16,
16
+ "correct": 13
17
+ },
18
+ "hs3": {
19
+ "rows": 16,
20
+ "correct": 14
21
+ },
22
+ "boolq": {
23
+ "rows": 16,
24
+ "correct": 16
25
+ },
26
+ "mnli": {
27
+ "rows": 16,
28
+ "correct": 13
29
+ },
30
+ "score": {
31
+ "rows": 16,
32
+ "correct": 15
33
+ }
34
+ }
35
+ }
examples/__pycache__/openjev_mlx.cpython-312.pyc ADDED
Binary file (5.13 kB). View file
 
examples/openjev_mlx.py ADDED
@@ -0,0 +1,90 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """Run APUS-OpenJev MLX on Apple Silicon: exact candidate distribution with mlx-lm.
2
+
3
+ pip install mlx-lm
4
+ python examples/openjev_mlx.py --model apus-ailab/APUS-OpenJev-v1-4B-MLX-8bit
5
+
6
+ The prompt is rendered by ``openjev_contracts.py`` (identical to the training
7
+ contract) inside the no-thinking chat turn; the candidate labels A..P are single
8
+ tokens and the distribution is the softmax of their final-position logits.
9
+ """
10
+
11
+ import argparse
12
+ import json
13
+ import sys
14
+ from pathlib import Path
15
+
16
+ import mlx.core as mx
17
+ from mlx_lm import load
18
+ from mlx_lm.models.cache import make_prompt_cache
19
+
20
+ sys.path.insert(0, str(Path(__file__).resolve().parent.parent))
21
+ from openjev_contracts import format_response, label_mapping, render_prompt # noqa: E402
22
+
23
+ MAX_TOKENS = 8192
24
+ PREFILL_STEP = 512 # chunked prefill keeps long prompts within unified memory
25
+
26
+
27
+ class OpenJevMLX:
28
+ def __init__(self, model_path):
29
+ self.model, self.tokenizer = load(model_path)
30
+
31
+ def compile(self, request):
32
+ mapping = label_mapping(request)
33
+ prompt = self.tokenizer.apply_chat_template(
34
+ [{"role": "user", "content": render_prompt(request)}],
35
+ tokenize=False,
36
+ add_generation_prompt=True,
37
+ enable_thinking=False,
38
+ )
39
+ ids = self.tokenizer.encode(prompt, add_special_tokens=False)
40
+ if not ids or len(ids) > MAX_TOKENS:
41
+ raise ValueError("input exceeds 8192 tokens; no truncation is performed")
42
+ candidates = []
43
+ for label in mapping:
44
+ token = self.tokenizer.encode(label, add_special_tokens=False)
45
+ if (
46
+ len(token) != 1
47
+ or self.tokenizer.encode(prompt + label, add_special_tokens=False)
48
+ != ids + token
49
+ ):
50
+ raise ValueError(
51
+ "candidate label is not a single token at the answer boundary"
52
+ )
53
+ candidates.append(token[0])
54
+ return ids, candidates
55
+
56
+ def decide(self, request):
57
+ ids, candidates = self.compile(request)
58
+ cache = make_prompt_cache(self.model)
59
+ for start in range(0, len(ids) - 1, PREFILL_STEP):
60
+ self.model(
61
+ mx.array([ids[start : min(start + PREFILL_STEP, len(ids) - 1)]]),
62
+ cache=cache,
63
+ )
64
+ mx.eval([c.state for c in cache])
65
+ logits = self.model(mx.array([ids[-1:]]), cache=cache)[0, -1].astype(
66
+ mx.float32
67
+ )[mx.array(candidates)]
68
+ response = format_response(request, mx.softmax(logits).tolist())
69
+ response.update(prompt_tokens=len(ids), calibrated=False)
70
+ return response
71
+
72
+
73
+ EXAMPLE = {
74
+ "id": "support-731",
75
+ "group_id": "support-731",
76
+ "primitive": "choice",
77
+ "state": "Order 731 was delivered. The customer confirms that the issue is resolved.",
78
+ "instructions": "Select the next support action.",
79
+ "criteria": [
80
+ {"id": "close_ticket", "description": "Close the ticket as resolved."},
81
+ {"id": "escalate", "description": "Escalate to a human agent."},
82
+ {"id": "refund", "description": "Issue a refund."},
83
+ ],
84
+ }
85
+
86
+ if __name__ == "__main__":
87
+ parser = argparse.ArgumentParser()
88
+ parser.add_argument("--model", required=True, help="local directory or HF repo id")
89
+ args = parser.parse_args()
90
+ print(json.dumps(OpenJevMLX(args.model).decide(EXAMPLE), indent=2))
generation_config.json ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
+ "transformers_version": "4.57.0.dev0"
13
+ }
model-00001-of-00007.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:fb31d46ea29bb4429b828548f9be2080ccd8ba8f278db777bef6c33aa3df5db6
3
+ size 5332147837
model-00002-of-00007.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:3299609e945c61d3ac5efdac529c07e885e2d3e23d1f8130de06d1930c86c7f1
3
+ size 5358685713
model-00003-of-00007.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:38d143b3f4dd22a12bc7e7d98a2277fa78b3eec1d2b1cb5e6d48de84a4fb8827
3
+ size 5365575812
model-00004-of-00007.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:06c3f4d1adfde9574e8816ed5fd543a8befa928c2350d0fc2aa38d9d45c3d19c
3
+ size 5358685928
model-00005-of-00007.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:1157d29c8c9adbe7d90652600a117ddc8e25cff3313564288cf70abe9b21628e
3
+ size 5365575810
model-00006-of-00007.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:421376fe42ed238918fa499373a760e8894e58d8bb6b28e6be07db58bc4f98ed
3
+ size 5358685910
model-00007-of-00007.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:ea5477a20a735dea1b19b2c5f4500586633cad8f41b36c4fab579aa4f2687318
3
+ size 4688875091
model.safetensors.index.json ADDED
The diff for this file is too large to render. See raw diff
 
openjev_contracts.py ADDED
@@ -0,0 +1,102 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """Small shared contract. Prompts use a strict whitelist of input fields."""
2
+
3
+ import json
4
+ import math
5
+
6
+ PROMPT_VERSION = "jev.dynamic.prompt.v2"
7
+ LABELS = tuple("ABCDEFGHIJKLMNOP")
8
+ BINARY_CRITERIA = [
9
+ {"id": "yes", "description": "The stated proposition is true."},
10
+ {"id": "no", "description": "The stated proposition is false."},
11
+ ]
12
+
13
+
14
+ def validate_request(record):
15
+ for key in ("id", "group_id", "state", "instructions"):
16
+ if not isinstance(record.get(key), str) or not record[key].strip():
17
+ raise ValueError(f"{key} must be a nonempty string")
18
+ if record.get("primitive") not in ("choice", "noul", "score_level"):
19
+ raise ValueError("unsupported primitive")
20
+ criteria = record.get("criteria")
21
+ if not isinstance(criteria, list) or not 2 <= len(criteria) <= len(LABELS):
22
+ raise ValueError("criteria must contain 2..16 candidates")
23
+ ids = []
24
+ for candidate in criteria:
25
+ if not isinstance(candidate, dict):
26
+ raise TypeError("candidate must be an object")
27
+ for key in ("id", "description"):
28
+ if not isinstance(candidate.get(key), str) or not candidate[key].strip():
29
+ raise ValueError(f"candidate {key} must be nonempty")
30
+ ids.append(candidate["id"])
31
+ if len(set(ids)) != len(ids):
32
+ raise ValueError("duplicate candidate ids")
33
+ if record["primitive"] != "choice" and criteria != BINARY_CRITERIA:
34
+ raise ValueError("noul and score_level require canonical yes/no criteria")
35
+
36
+
37
+ def validate_record(record):
38
+ validate_request(record)
39
+ if record.get("gold") not in [c["id"] for c in record["criteria"]]:
40
+ raise ValueError("gold must be a candidate id")
41
+ if not isinstance(record.get("provenance"), dict):
42
+ raise TypeError("provenance must be an object")
43
+
44
+
45
+ def label_mapping(record):
46
+ validate_request(record)
47
+ return dict(zip(LABELS, (c["id"] for c in record["criteria"])))
48
+
49
+
50
+ def render_prompt_parts(record):
51
+ """Text prefix/suffix; callers MUST check tokenizer boundary equivalence."""
52
+ validate_request(record)
53
+ prefix = "Shared state:\n" + record["state"] + "\n\n"
54
+ task = {
55
+ "primitive": record["primitive"],
56
+ "instructions": record["instructions"],
57
+ "criteria": [
58
+ {"label": label, "description": candidate["description"]}
59
+ for label, candidate in zip(LABELS, record["criteria"])
60
+ ],
61
+ }
62
+ suffix = json.dumps(task, ensure_ascii=False, sort_keys=True)
63
+ suffix += (
64
+ "\nReturn only the selected letter: "
65
+ + ", ".join(LABELS[: len(record["criteria"])])
66
+ + ".\nAnswer:"
67
+ )
68
+ return prefix, suffix
69
+
70
+
71
+ def render_prompt(record):
72
+ return "".join(render_prompt_parts(record))
73
+
74
+
75
+ def to_messages(record):
76
+ validate_record(record)
77
+ inverse = {candidate: label for label, candidate in label_mapping(record).items()}
78
+ return {
79
+ "messages": [
80
+ {"role": "user", "content": render_prompt(record)},
81
+ {"role": "assistant", "content": inverse[record["gold"]]},
82
+ ]
83
+ }
84
+
85
+
86
+ def format_response(record, probabilities):
87
+ """Map ordered candidate probabilities; score_level is NOT aggregate Score."""
88
+ mapping = label_mapping(record)
89
+ values = list(probabilities)
90
+ if len(values) != len(mapping) or any(
91
+ not math.isfinite(p) or p < 0 or p > 1 for p in values
92
+ ):
93
+ raise ValueError("invalid probabilities")
94
+ if not math.isclose(sum(values), 1, abs_tol=1e-5):
95
+ raise ValueError("probabilities must sum to one")
96
+ distribution = dict(zip(mapping.values(), values))
97
+ result = {"type": record["primitive"], "probabilities": distribution}
98
+ if record["primitive"] == "choice":
99
+ result["choice"] = max(distribution, key=distribution.get)
100
+ else:
101
+ result["yes_probability"] = distribution["yes"]
102
+ return result
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
+ }