michaljach commited on
Commit
e5b8f61
·
verified ·
1 Parent(s): 25ccbd9

Release Jet v6: full merged Qwen3.5-4B BF16 weights and native typed inference

Browse files
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 CHANGED
@@ -1,130 +1,133 @@
1
  ---
2
  license: apache-2.0
3
- base_model: Qwen/Qwen3-0.6B
4
- library_name: mlx
5
  language:
6
  - en
7
  tags:
8
  - decision-model
9
- - text-classification
10
- - mlx
11
- - qwen3
12
- - lora
13
  ---
14
 
15
  # Jet
16
 
17
- The new **[Jet 4B release](https://huggingface.co/michaljach/jet-4b)** is available separately. This repository contains the Qwen3-0.6B model.
 
 
18
 
19
- Jet is a small decision model built on **Qwen3-0.6B**. Give it a state and named,
20
- typed questions; it returns choices, scores, and probabilities without generating
21
- free-form text. Answers always follow the requested type, but decisions can still
22
- be wrong.
23
 
24
- [Model weights](https://huggingface.co/michaljach/jet) ·
25
- [Hugging Face demo](https://huggingface.co/spaces/michaljach/jet) ·
26
- [Training history](TRAINING_HISTORY.md)
27
-
28
- | Type | Criteria | Answer |
29
  |---|---|---|
30
- | `choice` | 2–255 named options | Selected key, probability per key, confidence |
31
- | `score` | 2–10 ordered levels | Fractional score, selected level, probabilities |
32
- | `noul` | None | Probability that the answer is yes |
33
 
34
- ## Run locally
 
35
 
36
- ```sh
37
- git clone https://github.com/jach-labs/jet
38
- cd jet
39
- uv sync # Apple Silicon / Metal
40
- # Linux with NVIDIA: uv sync --extra cuda
41
- JET_API_KEY=secret uv run jet-serve --base-model michaljach/jet
42
- ```
43
 
44
- ```sh
45
- curl http://localhost:8000/v1/decide \
46
- -H 'Authorization: Bearer secret' \
47
- -H 'Content-Type: application/json' \
48
- -d '{"state":"I was charged twice this month.","questions":{"topic":{"type":"choice","instructions":"What is the primary issue?","criteria":{"billing":"billing or payment problem","bug":"the product is broken"}},"escalate":{"type":"noul","instructions":"Does this require human support?"}}}'
49
- ```
50
 
51
- The model requires Jet's prompt format and label-token readout. It is not a chat
52
- model. The MLX server shares the state prefix across questions, applies the saved
53
- calibration temperatures, and returns typed answers. Serving truncates long states
54
- in the middle; the Decision Index adapter instead requires complete inputs.
55
-
56
- ## How it works
57
-
58
- Each answer option maps to a single token. Jet reads the next-token logits only
59
- for those labels and applies softmax with a temperature fitted on held-out data.
60
- Standard serving uses one forward pass per question, without sampling.
61
- The fused bf16 weights include the trained LoRA updates.
62
-
63
- The benchmark package also provides `decision_index_ensemble:TwoOrderJetEngine`.
64
- It averages original and reversed option-order probabilities using exact option
65
- keys. This approximately doubles forward-pass work and is separate from the
66
- standard serving API.
67
-
68
- ## Training and evaluation
69
-
70
- The current checkpoint was trained locally on an RTX 4080 Super with MLX CUDA.
71
- The final training stage used 15,997 examples, rank-16 LoRA, learning rate `1e-5`,
72
- gradient checkpointing, and one epoch. Selection chose step 3,500 of 3,570.
73
- Public training partitions and deterministic generators cover relevance,
74
- entailment, stance, sarcasm, routing, arithmetic, Boolean rules, code behavior,
75
- commonsense completion, and tool-response preference. Calibration uses a separate
76
- held-out split.
77
-
78
- | Held-out set | Rows | Accuracy |
79
- |---|---:|---:|
80
- | General typed decisions | 3,683 | 66.66% |
81
- | Intent, entailment, commonsense and tool-response preference | 600 | 73.50% |
82
- | Transfer tasks | 720 | 67.50% |
83
- | Domain-held-out tool routing | 240 | 85.00% |
84
-
85
- These are single-order adapter measurements. They are not a Decision Index
86
- leaderboard score. Partial public benchmark reconstructions do not cover the
87
- complete current suite. Cross-dataset text overlap inherited during training
88
- also prevents a certified decontamination claim. Performance varies by task;
89
- see the [evaluation report](https://huggingface.co/michaljach/jet/blob/ee7d33ecae2b8bee30891657dd57c92d34e0ce53/docs/training/jet-v5/summary.md) for full methodology,
90
- limitations, and the separate two-order results.
91
-
92
- To reproduce training, source acquisition, audits, and evaluation, use the
93
- [recorded protocol](https://huggingface.co/michaljach/jet/blob/ee7d33ecae2b8bee30891657dd57c92d34e0ce53/docs/training/jet-v5/protocol.md) and scripts under `scripts/`.
94
- Dataset sources, revisions, exclusion checks, configuration, and checkpoint hashes
95
- are recorded under `docs/training/`.
96
 
97
  ```sh
98
- # CUDA launcher prepares the MLX CUDA environment.
99
- ./train_cuda.sh --help
100
- uv run jet-calibrate --adapter /path/to/adapter --data /path/to/calibration.jsonl
101
- uv run jet-fuse --adapter /path/to/adapter --out models/jet
102
- uv run jet-eval --base-model models/jet --data data/test.jsonl
 
103
  ```
104
 
105
- Optional `jet-distill` data generation uses Anthropic credentials or the
106
- `--backend claude-code` mode. It is not required for serving or reproducing the
107
- public-source training pipeline; hosted generation can incur charges.
108
-
109
- ## Deployment
110
-
111
- The Hugging Face model package includes fused bf16 weights, tokenizer,
112
- calibration, golden reference vectors, and a q8 ONNX export. The Gradio Space
113
- uses a pinned model revision and exposes `/decide`; its availability depends on
114
- Hugging Face's free hosting quota. See [deployment instructions](https://github.com/jach-labs/jet/blob/main/deploy/huggingface/README.md).
115
 
116
- The ONNX model supports CPU and browser runtimes through ONNX Runtime.
117
- `jet-golden` generates reference cases, and `export_web.sh` exports and checks
118
- the browser model. Export validation is recorded with the model package;
119
- quantization can change probabilities.
120
-
121
- ## Project layout
122
-
123
- - `src/format.py`, `src/inference.py`: prompts and typed answers
124
- - `src/model.py`, `src/torch_model.py`, `src/onnx_model.py`: inference backends
125
- - `src/train.py`, `src/evaluate.py`, `src/fuse.py`: training, calibration, evaluation and fusion
126
- - `src/data/`, `scripts/`: data builders and reproducible experiments
127
- - `src/decision_index_engine.py`, `src/decision_index_ensemble.py`: benchmark adapters
128
- - `deploy/huggingface/`: hosted demo and API deployment
129
 
130
- Detailed experiment files are preserved in the [training archive](https://huggingface.co/michaljach/jet/tree/training-archive-20260924/docs/training).
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  ---
2
  license: apache-2.0
3
+ base_model: Qwen/Qwen3.5-4B
4
+ library_name: transformers
5
  language:
6
  - en
7
  tags:
8
  - decision-model
9
+ - qwen3_5
10
+ - transformers
11
+ - calibrated
 
12
  ---
13
 
14
  # Jet
15
 
16
+ Jet is a typed decision model based on Qwen3.5-4B. It selects from supplied
17
+ options and returns calibrated label probabilities, without generating free-form answers.
18
+ This release contains the **full merged BF16 model**. It loads directly without a separate base-model download or LoRA adapter.
19
 
20
+ **Version:** v6.0.0 · **Checkpoint:** step 3750 · **Released:** 2026-09-24.
 
 
 
21
 
22
+ | Question type | Input | Output |
 
 
 
 
23
  |---|---|---|
24
+ | `choice` | 2–255 named options | Selected key and probabilities |
25
+ | `score` | 2–10 ordered levels | Expected zero-based score, selected level and probabilities |
26
+ | `noul` | Yes/no question | Probability of yes |
27
 
28
+ The model is trained for text decisions. It is not a general chat or image model.
29
+ The previous Qwen3-0.6B release is preserved under the `qwen3-0.6b-final` tag in this repository.
30
 
31
+ ## Run
 
 
 
 
 
 
32
 
33
+ Tested backend: Python 3.12 on Linux, NVIDIA CUDA, PyTorch 2.11.0 + CUDA 12.8,
34
+ Transformers 5.17.0 for the included optimized runtime. Training used FP32 LoRA parameters; this
35
+ release merges them into BF16 weights. The original base revision is
36
+ `851bf6e806efd8d0a36b00ddf55e13ccb7b8cd0a`.
 
 
37
 
38
+ Download the versioned repository, install dependencies in a dedicated environment,
39
+ then run from that directory. Inference uses only the downloaded model files.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
40
 
41
  ```sh
42
+ hf download michaljach/jet --revision v6.0.0 --local-dir jet
43
+ cd jet
44
+ python -m pip install -r requirements.txt
45
+ python jet.py <<'JSON'
46
+ {"state":"I was charged twice this month.","questions":{"topic":{"type":"choice","instructions":"What is the primary issue?","criteria":{"billing":"billing or payment problem","bug":"the product is broken"}}}}
47
+ JSON
48
  ```
49
 
50
+ Or use the included Python wrapper:
 
 
 
 
 
 
 
 
 
51
 
52
+ ```python
53
+ from jet import Jet
54
+ model = Jet()
55
+ result = model.decide(
56
+ "I was charged twice this month.",
57
+ {"billing": {"type": "noul", "instructions": "Is this a billing issue?"}},
58
+ )
59
+ print(result)
60
+ ```
 
 
 
 
61
 
62
+ Use the native prompt and restricted label-token readout in these files. Generic
63
+ text-generation pipelines do not implement Jet's typed inference or calibration.
64
+ The wrapper rejects any complete question prompt over 8192 tokens rather than
65
+ truncating it. Questions are processed sequentially without shared-prefix caching.
66
+ `confidence` is normalized inverse entropy, not a separate correctness probability.
67
+ The FLA kernel is enabled; causal convolution uses the PyTorch fallback.
68
+ The previous Qwen3-0.6B MLX/ONNX exports belong to the archived release. This
69
+ release provides BF16 Transformers weights; its native typed API is shown above.
70
+
71
+ ## Training
72
+
73
+ - 15,997 `train_v5_r2` examples; one epoch, 4,000 optimizer updates.
74
+ - Fresh LoRA rank/alpha 16, dropout 0.05, learning rate 1e-4, batch 1 × accumulation 4.
75
+ - Soft-target objective, label smoothing 0.02, ordinal loss weight 2; seed 240924.
76
+ - Selected step 3750 by lowest NLL on a separate 1,400-row selection split.
77
+ - Training ran on one RTX 4080 SUPER 16 GB, about 2 h 26 min; peak allocated memory 10.39 GB.
78
+ - Calibration uses a separate 1,400-row split and per-type temperature scaling.
79
+
80
+ Training and evaluation inherit Jet v5's public-source classification, ordinal and
81
+ yes/no mixtures and earlier source-exposure limitations. Source overlap has not
82
+ been comprehensively ruled out. Dataset files are not included in this release.
83
+ The backbone and pilot were selected using earlier validation results.
84
+
85
+ ## Evaluation at release
86
+
87
+ | Evaluation | Result |
88
+ |---|---:|
89
+ | Selection accuracy, 1,400 rows | 87.93% |
90
+ | Selection NLL | 0.3561 |
91
+ | Independent local test accuracy, 600 rows | 94.00% |
92
+ | Local test NLL, raw / calibrated | 0.2176 / 0.2199 |
93
+ | Sampled benchmark requests | 1,900 across 15 datasets |
94
+ | Errors / unsupported requests in that diagnostic | 0 / 0 |
95
+ | Official Decision Index 0.2 overall | **Not measured** |
96
+
97
+ Calibration slightly worsened NLL on the independent local test; it was not retuned
98
+ on that test. These local results are not the overall Decision Index.
99
+
100
+ Selected diagnostic results (different case sets from the public leaderboard):
101
+
102
+ | Benchmark | Sample size | Metric | Jet score |
103
+ |---|---:|---|---:|
104
+ | GSM8K | 112 | accuracy | 76.79% |
105
+ | NLI4CT | 55 | macro-F1 | 84.01% |
106
+ | ContractNLI | 56 | macro-F1 | 74.04% |
107
+ | CRUXEval | 55 | accuracy | 38.18% |
108
+ | WinoGrande | 200 | accuracy | 64.50% |
109
+ | HellaSwag | 200 | accuracy | 91.00% |
110
+
111
+ The expanded full-benchmark evaluation is in progress at release. The current
112
+ [Decision Index](https://huggingface.co/spaces/multimodalart/jev-decision-index)
113
+ requires 40 benchmarks across five areas with chance-corrected scoring. Access to
114
+ HLE and the complete matching release-v2 corpus/recipes is still required. No
115
+ subset average is presented as an overall score or rank.
116
+
117
+ Aggregate diagnostic metrics are in `evaluation.json`; `merge-provenance.json`
118
+ records the selected checkpoint and merge. `release-manifest.json` records file hashes.
119
+ `merge-validation.json` measures merged-versus-adapter behavior; the scores above
120
+ were measured on the unmerged adapter. In 36 fixed comparison cases (12 per
121
+ question type), 35 argmax answers matched; one ordinal answer changed. The largest
122
+ absolute calibrated-probability difference was 0.04373 (4.37 percentage points).
123
+ This is the expected distinction between separate LoRA inference and merging into
124
+ BF16 weights; the merged model is not claimed to be bit-identical.
125
+ Decisions can be wrong, and calibration on this mixture does not guarantee
126
+ calibration on another domain. Exact-state checks found no diagnostic/training
127
+ matches but are not comprehensive contamination certification.
128
+
129
+ ## License
130
+
131
+ Apache-2.0, consistent with the base model and previous Jet release. Upstream data
132
+ sources retain their own terms. This repository does not redistribute training
133
+ or benchmark datasets.
TRAINING_HISTORY.md DELETED
@@ -1,71 +0,0 @@
1
- # Jet training history
2
-
3
- All runs below use Qwen3-0.6B unless stated otherwise. Results depend on the
4
- specified splits and inference backend; partial benchmark samples are not official
5
- Decision Index scores. Historical reports use “released Jet” to mean the model
6
- published at the time of that experiment, not necessarily today's release.
7
-
8
- ## Initial experiments and V2
9
-
10
- Public-source training introduced choice, score and yes/no decisions, followed
11
- by varied-scale ordinal questions. V2 used two epochs and 2,910 steps, selecting
12
- step 2,750 by validation NLL. The fused release reached about 67.7% accuracy on
13
- the 3,683-row general test. A Qwen3-1.7B comparison was evaluated but not retained.
14
-
15
- The complete original tables, earlier 1,500-row experiment, ordinal evaluation,
16
- and Kev transfer evaluation are preserved in [initial results](https://huggingface.co/michaljach/jet/blob/ee7d33ecae2b8bee30891657dd57c92d34e0ce53/docs/training/initial-results.md).
17
-
18
- ## V3 — broader decision training
19
-
20
- Added relevance, entailment, stance, sarcasm, tool selection, Boolean rules,
21
- arithmetic and code behavior. Trained on 47,313 rows for two epochs / 4,888
22
- steps with rank-16 LoRA and learning rate `1e-4`.
23
- New-family accuracy reached 80.6%; general-test accuracy regressed to 65.2%.
24
-
25
- [Experiment report](https://huggingface.co/michaljach/jet/blob/ee7d33ecae2b8bee30891657dd57c92d34e0ce53/docs/training/jet-v3/summary.md)
26
-
27
- ## Warm start and V4 — transfer and routing
28
-
29
- A lower-learning-rate warm start was followed by transfer and routing training.
30
- V4 reached 66.4% general-test accuracy and 93.3% on domain-held-out tool routing.
31
- It improved several partial language/relevance diagnostics but regressed on code.
32
- A CPU-fused bf16/q8 release package was prepared separately.
33
-
34
- [Training and comparisons](https://huggingface.co/michaljach/jet/blob/ee7d33ecae2b8bee30891657dd57c92d34e0ce53/docs/training/jet-next/summary.md) ·
35
- [Export preparation](https://huggingface.co/michaljach/jet/blob/ee7d33ecae2b8bee30891657dd57c92d34e0ce53/docs/training/jet-v4-release.md)
36
-
37
- ## V5 — wider intent and adversarial language tasks
38
-
39
- Continued from V4 with 7,997 retained examples and 2,000 each from native training
40
- partitions of CLINC150, ANLI, HellaSwag and When2Call preference data.
41
- The completed R2 run used 15,997 rows, one epoch / 3,570 steps, rank 16,
42
- learning rate `1e-5`, and selected step 3,500. Calibration was separate.
43
-
44
- The first attempt was stopped after identifying retained utterances shared with
45
- native evaluation content. R2 removes three such utterances from continuation
46
- training, but does not erase inherited cross-dataset overlap in its initialization.
47
- The checkpoint is not certified decontaminated.
48
-
49
- | Held-out accuracy | V4 | V5 |
50
- |---|---:|---:|
51
- | General test | 66.44% | 66.66% |
52
- | New families | 59.00% | 73.50% |
53
- | Transfer tasks | 65.97% | 67.50% |
54
- | Domain-held-out tool routing | 93.33% | 85.00% |
55
-
56
- Selection-only evaluation chose original/reversed option-order averaging for the
57
- benchmark adapter. This increases inference work and is not part of standard
58
- serving. Gains and regressions on fixed public benchmark samples are recorded
59
- separately; no overall leaderboard result or win has been established.
60
-
61
- [Results](https://huggingface.co/michaljach/jet/blob/ee7d33ecae2b8bee30891657dd57c92d34e0ce53/docs/training/jet-v5/summary.md) ·
62
- [Protocol](https://huggingface.co/michaljach/jet/blob/ee7d33ecae2b8bee30891657dd57c92d34e0ce53/docs/training/jet-v5/protocol.md) ·
63
- [Completion audit](https://huggingface.co/michaljach/jet/blob/ee7d33ecae2b8bee30891657dd57c92d34e0ce53/docs/training/jet-v5/completion-audit.json)
64
-
65
- ## Release — 2026-09-24
66
-
67
- The current release is the V5 R2 selected checkpoint, fused with native MLX CUDA,
68
- with a calibrated bf16 model and validated q8 ONNX export. Export and publication
69
- receipts are recorded in [release notes](https://huggingface.co/michaljach/jet/blob/ee7d33ecae2b8bee30891657dd57c92d34e0ce53/docs/training/jet-v5-release.md).
70
-
71
- Detailed experiment files are preserved in the [training archive](https://huggingface.co/michaljach/jet/tree/training-archive-20260924/docs/training).
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
calibration.json CHANGED
@@ -1,5 +1,5 @@
1
  {
2
- "choice": 1.0,
3
- "score": 1.2968,
4
- "noul": 1.4983
5
- }
 
1
  {
2
+ "choice": 1.1224620483093728,
3
+ "score": 1.155352696872273,
4
+ "noul": 1.5422108254079405
5
+ }
chat_template.jinja CHANGED
@@ -1,85 +1,154 @@
1
- {%- if tools %}
2
- {{- '<|im_start|>system\n' }}
3
- {%- if messages[0].role == 'system' %}
4
- {{- messages[0].content + '\n\n' }}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5
  {%- endif %}
6
- {{- "# Tools\n\nYou may call one or more functions to assist with the user query.\n\nYou are provided with function signatures within <tools></tools> XML tags:\n<tools>" }}
 
 
 
 
 
 
7
  {%- for tool in tools %}
8
  {{- "\n" }}
9
  {{- tool | tojson }}
10
  {%- endfor %}
11
- {{- "\n</tools>\n\nFor each function call, return a json object with function name and arguments within <tool_call></tool_call> XML tags:\n<tool_call>\n{\"name\": <function-name>, \"arguments\": <args-json-object>}\n</tool_call><|im_end|>\n" }}
 
 
 
 
 
 
 
 
12
  {%- else %}
13
  {%- if messages[0].role == 'system' %}
14
- {{- '<|im_start|>system\n' + messages[0].content + '<|im_end|>\n' }}
 
15
  {%- endif %}
16
  {%- endif %}
17
  {%- set ns = namespace(multi_step_tool=true, last_query_index=messages|length - 1) %}
18
  {%- for message in messages[::-1] %}
19
  {%- set index = (messages|length - 1) - loop.index0 %}
20
- {%- if ns.multi_step_tool and message.role == "user" and not(message.content.startswith('<tool_response>') and message.content.endswith('</tool_response>')) %}
21
- {%- set ns.multi_step_tool = false %}
22
- {%- set ns.last_query_index = index %}
 
 
 
23
  {%- endif %}
24
  {%- endfor %}
 
 
 
25
  {%- for message in messages %}
26
- {%- if (message.role == "user") or (message.role == "system" and not loop.first) %}
27
- {{- '<|im_start|>' + message.role + '\n' + message.content + '<|im_end|>' + '\n' }}
 
 
 
 
 
28
  {%- elif message.role == "assistant" %}
29
- {%- set content = message.content %}
30
  {%- set reasoning_content = '' %}
31
- {%- if message.reasoning_content is defined and message.reasoning_content is not none %}
32
  {%- set reasoning_content = message.reasoning_content %}
33
  {%- else %}
34
- {%- if '</think>' in message.content %}
35
- {%- set content = message.content.split('</think>')[-1].lstrip('\n') %}
36
- {%- set reasoning_content = message.content.split('</think>')[0].rstrip('\n').split('<think>')[-1].lstrip('\n') %}
37
  {%- endif %}
38
  {%- endif %}
 
39
  {%- if loop.index0 > ns.last_query_index %}
40
- {%- if loop.last or (not loop.last and reasoning_content) %}
41
- {{- '<|im_start|>' + message.role + '\n<think>\n' + reasoning_content.strip('\n') + '\n</think>\n\n' + content.lstrip('\n') }}
42
- {%- else %}
43
- {{- '<|im_start|>' + message.role + '\n' + content }}
44
- {%- endif %}
45
  {%- else %}
46
  {{- '<|im_start|>' + message.role + '\n' + content }}
47
  {%- endif %}
48
- {%- if message.tool_calls %}
49
  {%- for tool_call in message.tool_calls %}
50
- {%- if (loop.first and content) or (not loop.first) %}
51
- {{- '\n' }}
52
- {%- endif %}
53
- {%- if tool_call.function %}
54
  {%- set tool_call = tool_call.function %}
55
  {%- endif %}
56
- {{- '<tool_call>\n{"name": "' }}
57
- {{- tool_call.name }}
58
- {{- '", "arguments": ' }}
59
- {%- if tool_call.arguments is string %}
60
- {{- tool_call.arguments }}
 
61
  {%- else %}
62
- {{- tool_call.arguments | tojson }}
63
  {%- endif %}
64
- {{- '}\n</tool_call>' }}
 
 
 
 
 
 
 
 
65
  {%- endfor %}
66
  {%- endif %}
67
  {{- '<|im_end|>\n' }}
68
  {%- elif message.role == "tool" %}
69
- {%- if loop.first or (messages[loop.index0 - 1].role != "tool") %}
70
  {{- '<|im_start|>user' }}
71
  {%- endif %}
72
  {{- '\n<tool_response>\n' }}
73
- {{- message.content }}
74
  {{- '\n</tool_response>' }}
75
- {%- if loop.last or (messages[loop.index0 + 1].role != "tool") %}
 
 
76
  {{- '<|im_end|>\n' }}
77
  {%- endif %}
 
 
78
  {%- endif %}
79
  {%- endfor %}
80
  {%- if add_generation_prompt %}
81
  {{- '<|im_start|>assistant\n' }}
82
  {%- if enable_thinking is defined and enable_thinking is false %}
83
  {{- '<think>\n\n</think>\n\n' }}
 
 
84
  {%- endif %}
85
  {%- endif %}
 
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 CHANGED
@@ -1,30 +1,83 @@
1
  {
2
- "architectures": [
3
- "Qwen3ForCausalLM"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4
  ],
5
- "attention_bias": false,
6
- "attention_dropout": 0.0,
7
- "bos_token_id": 151643,
8
- "eos_token_id": 151645,
9
- "head_dim": 128,
10
- "hidden_act": "silu",
11
- "hidden_size": 1024,
12
- "initializer_range": 0.02,
13
- "intermediate_size": 3072,
14
- "max_position_embeddings": 40960,
15
- "max_window_layers": 28,
16
- "model_type": "qwen3",
17
- "num_attention_heads": 16,
18
- "num_hidden_layers": 28,
19
- "num_key_value_heads": 8,
20
- "rms_norm_eps": 1e-06,
21
- "rope_scaling": null,
22
- "rope_theta": 1000000,
23
- "sliding_window": null,
24
- "tie_word_embeddings": true,
25
- "torch_dtype": "bfloat16",
26
- "transformers_version": "4.51.0",
27
- "use_cache": true,
28
- "use_sliding_window": false,
29
- "vocab_size": 151936
30
- }
 
1
  {
2
+ "architectures": [
3
+ "Qwen3_5ForCausalLM"
4
+ ],
5
+ "attention_bias": false,
6
+ "attention_dropout": 0.0,
7
+ "attn_output_gate": true,
8
+ "bos_token_id": null,
9
+ "dtype": "bfloat16",
10
+ "eos_token_id": 248044,
11
+ "full_attention_interval": 4,
12
+ "head_dim": 256,
13
+ "hidden_act": "silu",
14
+ "hidden_size": 2560,
15
+ "initializer_range": 0.02,
16
+ "intermediate_size": 9216,
17
+ "layer_types": [
18
+ "linear_attention",
19
+ "linear_attention",
20
+ "linear_attention",
21
+ "full_attention",
22
+ "linear_attention",
23
+ "linear_attention",
24
+ "linear_attention",
25
+ "full_attention",
26
+ "linear_attention",
27
+ "linear_attention",
28
+ "linear_attention",
29
+ "full_attention",
30
+ "linear_attention",
31
+ "linear_attention",
32
+ "linear_attention",
33
+ "full_attention",
34
+ "linear_attention",
35
+ "linear_attention",
36
+ "linear_attention",
37
+ "full_attention",
38
+ "linear_attention",
39
+ "linear_attention",
40
+ "linear_attention",
41
+ "full_attention",
42
+ "linear_attention",
43
+ "linear_attention",
44
+ "linear_attention",
45
+ "full_attention",
46
+ "linear_attention",
47
+ "linear_attention",
48
+ "linear_attention",
49
+ "full_attention"
50
+ ],
51
+ "linear_conv_kernel_dim": 4,
52
+ "linear_key_head_dim": 128,
53
+ "linear_num_key_heads": 16,
54
+ "linear_num_value_heads": 32,
55
+ "linear_value_head_dim": 128,
56
+ "mamba_ssm_dtype": "float32",
57
+ "max_position_embeddings": 262144,
58
+ "mlp_only_layers": [],
59
+ "model_type": "qwen3_5_text",
60
+ "mtp_num_hidden_layers": 1,
61
+ "mtp_use_dedicated_embeddings": false,
62
+ "num_attention_heads": 16,
63
+ "num_hidden_layers": 32,
64
+ "num_key_value_heads": 4,
65
+ "pad_token_id": null,
66
+ "partial_rotary_factor": 0.25,
67
+ "rms_norm_eps": 1e-06,
68
+ "rope_parameters": {
69
+ "mrope_interleaved": true,
70
+ "mrope_section": [
71
+ 11,
72
+ 11,
73
+ 10
74
  ],
75
+ "partial_rotary_factor": 0.25,
76
+ "rope_theta": 10000000,
77
+ "rope_type": "default"
78
+ },
79
+ "tie_word_embeddings": true,
80
+ "transformers_version": "5.17.0",
81
+ "use_cache": true,
82
+ "vocab_size": 248320
83
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
evaluation.json ADDED
@@ -0,0 +1,371 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "engine": "trained",
3
+ "counts": {
4
+ "ok": 1900
5
+ },
6
+ "successful_request_latency_ms": {
7
+ "median": 67.33474849897902,
8
+ "p95": 309.1855669990764,
9
+ "mean": 348.8505987489407
10
+ },
11
+ "benchmarks": [
12
+ {
13
+ "catalog_id": 11,
14
+ "dataset": "ContractNLI",
15
+ "requests": 56,
16
+ "answered": 56,
17
+ "unsupported": 0,
18
+ "errors": 0,
19
+ "abstained": 0,
20
+ "pending": 0,
21
+ "scored_requests": 56,
22
+ "metric": "macro-F1",
23
+ "score": 0.7404310060948458,
24
+ "reference_same_cases": null,
25
+ "median_ms": 6274.808131498503,
26
+ "detail": {
27
+ "field_accuracy": 0.8392857142857143,
28
+ "case_exact_accuracy": 0.07142857142857142,
29
+ "macro_f1": 0.7404310060948458,
30
+ "custom_metrics": {}
31
+ }
32
+ },
33
+ {
34
+ "catalog_id": 30,
35
+ "dataset": "GSM8K",
36
+ "requests": 112,
37
+ "answered": 112,
38
+ "unsupported": 0,
39
+ "errors": 0,
40
+ "abstained": 0,
41
+ "pending": 0,
42
+ "scored_requests": 112,
43
+ "metric": "accuracy",
44
+ "score": 0.7678571428571429,
45
+ "reference_same_cases": null,
46
+ "median_ms": 67.91422949754633,
47
+ "tracks": {
48
+ "GSM8K-10choice": {
49
+ "metric": "accuracy",
50
+ "score": 0.7321428571428571,
51
+ "scored_requests": 56
52
+ },
53
+ "GSM8K-4choice": {
54
+ "metric": "accuracy",
55
+ "score": 0.8035714285714286,
56
+ "scored_requests": 56
57
+ }
58
+ },
59
+ "detail": {
60
+ "field_accuracy": 0.7678571428571429,
61
+ "case_exact_accuracy": 0.625,
62
+ "custom_metrics": {}
63
+ }
64
+ },
65
+ {
66
+ "catalog_id": 40,
67
+ "dataset": "iSarcasmEval",
68
+ "requests": 56,
69
+ "answered": 56,
70
+ "unsupported": 0,
71
+ "errors": 0,
72
+ "abstained": 0,
73
+ "pending": 0,
74
+ "scored_requests": 56,
75
+ "metric": "see separate subtask tracks",
76
+ "score": null,
77
+ "reference_same_cases": null,
78
+ "median_ms": 70.44221549949725,
79
+ "tracks": {
80
+ "iSarcasmEval-A-Ar": {
81
+ "metric": "see separate subtask tracks",
82
+ "score": null,
83
+ "scored_requests": 12
84
+ },
85
+ "iSarcasmEval-A-En": {
86
+ "metric": "see separate subtask tracks",
87
+ "score": null,
88
+ "scored_requests": 19
89
+ },
90
+ "iSarcasmEval-B-En": {
91
+ "metric": "see separate subtask tracks",
92
+ "score": null,
93
+ "scored_requests": 23
94
+ },
95
+ "iSarcasmEval-C-Ar": {
96
+ "metric": "see separate subtask tracks",
97
+ "score": null,
98
+ "scored_requests": 1
99
+ },
100
+ "iSarcasmEval-C-En": {
101
+ "metric": "see separate subtask tracks",
102
+ "score": null,
103
+ "scored_requests": 1
104
+ }
105
+ },
106
+ "detail": {
107
+ "field_accuracy": 0.7777777777777778,
108
+ "case_exact_accuracy": 0.5535714285714286,
109
+ "macro_f1": 0.7693247126436782,
110
+ "custom_metrics": {},
111
+ "positive_f1_by_field": {
112
+ "sarcastic": 0.2857142857142857,
113
+ "sarcasm": 0.2222222222222222,
114
+ "irony": 0.25,
115
+ "satire": 0.2857142857142857,
116
+ "understatement": 0.0,
117
+ "overstatement": 0.0,
118
+ "rhetorical_question": 0.0
119
+ },
120
+ "category_macro_f1": 0.14909297052154194
121
+ }
122
+ },
123
+ {
124
+ "catalog_id": 41,
125
+ "dataset": "VAST",
126
+ "requests": 56,
127
+ "answered": 56,
128
+ "unsupported": 0,
129
+ "errors": 0,
130
+ "abstained": 0,
131
+ "pending": 0,
132
+ "scored_requests": 56,
133
+ "metric": "macro-F1",
134
+ "score": 0.43621013133208253,
135
+ "reference_same_cases": null,
136
+ "median_ms": 67.72124700000859,
137
+ "detail": {
138
+ "field_accuracy": 0.5357142857142857,
139
+ "case_exact_accuracy": 0.5357142857142857,
140
+ "macro_f1": 0.43621013133208253,
141
+ "custom_metrics": {}
142
+ }
143
+ },
144
+ {
145
+ "catalog_id": 42,
146
+ "dataset": "NLI4CT",
147
+ "requests": 55,
148
+ "answered": 55,
149
+ "unsupported": 0,
150
+ "errors": 0,
151
+ "abstained": 0,
152
+ "pending": 0,
153
+ "scored_requests": 55,
154
+ "metric": "macro-F1",
155
+ "score": 0.8401162790697674,
156
+ "reference_same_cases": null,
157
+ "median_ms": 98.04200899816351,
158
+ "detail": {
159
+ "field_accuracy": 0.8909090909090909,
160
+ "case_exact_accuracy": 0.8909090909090909,
161
+ "macro_f1": 0.8401162790697674,
162
+ "custom_metrics": {}
163
+ }
164
+ },
165
+ {
166
+ "catalog_id": 43,
167
+ "dataset": "CRUXEval",
168
+ "requests": 55,
169
+ "answered": 55,
170
+ "unsupported": 0,
171
+ "errors": 0,
172
+ "abstained": 0,
173
+ "pending": 0,
174
+ "scored_requests": 55,
175
+ "metric": "accuracy",
176
+ "score": 0.38181818181818183,
177
+ "reference_same_cases": null,
178
+ "median_ms": 67.40817399986554,
179
+ "detail": {
180
+ "field_accuracy": 0.38181818181818183,
181
+ "case_exact_accuracy": 0.38181818181818183,
182
+ "custom_metrics": {}
183
+ }
184
+ },
185
+ {
186
+ "catalog_id": 44,
187
+ "dataset": "CLadder",
188
+ "requests": 55,
189
+ "answered": 55,
190
+ "unsupported": 0,
191
+ "errors": 0,
192
+ "abstained": 0,
193
+ "pending": 0,
194
+ "scored_requests": 55,
195
+ "metric": "accuracy",
196
+ "score": 0.6545454545454545,
197
+ "reference_same_cases": null,
198
+ "median_ms": 67.2220330015989,
199
+ "detail": {
200
+ "field_accuracy": 0.6545454545454545,
201
+ "case_exact_accuracy": 0.6545454545454545,
202
+ "custom_metrics": {}
203
+ }
204
+ },
205
+ {
206
+ "catalog_id": 50,
207
+ "dataset": "Habermas Machine",
208
+ "requests": 55,
209
+ "answered": 55,
210
+ "unsupported": 0,
211
+ "errors": 0,
212
+ "abstained": 0,
213
+ "pending": 0,
214
+ "scored_requests": 55,
215
+ "metric": "accuracy",
216
+ "score": 0.34545454545454546,
217
+ "reference_same_cases": null,
218
+ "median_ms": 188.9903100018273,
219
+ "detail": {
220
+ "field_accuracy": 0.34545454545454546,
221
+ "case_exact_accuracy": 0.34545454545454546,
222
+ "custom_metrics": {
223
+ "normalized_rank_regret": 0.2393939393939394
224
+ }
225
+ }
226
+ },
227
+ {
228
+ "catalog_id": 5,
229
+ "dataset": "CLINC150+OOS",
230
+ "requests": 200,
231
+ "answered": 200,
232
+ "unsupported": 0,
233
+ "errors": 0,
234
+ "abstained": 0,
235
+ "pending": 0,
236
+ "scored_requests": 200,
237
+ "metric": "macro-F1",
238
+ "score": 0.852693430018526,
239
+ "reference_same_cases": null,
240
+ "median_ms": 295.12597599932633,
241
+ "detail": {
242
+ "field_accuracy": 0.9,
243
+ "case_exact_accuracy": 0.9,
244
+ "macro_f1": 0.852693430018526,
245
+ "custom_metrics": {}
246
+ }
247
+ },
248
+ {
249
+ "catalog_id": 12,
250
+ "dataset": "ANLI",
251
+ "requests": 200,
252
+ "answered": 200,
253
+ "unsupported": 0,
254
+ "errors": 0,
255
+ "abstained": 0,
256
+ "pending": 0,
257
+ "scored_requests": 200,
258
+ "metric": "macro-F1",
259
+ "score": 0.5958562735439004,
260
+ "reference_same_cases": null,
261
+ "median_ms": 67.09086350201687,
262
+ "detail": {
263
+ "field_accuracy": 0.595,
264
+ "case_exact_accuracy": 0.595,
265
+ "macro_f1": 0.5958562735439004,
266
+ "custom_metrics": {}
267
+ }
268
+ },
269
+ {
270
+ "catalog_id": 24,
271
+ "dataset": "MMLU",
272
+ "requests": 200,
273
+ "answered": 200,
274
+ "unsupported": 0,
275
+ "errors": 0,
276
+ "abstained": 0,
277
+ "pending": 0,
278
+ "scored_requests": 200,
279
+ "metric": "accuracy",
280
+ "score": 0.74,
281
+ "reference_same_cases": null,
282
+ "median_ms": 66.66580449928006,
283
+ "detail": {
284
+ "field_accuracy": 0.74,
285
+ "case_exact_accuracy": 0.74,
286
+ "custom_metrics": {}
287
+ }
288
+ },
289
+ {
290
+ "catalog_id": 26,
291
+ "dataset": "ARC-Easy",
292
+ "requests": 200,
293
+ "answered": 200,
294
+ "unsupported": 0,
295
+ "errors": 0,
296
+ "abstained": 0,
297
+ "pending": 0,
298
+ "scored_requests": 200,
299
+ "metric": "accuracy",
300
+ "score": 0.98,
301
+ "reference_same_cases": null,
302
+ "median_ms": 66.54907899974205,
303
+ "detail": {
304
+ "field_accuracy": 0.98,
305
+ "case_exact_accuracy": 0.98,
306
+ "custom_metrics": {}
307
+ }
308
+ },
309
+ {
310
+ "catalog_id": 27,
311
+ "dataset": "ARC-Challenge",
312
+ "requests": 200,
313
+ "answered": 200,
314
+ "unsupported": 0,
315
+ "errors": 0,
316
+ "abstained": 0,
317
+ "pending": 0,
318
+ "scored_requests": 200,
319
+ "metric": "accuracy",
320
+ "score": 0.94,
321
+ "reference_same_cases": null,
322
+ "median_ms": 66.42713149994961,
323
+ "detail": {
324
+ "field_accuracy": 0.94,
325
+ "case_exact_accuracy": 0.94,
326
+ "custom_metrics": {}
327
+ }
328
+ },
329
+ {
330
+ "catalog_id": 28,
331
+ "dataset": "WinoGrande",
332
+ "requests": 200,
333
+ "answered": 200,
334
+ "unsupported": 0,
335
+ "errors": 0,
336
+ "abstained": 0,
337
+ "pending": 0,
338
+ "scored_requests": 200,
339
+ "metric": "accuracy",
340
+ "score": 0.645,
341
+ "reference_same_cases": null,
342
+ "median_ms": 66.51633900037268,
343
+ "detail": {
344
+ "field_accuracy": 0.645,
345
+ "case_exact_accuracy": 0.645,
346
+ "custom_metrics": {}
347
+ }
348
+ },
349
+ {
350
+ "catalog_id": 29,
351
+ "dataset": "HellaSwag",
352
+ "requests": 200,
353
+ "answered": 200,
354
+ "unsupported": 0,
355
+ "errors": 0,
356
+ "abstained": 0,
357
+ "pending": 0,
358
+ "scored_requests": 200,
359
+ "metric": "accuracy",
360
+ "score": 0.91,
361
+ "reference_same_cases": null,
362
+ "median_ms": 67.15036900095583,
363
+ "detail": {
364
+ "field_accuracy": 0.91,
365
+ "case_exact_accuracy": 0.91,
366
+ "custom_metrics": {}
367
+ }
368
+ }
369
+ ],
370
+ "note": "Native benchmark metrics on complete supported case groups. Unsupported cases excluded from accuracy but retained in coverage."
371
+ }
export-provenance.json DELETED
@@ -1,12 +0,0 @@
1
- {
2
- "adapter": "jet-v5-panel02-r2-20260924",
3
- "adapter_sha256": "6416adc20cc1517dc5d9cf3c0a2655da8a899296c5640dfc6d5551170824d0cb",
4
- "fusion": "Native MLX CUDA module.fuse(), 196 linear layers",
5
- "fusion_validation": {
6
- "cases": 36,
7
- "answer_flips": [],
8
- "max_probability_difference": 0.02581135243415833,
9
- "reference": "unfused MLX CUDA vs native MLX CUDA fused bf16"
10
- },
11
- "onnx_validation": "36 golden cases: worst |dlogit| 0.254, worst |dprob| 0.0249, answers flipped 0 (178 tokens/s on 4 threads)"
12
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
export-validation.txt DELETED
@@ -1 +0,0 @@
1
- 36 golden cases: worst |dlogit| 0.254, worst |dprob| 0.0249, answers flipped 0 (178 tokens/s on 4 threads)
 
 
format.py ADDED
@@ -0,0 +1,143 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """Prompt format shared by training and inference.
2
+
3
+ Every question is reduced to "pick one label token". The model is run once over
4
+ the prompt and we read the next-token logits restricted to the label tokens:
5
+
6
+ - choice: one label per option (A..Z, then single-token AA, AB, ...), up to 255 options
7
+ - score: one digit per level (0..9), 2-10 levels, ordered low -> high
8
+ - noul: "no" / "yes"
9
+ """
10
+
11
+ from __future__ import annotations
12
+
13
+ import itertools
14
+ import json
15
+ import string
16
+ from dataclasses import dataclass
17
+ from typing import Any, Literal
18
+
19
+ QuestionType = Literal["choice", "score", "noul"]
20
+
21
+ MAX_CHOICE_OPTIONS = 255
22
+ MIN_SCORE_LEVELS, MAX_SCORE_LEVELS = 2, 10
23
+
24
+ SYSTEM_PROMPT = (
25
+ "You are Jet, a decision model. Read the state and the question, then answer "
26
+ "with exactly one label from the allowed labels."
27
+ )
28
+
29
+
30
+ @dataclass(frozen=True)
31
+ class Question:
32
+ type: QuestionType
33
+ instructions: str
34
+ # choice: {key: description}; score: [level descriptions, low -> high]; noul: None
35
+ criteria: dict[str, str] | list[str] | None = None
36
+
37
+ @property
38
+ def keys(self) -> list[str]:
39
+ """Answer keys in label order (option keys, level descriptions, or no/yes)."""
40
+ if self.type == "choice":
41
+ return list(self.criteria)
42
+ if self.type == "score":
43
+ return list(self.criteria)
44
+ return ["no", "yes"]
45
+
46
+ @classmethod
47
+ def from_dict(cls, d: dict[str, Any]) -> Question:
48
+ q = cls(type=d["type"], instructions=d["instructions"], criteria=d.get("criteria"))
49
+ q.validate()
50
+ return q
51
+
52
+ def to_dict(self) -> dict[str, Any]:
53
+ d: dict[str, Any] = {"type": self.type, "instructions": self.instructions}
54
+ if self.criteria is not None:
55
+ d["criteria"] = self.criteria
56
+ return d
57
+
58
+ def validate(self) -> None:
59
+ if self.type not in ("choice", "score", "noul"):
60
+ raise ValueError(f"unknown question type {self.type!r}")
61
+ if not isinstance(self.instructions, str) or not self.instructions.strip():
62
+ raise ValueError("instructions must be a non-empty string")
63
+ if self.type == "choice":
64
+ if not isinstance(self.criteria, dict) or not 2 <= len(self.criteria) <= MAX_CHOICE_OPTIONS:
65
+ raise ValueError(f"choice criteria must be an object with 2-{MAX_CHOICE_OPTIONS} options")
66
+ elif self.type == "score":
67
+ if not isinstance(self.criteria, list) or not MIN_SCORE_LEVELS <= len(self.criteria) <= MAX_SCORE_LEVELS:
68
+ raise ValueError(f"score criteria must be a list of {MIN_SCORE_LEVELS}-{MAX_SCORE_LEVELS} levels")
69
+ elif self.criteria is not None:
70
+ raise ValueError("noul questions take no criteria")
71
+
72
+
73
+ _CHOICE_LABELS: dict[int, list[str]] = {}
74
+
75
+
76
+ def choice_labels(tokenizer, n: int) -> list[str]:
77
+ """A..Z, then the two-letter labels AA, AB, ... that are single tokens for this tokenizer."""
78
+ key = id(tokenizer)
79
+ if key not in _CHOICE_LABELS:
80
+ letters = string.ascii_uppercase
81
+ pairs = ("".join(p) for p in itertools.product(letters, repeat=2))
82
+ candidates = list(letters) + [p for p in pairs if len(tokenizer.encode(p, add_special_tokens=False)) == 1]
83
+ if len(candidates) < MAX_CHOICE_OPTIONS:
84
+ raise ValueError(f"tokenizer only has {len(candidates)} single-token choice labels")
85
+ _CHOICE_LABELS[key] = candidates[:MAX_CHOICE_OPTIONS]
86
+ return _CHOICE_LABELS[key][:n]
87
+
88
+
89
+ def labels_for(tokenizer, q: Question) -> list[str]:
90
+ if q.type == "choice":
91
+ return choice_labels(tokenizer, len(q.criteria))
92
+ if q.type == "score":
93
+ return [str(i) for i in range(len(q.criteria))]
94
+ return ["no", "yes"]
95
+
96
+
97
+ def render_state(state: Any) -> str:
98
+ if isinstance(state, str):
99
+ return state
100
+ if isinstance(state, list) and all(isinstance(s, str) for s in state):
101
+ return "\n\n".join(state)
102
+ return json.dumps(state, ensure_ascii=False, indent=2)
103
+
104
+
105
+ def render_user(state: Any, q: Question, labels: list[str]) -> str:
106
+ parts = [f"<state>\n{render_state(state)}\n</state>", ""]
107
+ if q.type == "choice":
108
+ opts = "\n".join(f"{lab}: {key}: {desc}" for lab, (key, desc) in zip(labels, q.criteria.items()))
109
+ parts += [
110
+ f"Question: {q.instructions}",
111
+ f"Options:\n{opts}",
112
+ f"Answer with the label of the best option ({labels[0]}-{labels[-1]}).",
113
+ ]
114
+ elif q.type == "score":
115
+ levels = "\n".join(f"{lab}: {desc}" for lab, desc in zip(labels, q.criteria))
116
+ parts += [
117
+ f"Question: {q.instructions}",
118
+ f"Scale (lowest to highest):\n{levels}",
119
+ f"Answer with the level number (0-{len(labels) - 1}).",
120
+ ]
121
+ else:
122
+ parts += [f"Question: {q.instructions}", "Answer yes or no."]
123
+ return "\n".join(parts)
124
+
125
+
126
+ def build_prompt(tokenizer, state: Any, q: Question) -> str:
127
+ return tokenizer.apply_chat_template(
128
+ [{"role": "system", "content": SYSTEM_PROMPT}, {"role": "user", "content": render_user(state, q, labels_for(tokenizer, q))}],
129
+ add_generation_prompt=True,
130
+ tokenize=False,
131
+ enable_thinking=False,
132
+ )
133
+
134
+
135
+ def _label_token_id(tokenizer, label: str) -> int:
136
+ ids = tokenizer.encode(label, add_special_tokens=False)
137
+ if len(ids) != 1:
138
+ raise ValueError(f"label {label!r} is not a single token for this tokenizer")
139
+ return ids[0]
140
+
141
+
142
+ def label_token_ids(tokenizer, q: Question) -> list[int]:
143
+ return [_label_token_id(tokenizer, lab) for lab in labels_for(tokenizer, q)]
golden.json DELETED
The diff for this file is too large to render. See raw diff
 
inference.py ADDED
@@ -0,0 +1,41 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """Backend-independent Jet prompt encoding and typed answers."""
2
+ from __future__ import annotations
3
+ import math
4
+ from typing import Any
5
+ import numpy as np
6
+ from format import Question, build_prompt, render_state
7
+
8
+ DEFAULT_MAX_STATE_TOKENS = 4096
9
+
10
+ def encode(tokenizer, state: Any, q: Question, max_state_tokens: int = DEFAULT_MAX_STATE_TOKENS) -> list[int]:
11
+ """Tokenize a prompt, truncating the middle of an over-long state."""
12
+ text = render_state(state)
13
+ ids = tokenizer.encode(text, add_special_tokens=False)
14
+ if len(ids) > max_state_tokens:
15
+ half = max_state_tokens // 2
16
+ text = tokenizer.decode(ids[:half]) + "\n[...]\n" + tokenizer.decode(ids[-half:])
17
+ return tokenizer.encode(build_prompt(tokenizer, text, q), add_special_tokens=False)
18
+
19
+ def summarize(q: Question, probs: np.ndarray) -> dict[str, Any]:
20
+ """Turn a label distribution into the typed answer for the question."""
21
+ probs = probs.astype(np.float64)
22
+ k = len(probs)
23
+ entropy = -float(np.sum(probs * np.log(np.clip(probs, 1e-12, 1.0))))
24
+ confidence = round(1.0 - entropy / math.log(k), 4)
25
+ if q.type == "choice":
26
+ keys = q.keys
27
+ return {
28
+ "type": "choice",
29
+ "choice": keys[int(np.argmax(probs))],
30
+ "probabilities": {key: round(float(p), 4) for key, p in zip(keys, probs)},
31
+ "confidence": confidence,
32
+ }
33
+ if q.type == "score":
34
+ return {
35
+ "type": "score",
36
+ "score": round(float(np.dot(np.arange(k), probs)), 4),
37
+ "level": q.criteria[int(np.argmax(probs))],
38
+ "probabilities": [round(float(p), 4) for p in probs],
39
+ "confidence": confidence,
40
+ }
41
+ return {"type": "noul", "probability": round(float(probs[1]), 4), "confidence": confidence}
jet.py ADDED
@@ -0,0 +1,41 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """Typed inference for the merged Jet model. Linux + NVIDIA CUDA, Python 3.12."""
2
+ import json
3
+ from pathlib import Path
4
+ import torch
5
+ from format import Question, label_token_ids
6
+ from inference import encode, summarize
7
+ from runtime import load_model, label_logits
8
+
9
+
10
+ class Jet:
11
+ def __init__(self, model_path=None, max_tokens=8192):
12
+ self.path = Path(model_path) if model_path else Path(__file__).resolve().parent
13
+ if not 0 < max_tokens <= 8192:
14
+ raise ValueError('This release supports complete prompts up to 8192 tokens.')
15
+ self.max_tokens = max_tokens
16
+ torch.set_num_threads(4)
17
+ self.temperatures = json.loads((self.path / 'calibration.json').read_text())
18
+ self.model, self.tokenizer = load_model(str(self.path))
19
+
20
+ @torch.no_grad()
21
+ def decide(self, state, questions):
22
+ if not isinstance(questions, dict) or not questions:
23
+ raise ValueError('questions must be a nonempty mapping')
24
+ prepared = []
25
+ for name, value in questions.items():
26
+ q = Question.from_dict(value)
27
+ ids = encode(self.tokenizer, state, q, 10**9)
28
+ if len(ids) > self.max_tokens:
29
+ raise ValueError(f'{name}: complete prompt exceeds {self.max_tokens} tokens; no truncation applied')
30
+ prepared.append((name, q, {'ids': ids, 'labels': label_token_ids(self.tokenizer, q)}))
31
+ answers = {}
32
+ for name, q, example in prepared:
33
+ z = label_logits(self.model, example)
34
+ probabilities = (z.double() / self.temperatures[q.type]).softmax(-1).cpu().numpy()
35
+ answers[name] = summarize(q, probabilities)
36
+ return {'model': 'michaljach/jet', 'answers': answers}
37
+
38
+ if __name__ == '__main__':
39
+ import sys
40
+ request = json.load(sys.stdin)
41
+ print(json.dumps(Jet().decide(request['state'], request['questions']), indent=2))
merge-provenance.json ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "base": "Qwen/Qwen3.5-4B",
3
+ "base_revision": "851bf6e806efd8d0a36b00ddf55e13ccb7b8cd0a",
4
+ "adapter_sha256": "e3d8be9c82190f1357d58380a6908e7dbf511b4e9e3cafbd9288f0c7dbb044e2",
5
+ "step": 3750,
6
+ "merge": "BF16 backbone plus FP32 B@A times alpha/r, rounded to BF16 (PEFT default merge arithmetic)",
7
+ "architecture": "complete Qwen3_5ForCausalLM text backbone; tied lm_head; unused vision tower omitted",
8
+ "merged_modules": 248,
9
+ "tensors": 426,
10
+ "bytes": 8411510272
11
+ }
merge-validation.json ADDED
@@ -0,0 +1,255 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "cases": 36,
3
+ "selection": "First 12 cases per type, scanning local test then calibration; no outcome selection",
4
+ "argmax_flips": 1,
5
+ "max_probability_difference": 0.04372840585277227,
6
+ "records": [
7
+ {
8
+ "test_index": 0,
9
+ "type": "choice",
10
+ "same_argmax": true,
11
+ "max_probability_difference": 0.0011152033659319743
12
+ },
13
+ {
14
+ "test_index": 1,
15
+ "type": "choice",
16
+ "same_argmax": true,
17
+ "max_probability_difference": 0.0
18
+ },
19
+ {
20
+ "test_index": 2,
21
+ "type": "choice",
22
+ "same_argmax": true,
23
+ "max_probability_difference": 0.0108992070366863
24
+ },
25
+ {
26
+ "test_index": 3,
27
+ "type": "choice",
28
+ "same_argmax": true,
29
+ "max_probability_difference": 0.0008074928979708608
30
+ },
31
+ {
32
+ "test_index": 4,
33
+ "type": "choice",
34
+ "same_argmax": true,
35
+ "max_probability_difference": 0.04372840585277227
36
+ },
37
+ {
38
+ "test_index": 5,
39
+ "type": "choice",
40
+ "same_argmax": true,
41
+ "max_probability_difference": 0.0012248826281491855
42
+ },
43
+ {
44
+ "test_index": 6,
45
+ "type": "choice",
46
+ "same_argmax": true,
47
+ "max_probability_difference": 0.0009706432719255795
48
+ },
49
+ {
50
+ "test_index": 7,
51
+ "type": "choice",
52
+ "same_argmax": true,
53
+ "max_probability_difference": 0.002213577468929806
54
+ },
55
+ {
56
+ "test_index": 8,
57
+ "type": "choice",
58
+ "same_argmax": true,
59
+ "max_probability_difference": 0.0006500812415296542
60
+ },
61
+ {
62
+ "test_index": 9,
63
+ "type": "choice",
64
+ "same_argmax": true,
65
+ "max_probability_difference": 0.0009609628007468674
66
+ },
67
+ {
68
+ "test_index": 10,
69
+ "type": "choice",
70
+ "same_argmax": true,
71
+ "max_probability_difference": 0.00012381259397531777
72
+ },
73
+ {
74
+ "test_index": 11,
75
+ "type": "choice",
76
+ "same_argmax": true,
77
+ "max_probability_difference": 0.0
78
+ },
79
+ {
80
+ "test_index": 624,
81
+ "type": "score",
82
+ "same_argmax": true,
83
+ "max_probability_difference": 0.0
84
+ },
85
+ {
86
+ "test_index": 627,
87
+ "type": "score",
88
+ "same_argmax": true,
89
+ "max_probability_difference": 0.000754577823111946
90
+ },
91
+ {
92
+ "test_index": 628,
93
+ "type": "noul",
94
+ "same_argmax": true,
95
+ "max_probability_difference": 0.0
96
+ },
97
+ {
98
+ "test_index": 633,
99
+ "type": "noul",
100
+ "same_argmax": true,
101
+ "max_probability_difference": 0.0
102
+ },
103
+ {
104
+ "test_index": 640,
105
+ "type": "score",
106
+ "same_argmax": true,
107
+ "max_probability_difference": 0.0010637251609036114
108
+ },
109
+ {
110
+ "test_index": 666,
111
+ "type": "noul",
112
+ "same_argmax": true,
113
+ "max_probability_difference": 0.0
114
+ },
115
+ {
116
+ "test_index": 667,
117
+ "type": "noul",
118
+ "same_argmax": true,
119
+ "max_probability_difference": 0.0
120
+ },
121
+ {
122
+ "test_index": 668,
123
+ "type": "score",
124
+ "same_argmax": true,
125
+ "max_probability_difference": 0.017339621180759268
126
+ },
127
+ {
128
+ "test_index": 669,
129
+ "type": "noul",
130
+ "same_argmax": true,
131
+ "max_probability_difference": 0.0
132
+ },
133
+ {
134
+ "test_index": 670,
135
+ "type": "score",
136
+ "same_argmax": false,
137
+ "max_probability_difference": 0.028077057361391045
138
+ },
139
+ {
140
+ "test_index": 682,
141
+ "type": "noul",
142
+ "same_argmax": true,
143
+ "max_probability_difference": 0.009419094585836119
144
+ },
145
+ {
146
+ "test_index": 685,
147
+ "type": "score",
148
+ "same_argmax": true,
149
+ "max_probability_difference": 0.007916961020786789
150
+ },
151
+ {
152
+ "test_index": 688,
153
+ "type": "noul",
154
+ "same_argmax": true,
155
+ "max_probability_difference": 0.003166425585453325
156
+ },
157
+ {
158
+ "test_index": 693,
159
+ "type": "noul",
160
+ "same_argmax": true,
161
+ "max_probability_difference": 0.0
162
+ },
163
+ {
164
+ "test_index": 713,
165
+ "type": "score",
166
+ "same_argmax": true,
167
+ "max_probability_difference": 0.0010361768955787776
168
+ },
169
+ {
170
+ "test_index": 719,
171
+ "type": "noul",
172
+ "same_argmax": true,
173
+ "max_probability_difference": 0.0037330092417818816
174
+ },
175
+ {
176
+ "test_index": 726,
177
+ "type": "score",
178
+ "same_argmax": true,
179
+ "max_probability_difference": 0.02127082649737211
180
+ },
181
+ {
182
+ "test_index": 727,
183
+ "type": "noul",
184
+ "same_argmax": true,
185
+ "max_probability_difference": 0.0
186
+ },
187
+ {
188
+ "test_index": 729,
189
+ "type": "score",
190
+ "same_argmax": true,
191
+ "max_probability_difference": 0.0006679498517172117
192
+ },
193
+ {
194
+ "test_index": 741,
195
+ "type": "score",
196
+ "same_argmax": true,
197
+ "max_probability_difference": 0.014585731531814888
198
+ },
199
+ {
200
+ "test_index": 748,
201
+ "type": "score",
202
+ "same_argmax": true,
203
+ "max_probability_difference": 0.0
204
+ },
205
+ {
206
+ "test_index": 767,
207
+ "type": "noul",
208
+ "same_argmax": true,
209
+ "max_probability_difference": 0.0
210
+ },
211
+ {
212
+ "test_index": 769,
213
+ "type": "noul",
214
+ "same_argmax": true,
215
+ "max_probability_difference": 0.0
216
+ },
217
+ {
218
+ "test_index": 845,
219
+ "type": "score",
220
+ "same_argmax": true,
221
+ "max_probability_difference": 0.0002716545718139925
222
+ }
223
+ ],
224
+ "wrapper_smoke": {
225
+ "model": "michaljach/jet",
226
+ "answers": {
227
+ "category": {
228
+ "type": "choice",
229
+ "choice": "damage",
230
+ "probabilities": {
231
+ "damage": 0.9872,
232
+ "billing": 0.0128
233
+ },
234
+ "confidence": 0.901
235
+ },
236
+ "severity": {
237
+ "type": "score",
238
+ "score": 1.5647,
239
+ "level": "severe",
240
+ "probabilities": [
241
+ 0.0099,
242
+ 0.4154,
243
+ 0.5747
244
+ ],
245
+ "confidence": 0.3363
246
+ },
247
+ "damaged": {
248
+ "type": "noul",
249
+ "probability": 0.9487,
250
+ "confidence": 0.7082
251
+ }
252
+ }
253
+ },
254
+ "base_download_required": false
255
+ }
model.safetensors → model-00001-of-00009.safetensors RENAMED
@@ -1,3 +1,3 @@
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:5fb52e23dbff62e4c9982420ba4b07375b582685c4c1d22d1754f260e16e0097
3
- size 1192134983
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:758c65ea6c124bbe96b68a2d5475f7e4ec0ff9b6a4dbba87f295144ace55f07d
3
+ size 1271398544
onnx/model_q8.onnx → model-00002-of-00009.safetensors RENAMED
@@ -1,3 +1,3 @@
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:7ee7a5bdda762f735c6aa9257d63f758afef546afbfc1a701ba698fc89ef67f0
3
- size 791126599
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:8e84de8d9a45219bbeb1a33392370979cce7702ceab4dea27b5f4b3b4e78deb0
3
+ size 990906704
model-00003-of-00009.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:d96476f63563f6db809675f551857e392102189c17eae2e2999bed0c4f967b22
3
+ size 990906704
model-00004-of-00009.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:bf5440f1558b2b9fc1e4ddec335cc77c04ac89621ce91a72ae3b3a542ad6eb25
3
+ size 990906712
model-00005-of-00009.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:52a8e3c8c06d2d16554e6146ffadcb0830367180d4ed2d4725084c0b4b257967
3
+ size 986062968
model-00006-of-00009.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:0d560b820ad7edc2faad717f6655b3f638e8779b40fda4e333d6457bcb9ed47c
3
+ size 983687224
model-00007-of-00009.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:fff39c3f2152571b72d377c6095daca3c796da187d94e88d18292c8709aa75d3
3
+ size 999026496
model-00008-of-00009.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:da8fa5e8e7bbcab3529e6f4014fdc3a42240a27c4b7fd123f3690abb35c96789
3
+ size 982888776
model-00009-of-00009.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:8d76d978760f6c15b9f5cb0c3b5eeada3513ff8a53104389cd895b5a5a092a94
3
+ size 215774320
model.safetensors.index.json CHANGED
@@ -1,318 +1,433 @@
1
  {
2
- "metadata": {
3
- "total_size": 1192099840,
4
- "total_parameters": 596049920
5
- },
6
- "weight_map": {
7
- "model.embed_tokens.weight": "model.safetensors",
8
- "model.layers.0.input_layernorm.weight": "model.safetensors",
9
- "model.layers.0.mlp.down_proj.weight": "model.safetensors",
10
- "model.layers.0.mlp.gate_proj.weight": "model.safetensors",
11
- "model.layers.0.mlp.up_proj.weight": "model.safetensors",
12
- "model.layers.0.post_attention_layernorm.weight": "model.safetensors",
13
- "model.layers.0.self_attn.k_norm.weight": "model.safetensors",
14
- "model.layers.0.self_attn.k_proj.weight": "model.safetensors",
15
- "model.layers.0.self_attn.o_proj.weight": "model.safetensors",
16
- "model.layers.0.self_attn.q_norm.weight": "model.safetensors",
17
- "model.layers.0.self_attn.q_proj.weight": "model.safetensors",
18
- "model.layers.0.self_attn.v_proj.weight": "model.safetensors",
19
- "model.layers.1.input_layernorm.weight": "model.safetensors",
20
- "model.layers.1.mlp.down_proj.weight": "model.safetensors",
21
- "model.layers.1.mlp.gate_proj.weight": "model.safetensors",
22
- "model.layers.1.mlp.up_proj.weight": "model.safetensors",
23
- "model.layers.1.post_attention_layernorm.weight": "model.safetensors",
24
- "model.layers.1.self_attn.k_norm.weight": "model.safetensors",
25
- "model.layers.1.self_attn.k_proj.weight": "model.safetensors",
26
- "model.layers.1.self_attn.o_proj.weight": "model.safetensors",
27
- "model.layers.1.self_attn.q_norm.weight": "model.safetensors",
28
- "model.layers.1.self_attn.q_proj.weight": "model.safetensors",
29
- "model.layers.1.self_attn.v_proj.weight": "model.safetensors",
30
- "model.layers.10.input_layernorm.weight": "model.safetensors",
31
- "model.layers.10.mlp.down_proj.weight": "model.safetensors",
32
- "model.layers.10.mlp.gate_proj.weight": "model.safetensors",
33
- "model.layers.10.mlp.up_proj.weight": "model.safetensors",
34
- "model.layers.10.post_attention_layernorm.weight": "model.safetensors",
35
- "model.layers.10.self_attn.k_norm.weight": "model.safetensors",
36
- "model.layers.10.self_attn.k_proj.weight": "model.safetensors",
37
- "model.layers.10.self_attn.o_proj.weight": "model.safetensors",
38
- "model.layers.10.self_attn.q_norm.weight": "model.safetensors",
39
- "model.layers.10.self_attn.q_proj.weight": "model.safetensors",
40
- "model.layers.10.self_attn.v_proj.weight": "model.safetensors",
41
- "model.layers.11.input_layernorm.weight": "model.safetensors",
42
- "model.layers.11.mlp.down_proj.weight": "model.safetensors",
43
- "model.layers.11.mlp.gate_proj.weight": "model.safetensors",
44
- "model.layers.11.mlp.up_proj.weight": "model.safetensors",
45
- "model.layers.11.post_attention_layernorm.weight": "model.safetensors",
46
- "model.layers.11.self_attn.k_norm.weight": "model.safetensors",
47
- "model.layers.11.self_attn.k_proj.weight": "model.safetensors",
48
- "model.layers.11.self_attn.o_proj.weight": "model.safetensors",
49
- "model.layers.11.self_attn.q_norm.weight": "model.safetensors",
50
- "model.layers.11.self_attn.q_proj.weight": "model.safetensors",
51
- "model.layers.11.self_attn.v_proj.weight": "model.safetensors",
52
- "model.layers.12.input_layernorm.weight": "model.safetensors",
53
- "model.layers.12.mlp.down_proj.weight": "model.safetensors",
54
- "model.layers.12.mlp.gate_proj.weight": "model.safetensors",
55
- "model.layers.12.mlp.up_proj.weight": "model.safetensors",
56
- "model.layers.12.post_attention_layernorm.weight": "model.safetensors",
57
- "model.layers.12.self_attn.k_norm.weight": "model.safetensors",
58
- "model.layers.12.self_attn.k_proj.weight": "model.safetensors",
59
- "model.layers.12.self_attn.o_proj.weight": "model.safetensors",
60
- "model.layers.12.self_attn.q_norm.weight": "model.safetensors",
61
- "model.layers.12.self_attn.q_proj.weight": "model.safetensors",
62
- "model.layers.12.self_attn.v_proj.weight": "model.safetensors",
63
- "model.layers.13.input_layernorm.weight": "model.safetensors",
64
- "model.layers.13.mlp.down_proj.weight": "model.safetensors",
65
- "model.layers.13.mlp.gate_proj.weight": "model.safetensors",
66
- "model.layers.13.mlp.up_proj.weight": "model.safetensors",
67
- "model.layers.13.post_attention_layernorm.weight": "model.safetensors",
68
- "model.layers.13.self_attn.k_norm.weight": "model.safetensors",
69
- "model.layers.13.self_attn.k_proj.weight": "model.safetensors",
70
- "model.layers.13.self_attn.o_proj.weight": "model.safetensors",
71
- "model.layers.13.self_attn.q_norm.weight": "model.safetensors",
72
- "model.layers.13.self_attn.q_proj.weight": "model.safetensors",
73
- "model.layers.13.self_attn.v_proj.weight": "model.safetensors",
74
- "model.layers.14.input_layernorm.weight": "model.safetensors",
75
- "model.layers.14.mlp.down_proj.weight": "model.safetensors",
76
- "model.layers.14.mlp.gate_proj.weight": "model.safetensors",
77
- "model.layers.14.mlp.up_proj.weight": "model.safetensors",
78
- "model.layers.14.post_attention_layernorm.weight": "model.safetensors",
79
- "model.layers.14.self_attn.k_norm.weight": "model.safetensors",
80
- "model.layers.14.self_attn.k_proj.weight": "model.safetensors",
81
- "model.layers.14.self_attn.o_proj.weight": "model.safetensors",
82
- "model.layers.14.self_attn.q_norm.weight": "model.safetensors",
83
- "model.layers.14.self_attn.q_proj.weight": "model.safetensors",
84
- "model.layers.14.self_attn.v_proj.weight": "model.safetensors",
85
- "model.layers.15.input_layernorm.weight": "model.safetensors",
86
- "model.layers.15.mlp.down_proj.weight": "model.safetensors",
87
- "model.layers.15.mlp.gate_proj.weight": "model.safetensors",
88
- "model.layers.15.mlp.up_proj.weight": "model.safetensors",
89
- "model.layers.15.post_attention_layernorm.weight": "model.safetensors",
90
- "model.layers.15.self_attn.k_norm.weight": "model.safetensors",
91
- "model.layers.15.self_attn.k_proj.weight": "model.safetensors",
92
- "model.layers.15.self_attn.o_proj.weight": "model.safetensors",
93
- "model.layers.15.self_attn.q_norm.weight": "model.safetensors",
94
- "model.layers.15.self_attn.q_proj.weight": "model.safetensors",
95
- "model.layers.15.self_attn.v_proj.weight": "model.safetensors",
96
- "model.layers.16.input_layernorm.weight": "model.safetensors",
97
- "model.layers.16.mlp.down_proj.weight": "model.safetensors",
98
- "model.layers.16.mlp.gate_proj.weight": "model.safetensors",
99
- "model.layers.16.mlp.up_proj.weight": "model.safetensors",
100
- "model.layers.16.post_attention_layernorm.weight": "model.safetensors",
101
- "model.layers.16.self_attn.k_norm.weight": "model.safetensors",
102
- "model.layers.16.self_attn.k_proj.weight": "model.safetensors",
103
- "model.layers.16.self_attn.o_proj.weight": "model.safetensors",
104
- "model.layers.16.self_attn.q_norm.weight": "model.safetensors",
105
- "model.layers.16.self_attn.q_proj.weight": "model.safetensors",
106
- "model.layers.16.self_attn.v_proj.weight": "model.safetensors",
107
- "model.layers.17.input_layernorm.weight": "model.safetensors",
108
- "model.layers.17.mlp.down_proj.weight": "model.safetensors",
109
- "model.layers.17.mlp.gate_proj.weight": "model.safetensors",
110
- "model.layers.17.mlp.up_proj.weight": "model.safetensors",
111
- "model.layers.17.post_attention_layernorm.weight": "model.safetensors",
112
- "model.layers.17.self_attn.k_norm.weight": "model.safetensors",
113
- "model.layers.17.self_attn.k_proj.weight": "model.safetensors",
114
- "model.layers.17.self_attn.o_proj.weight": "model.safetensors",
115
- "model.layers.17.self_attn.q_norm.weight": "model.safetensors",
116
- "model.layers.17.self_attn.q_proj.weight": "model.safetensors",
117
- "model.layers.17.self_attn.v_proj.weight": "model.safetensors",
118
- "model.layers.18.input_layernorm.weight": "model.safetensors",
119
- "model.layers.18.mlp.down_proj.weight": "model.safetensors",
120
- "model.layers.18.mlp.gate_proj.weight": "model.safetensors",
121
- "model.layers.18.mlp.up_proj.weight": "model.safetensors",
122
- "model.layers.18.post_attention_layernorm.weight": "model.safetensors",
123
- "model.layers.18.self_attn.k_norm.weight": "model.safetensors",
124
- "model.layers.18.self_attn.k_proj.weight": "model.safetensors",
125
- "model.layers.18.self_attn.o_proj.weight": "model.safetensors",
126
- "model.layers.18.self_attn.q_norm.weight": "model.safetensors",
127
- "model.layers.18.self_attn.q_proj.weight": "model.safetensors",
128
- "model.layers.18.self_attn.v_proj.weight": "model.safetensors",
129
- "model.layers.19.input_layernorm.weight": "model.safetensors",
130
- "model.layers.19.mlp.down_proj.weight": "model.safetensors",
131
- "model.layers.19.mlp.gate_proj.weight": "model.safetensors",
132
- "model.layers.19.mlp.up_proj.weight": "model.safetensors",
133
- "model.layers.19.post_attention_layernorm.weight": "model.safetensors",
134
- "model.layers.19.self_attn.k_norm.weight": "model.safetensors",
135
- "model.layers.19.self_attn.k_proj.weight": "model.safetensors",
136
- "model.layers.19.self_attn.o_proj.weight": "model.safetensors",
137
- "model.layers.19.self_attn.q_norm.weight": "model.safetensors",
138
- "model.layers.19.self_attn.q_proj.weight": "model.safetensors",
139
- "model.layers.19.self_attn.v_proj.weight": "model.safetensors",
140
- "model.layers.2.input_layernorm.weight": "model.safetensors",
141
- "model.layers.2.mlp.down_proj.weight": "model.safetensors",
142
- "model.layers.2.mlp.gate_proj.weight": "model.safetensors",
143
- "model.layers.2.mlp.up_proj.weight": "model.safetensors",
144
- "model.layers.2.post_attention_layernorm.weight": "model.safetensors",
145
- "model.layers.2.self_attn.k_norm.weight": "model.safetensors",
146
- "model.layers.2.self_attn.k_proj.weight": "model.safetensors",
147
- "model.layers.2.self_attn.o_proj.weight": "model.safetensors",
148
- "model.layers.2.self_attn.q_norm.weight": "model.safetensors",
149
- "model.layers.2.self_attn.q_proj.weight": "model.safetensors",
150
- "model.layers.2.self_attn.v_proj.weight": "model.safetensors",
151
- "model.layers.20.input_layernorm.weight": "model.safetensors",
152
- "model.layers.20.mlp.down_proj.weight": "model.safetensors",
153
- "model.layers.20.mlp.gate_proj.weight": "model.safetensors",
154
- "model.layers.20.mlp.up_proj.weight": "model.safetensors",
155
- "model.layers.20.post_attention_layernorm.weight": "model.safetensors",
156
- "model.layers.20.self_attn.k_norm.weight": "model.safetensors",
157
- "model.layers.20.self_attn.k_proj.weight": "model.safetensors",
158
- "model.layers.20.self_attn.o_proj.weight": "model.safetensors",
159
- "model.layers.20.self_attn.q_norm.weight": "model.safetensors",
160
- "model.layers.20.self_attn.q_proj.weight": "model.safetensors",
161
- "model.layers.20.self_attn.v_proj.weight": "model.safetensors",
162
- "model.layers.21.input_layernorm.weight": "model.safetensors",
163
- "model.layers.21.mlp.down_proj.weight": "model.safetensors",
164
- "model.layers.21.mlp.gate_proj.weight": "model.safetensors",
165
- "model.layers.21.mlp.up_proj.weight": "model.safetensors",
166
- "model.layers.21.post_attention_layernorm.weight": "model.safetensors",
167
- "model.layers.21.self_attn.k_norm.weight": "model.safetensors",
168
- "model.layers.21.self_attn.k_proj.weight": "model.safetensors",
169
- "model.layers.21.self_attn.o_proj.weight": "model.safetensors",
170
- "model.layers.21.self_attn.q_norm.weight": "model.safetensors",
171
- "model.layers.21.self_attn.q_proj.weight": "model.safetensors",
172
- "model.layers.21.self_attn.v_proj.weight": "model.safetensors",
173
- "model.layers.22.input_layernorm.weight": "model.safetensors",
174
- "model.layers.22.mlp.down_proj.weight": "model.safetensors",
175
- "model.layers.22.mlp.gate_proj.weight": "model.safetensors",
176
- "model.layers.22.mlp.up_proj.weight": "model.safetensors",
177
- "model.layers.22.post_attention_layernorm.weight": "model.safetensors",
178
- "model.layers.22.self_attn.k_norm.weight": "model.safetensors",
179
- "model.layers.22.self_attn.k_proj.weight": "model.safetensors",
180
- "model.layers.22.self_attn.o_proj.weight": "model.safetensors",
181
- "model.layers.22.self_attn.q_norm.weight": "model.safetensors",
182
- "model.layers.22.self_attn.q_proj.weight": "model.safetensors",
183
- "model.layers.22.self_attn.v_proj.weight": "model.safetensors",
184
- "model.layers.23.input_layernorm.weight": "model.safetensors",
185
- "model.layers.23.mlp.down_proj.weight": "model.safetensors",
186
- "model.layers.23.mlp.gate_proj.weight": "model.safetensors",
187
- "model.layers.23.mlp.up_proj.weight": "model.safetensors",
188
- "model.layers.23.post_attention_layernorm.weight": "model.safetensors",
189
- "model.layers.23.self_attn.k_norm.weight": "model.safetensors",
190
- "model.layers.23.self_attn.k_proj.weight": "model.safetensors",
191
- "model.layers.23.self_attn.o_proj.weight": "model.safetensors",
192
- "model.layers.23.self_attn.q_norm.weight": "model.safetensors",
193
- "model.layers.23.self_attn.q_proj.weight": "model.safetensors",
194
- "model.layers.23.self_attn.v_proj.weight": "model.safetensors",
195
- "model.layers.24.input_layernorm.weight": "model.safetensors",
196
- "model.layers.24.mlp.down_proj.weight": "model.safetensors",
197
- "model.layers.24.mlp.gate_proj.weight": "model.safetensors",
198
- "model.layers.24.mlp.up_proj.weight": "model.safetensors",
199
- "model.layers.24.post_attention_layernorm.weight": "model.safetensors",
200
- "model.layers.24.self_attn.k_norm.weight": "model.safetensors",
201
- "model.layers.24.self_attn.k_proj.weight": "model.safetensors",
202
- "model.layers.24.self_attn.o_proj.weight": "model.safetensors",
203
- "model.layers.24.self_attn.q_norm.weight": "model.safetensors",
204
- "model.layers.24.self_attn.q_proj.weight": "model.safetensors",
205
- "model.layers.24.self_attn.v_proj.weight": "model.safetensors",
206
- "model.layers.25.input_layernorm.weight": "model.safetensors",
207
- "model.layers.25.mlp.down_proj.weight": "model.safetensors",
208
- "model.layers.25.mlp.gate_proj.weight": "model.safetensors",
209
- "model.layers.25.mlp.up_proj.weight": "model.safetensors",
210
- "model.layers.25.post_attention_layernorm.weight": "model.safetensors",
211
- "model.layers.25.self_attn.k_norm.weight": "model.safetensors",
212
- "model.layers.25.self_attn.k_proj.weight": "model.safetensors",
213
- "model.layers.25.self_attn.o_proj.weight": "model.safetensors",
214
- "model.layers.25.self_attn.q_norm.weight": "model.safetensors",
215
- "model.layers.25.self_attn.q_proj.weight": "model.safetensors",
216
- "model.layers.25.self_attn.v_proj.weight": "model.safetensors",
217
- "model.layers.26.input_layernorm.weight": "model.safetensors",
218
- "model.layers.26.mlp.down_proj.weight": "model.safetensors",
219
- "model.layers.26.mlp.gate_proj.weight": "model.safetensors",
220
- "model.layers.26.mlp.up_proj.weight": "model.safetensors",
221
- "model.layers.26.post_attention_layernorm.weight": "model.safetensors",
222
- "model.layers.26.self_attn.k_norm.weight": "model.safetensors",
223
- "model.layers.26.self_attn.k_proj.weight": "model.safetensors",
224
- "model.layers.26.self_attn.o_proj.weight": "model.safetensors",
225
- "model.layers.26.self_attn.q_norm.weight": "model.safetensors",
226
- "model.layers.26.self_attn.q_proj.weight": "model.safetensors",
227
- "model.layers.26.self_attn.v_proj.weight": "model.safetensors",
228
- "model.layers.27.input_layernorm.weight": "model.safetensors",
229
- "model.layers.27.mlp.down_proj.weight": "model.safetensors",
230
- "model.layers.27.mlp.gate_proj.weight": "model.safetensors",
231
- "model.layers.27.mlp.up_proj.weight": "model.safetensors",
232
- "model.layers.27.post_attention_layernorm.weight": "model.safetensors",
233
- "model.layers.27.self_attn.k_norm.weight": "model.safetensors",
234
- "model.layers.27.self_attn.k_proj.weight": "model.safetensors",
235
- "model.layers.27.self_attn.o_proj.weight": "model.safetensors",
236
- "model.layers.27.self_attn.q_norm.weight": "model.safetensors",
237
- "model.layers.27.self_attn.q_proj.weight": "model.safetensors",
238
- "model.layers.27.self_attn.v_proj.weight": "model.safetensors",
239
- "model.layers.3.input_layernorm.weight": "model.safetensors",
240
- "model.layers.3.mlp.down_proj.weight": "model.safetensors",
241
- "model.layers.3.mlp.gate_proj.weight": "model.safetensors",
242
- "model.layers.3.mlp.up_proj.weight": "model.safetensors",
243
- "model.layers.3.post_attention_layernorm.weight": "model.safetensors",
244
- "model.layers.3.self_attn.k_norm.weight": "model.safetensors",
245
- "model.layers.3.self_attn.k_proj.weight": "model.safetensors",
246
- "model.layers.3.self_attn.o_proj.weight": "model.safetensors",
247
- "model.layers.3.self_attn.q_norm.weight": "model.safetensors",
248
- "model.layers.3.self_attn.q_proj.weight": "model.safetensors",
249
- "model.layers.3.self_attn.v_proj.weight": "model.safetensors",
250
- "model.layers.4.input_layernorm.weight": "model.safetensors",
251
- "model.layers.4.mlp.down_proj.weight": "model.safetensors",
252
- "model.layers.4.mlp.gate_proj.weight": "model.safetensors",
253
- "model.layers.4.mlp.up_proj.weight": "model.safetensors",
254
- "model.layers.4.post_attention_layernorm.weight": "model.safetensors",
255
- "model.layers.4.self_attn.k_norm.weight": "model.safetensors",
256
- "model.layers.4.self_attn.k_proj.weight": "model.safetensors",
257
- "model.layers.4.self_attn.o_proj.weight": "model.safetensors",
258
- "model.layers.4.self_attn.q_norm.weight": "model.safetensors",
259
- "model.layers.4.self_attn.q_proj.weight": "model.safetensors",
260
- "model.layers.4.self_attn.v_proj.weight": "model.safetensors",
261
- "model.layers.5.input_layernorm.weight": "model.safetensors",
262
- "model.layers.5.mlp.down_proj.weight": "model.safetensors",
263
- "model.layers.5.mlp.gate_proj.weight": "model.safetensors",
264
- "model.layers.5.mlp.up_proj.weight": "model.safetensors",
265
- "model.layers.5.post_attention_layernorm.weight": "model.safetensors",
266
- "model.layers.5.self_attn.k_norm.weight": "model.safetensors",
267
- "model.layers.5.self_attn.k_proj.weight": "model.safetensors",
268
- "model.layers.5.self_attn.o_proj.weight": "model.safetensors",
269
- "model.layers.5.self_attn.q_norm.weight": "model.safetensors",
270
- "model.layers.5.self_attn.q_proj.weight": "model.safetensors",
271
- "model.layers.5.self_attn.v_proj.weight": "model.safetensors",
272
- "model.layers.6.input_layernorm.weight": "model.safetensors",
273
- "model.layers.6.mlp.down_proj.weight": "model.safetensors",
274
- "model.layers.6.mlp.gate_proj.weight": "model.safetensors",
275
- "model.layers.6.mlp.up_proj.weight": "model.safetensors",
276
- "model.layers.6.post_attention_layernorm.weight": "model.safetensors",
277
- "model.layers.6.self_attn.k_norm.weight": "model.safetensors",
278
- "model.layers.6.self_attn.k_proj.weight": "model.safetensors",
279
- "model.layers.6.self_attn.o_proj.weight": "model.safetensors",
280
- "model.layers.6.self_attn.q_norm.weight": "model.safetensors",
281
- "model.layers.6.self_attn.q_proj.weight": "model.safetensors",
282
- "model.layers.6.self_attn.v_proj.weight": "model.safetensors",
283
- "model.layers.7.input_layernorm.weight": "model.safetensors",
284
- "model.layers.7.mlp.down_proj.weight": "model.safetensors",
285
- "model.layers.7.mlp.gate_proj.weight": "model.safetensors",
286
- "model.layers.7.mlp.up_proj.weight": "model.safetensors",
287
- "model.layers.7.post_attention_layernorm.weight": "model.safetensors",
288
- "model.layers.7.self_attn.k_norm.weight": "model.safetensors",
289
- "model.layers.7.self_attn.k_proj.weight": "model.safetensors",
290
- "model.layers.7.self_attn.o_proj.weight": "model.safetensors",
291
- "model.layers.7.self_attn.q_norm.weight": "model.safetensors",
292
- "model.layers.7.self_attn.q_proj.weight": "model.safetensors",
293
- "model.layers.7.self_attn.v_proj.weight": "model.safetensors",
294
- "model.layers.8.input_layernorm.weight": "model.safetensors",
295
- "model.layers.8.mlp.down_proj.weight": "model.safetensors",
296
- "model.layers.8.mlp.gate_proj.weight": "model.safetensors",
297
- "model.layers.8.mlp.up_proj.weight": "model.safetensors",
298
- "model.layers.8.post_attention_layernorm.weight": "model.safetensors",
299
- "model.layers.8.self_attn.k_norm.weight": "model.safetensors",
300
- "model.layers.8.self_attn.k_proj.weight": "model.safetensors",
301
- "model.layers.8.self_attn.o_proj.weight": "model.safetensors",
302
- "model.layers.8.self_attn.q_norm.weight": "model.safetensors",
303
- "model.layers.8.self_attn.q_proj.weight": "model.safetensors",
304
- "model.layers.8.self_attn.v_proj.weight": "model.safetensors",
305
- "model.layers.9.input_layernorm.weight": "model.safetensors",
306
- "model.layers.9.mlp.down_proj.weight": "model.safetensors",
307
- "model.layers.9.mlp.gate_proj.weight": "model.safetensors",
308
- "model.layers.9.mlp.up_proj.weight": "model.safetensors",
309
- "model.layers.9.post_attention_layernorm.weight": "model.safetensors",
310
- "model.layers.9.self_attn.k_norm.weight": "model.safetensors",
311
- "model.layers.9.self_attn.k_proj.weight": "model.safetensors",
312
- "model.layers.9.self_attn.o_proj.weight": "model.safetensors",
313
- "model.layers.9.self_attn.q_norm.weight": "model.safetensors",
314
- "model.layers.9.self_attn.q_proj.weight": "model.safetensors",
315
- "model.layers.9.self_attn.v_proj.weight": "model.safetensors",
316
- "model.norm.weight": "model.safetensors"
317
- }
318
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  {
2
+ "metadata": {
3
+ "total_size": 8411510272
4
+ },
5
+ "weight_map": {
6
+ "model.embed_tokens.weight": "model-00001-of-00009.safetensors",
7
+ "model.layers.1.mlp.down_proj.weight": "model-00002-of-00009.safetensors",
8
+ "model.layers.1.mlp.gate_proj.weight": "model-00002-of-00009.safetensors",
9
+ "model.layers.1.mlp.up_proj.weight": "model-00002-of-00009.safetensors",
10
+ "model.layers.10.mlp.down_proj.weight": "model-00002-of-00009.safetensors",
11
+ "model.layers.10.mlp.gate_proj.weight": "model-00002-of-00009.safetensors",
12
+ "model.layers.10.mlp.up_proj.weight": "model-00002-of-00009.safetensors",
13
+ "model.layers.11.mlp.down_proj.weight": "model-00002-of-00009.safetensors",
14
+ "model.layers.11.mlp.gate_proj.weight": "model-00002-of-00009.safetensors",
15
+ "model.layers.11.mlp.up_proj.weight": "model-00002-of-00009.safetensors",
16
+ "model.layers.12.mlp.down_proj.weight": "model-00002-of-00009.safetensors",
17
+ "model.layers.12.mlp.gate_proj.weight": "model-00002-of-00009.safetensors",
18
+ "model.layers.12.mlp.up_proj.weight": "model-00002-of-00009.safetensors",
19
+ "model.layers.13.mlp.down_proj.weight": "model-00002-of-00009.safetensors",
20
+ "model.layers.13.mlp.gate_proj.weight": "model-00002-of-00009.safetensors",
21
+ "model.layers.13.mlp.up_proj.weight": "model-00002-of-00009.safetensors",
22
+ "model.layers.14.mlp.down_proj.weight": "model-00002-of-00009.safetensors",
23
+ "model.layers.14.mlp.gate_proj.weight": "model-00002-of-00009.safetensors",
24
+ "model.layers.14.mlp.up_proj.weight": "model-00002-of-00009.safetensors",
25
+ "model.layers.15.mlp.down_proj.weight": "model-00002-of-00009.safetensors",
26
+ "model.layers.15.mlp.gate_proj.weight": "model-00002-of-00009.safetensors",
27
+ "model.layers.15.mlp.up_proj.weight": "model-00002-of-00009.safetensors",
28
+ "model.layers.16.mlp.down_proj.weight": "model-00003-of-00009.safetensors",
29
+ "model.layers.16.mlp.gate_proj.weight": "model-00003-of-00009.safetensors",
30
+ "model.layers.16.mlp.up_proj.weight": "model-00003-of-00009.safetensors",
31
+ "model.layers.17.mlp.down_proj.weight": "model-00003-of-00009.safetensors",
32
+ "model.layers.17.mlp.gate_proj.weight": "model-00003-of-00009.safetensors",
33
+ "model.layers.17.mlp.up_proj.weight": "model-00003-of-00009.safetensors",
34
+ "model.layers.18.mlp.down_proj.weight": "model-00003-of-00009.safetensors",
35
+ "model.layers.18.mlp.gate_proj.weight": "model-00003-of-00009.safetensors",
36
+ "model.layers.18.mlp.up_proj.weight": "model-00003-of-00009.safetensors",
37
+ "model.layers.19.mlp.down_proj.weight": "model-00003-of-00009.safetensors",
38
+ "model.layers.19.mlp.gate_proj.weight": "model-00003-of-00009.safetensors",
39
+ "model.layers.19.mlp.up_proj.weight": "model-00003-of-00009.safetensors",
40
+ "model.layers.2.mlp.down_proj.weight": "model-00003-of-00009.safetensors",
41
+ "model.layers.2.mlp.gate_proj.weight": "model-00003-of-00009.safetensors",
42
+ "model.layers.2.mlp.up_proj.weight": "model-00003-of-00009.safetensors",
43
+ "model.layers.20.mlp.down_proj.weight": "model-00003-of-00009.safetensors",
44
+ "model.layers.20.mlp.gate_proj.weight": "model-00003-of-00009.safetensors",
45
+ "model.layers.20.mlp.up_proj.weight": "model-00003-of-00009.safetensors",
46
+ "model.layers.21.mlp.down_proj.weight": "model-00003-of-00009.safetensors",
47
+ "model.layers.21.mlp.gate_proj.weight": "model-00003-of-00009.safetensors",
48
+ "model.layers.21.mlp.up_proj.weight": "model-00003-of-00009.safetensors",
49
+ "model.layers.22.mlp.down_proj.weight": "model-00004-of-00009.safetensors",
50
+ "model.layers.22.mlp.gate_proj.weight": "model-00004-of-00009.safetensors",
51
+ "model.layers.22.mlp.up_proj.weight": "model-00004-of-00009.safetensors",
52
+ "model.layers.23.mlp.down_proj.weight": "model-00004-of-00009.safetensors",
53
+ "model.layers.23.mlp.gate_proj.weight": "model-00004-of-00009.safetensors",
54
+ "model.layers.23.mlp.up_proj.weight": "model-00004-of-00009.safetensors",
55
+ "model.layers.24.mlp.down_proj.weight": "model-00004-of-00009.safetensors",
56
+ "model.layers.24.mlp.gate_proj.weight": "model-00004-of-00009.safetensors",
57
+ "model.layers.24.mlp.up_proj.weight": "model-00004-of-00009.safetensors",
58
+ "model.layers.25.mlp.down_proj.weight": "model-00004-of-00009.safetensors",
59
+ "model.layers.25.mlp.gate_proj.weight": "model-00004-of-00009.safetensors",
60
+ "model.layers.25.mlp.up_proj.weight": "model-00004-of-00009.safetensors",
61
+ "model.layers.26.mlp.down_proj.weight": "model-00004-of-00009.safetensors",
62
+ "model.layers.29.mlp.down_proj.weight": "model-00004-of-00009.safetensors",
63
+ "model.layers.3.mlp.down_proj.weight": "model-00004-of-00009.safetensors",
64
+ "model.layers.3.mlp.gate_proj.weight": "model-00004-of-00009.safetensors",
65
+ "model.layers.3.mlp.up_proj.weight": "model-00004-of-00009.safetensors",
66
+ "model.layers.30.mlp.down_proj.weight": "model-00004-of-00009.safetensors",
67
+ "model.layers.30.mlp.gate_proj.weight": "model-00004-of-00009.safetensors",
68
+ "model.layers.30.mlp.up_proj.weight": "model-00004-of-00009.safetensors",
69
+ "model.layers.31.mlp.down_proj.weight": "model-00004-of-00009.safetensors",
70
+ "model.layers.31.mlp.gate_proj.weight": "model-00005-of-00009.safetensors",
71
+ "model.layers.31.mlp.up_proj.weight": "model-00005-of-00009.safetensors",
72
+ "model.layers.4.mlp.down_proj.weight": "model-00005-of-00009.safetensors",
73
+ "model.layers.4.mlp.gate_proj.weight": "model-00005-of-00009.safetensors",
74
+ "model.layers.4.mlp.up_proj.weight": "model-00005-of-00009.safetensors",
75
+ "model.layers.5.mlp.down_proj.weight": "model-00005-of-00009.safetensors",
76
+ "model.layers.5.mlp.gate_proj.weight": "model-00005-of-00009.safetensors",
77
+ "model.layers.5.mlp.up_proj.weight": "model-00005-of-00009.safetensors",
78
+ "model.layers.6.mlp.down_proj.weight": "model-00005-of-00009.safetensors",
79
+ "model.layers.6.mlp.gate_proj.weight": "model-00005-of-00009.safetensors",
80
+ "model.layers.6.mlp.up_proj.weight": "model-00005-of-00009.safetensors",
81
+ "model.layers.7.mlp.down_proj.weight": "model-00005-of-00009.safetensors",
82
+ "model.layers.7.mlp.gate_proj.weight": "model-00005-of-00009.safetensors",
83
+ "model.layers.7.mlp.up_proj.weight": "model-00005-of-00009.safetensors",
84
+ "model.layers.8.mlp.down_proj.weight": "model-00005-of-00009.safetensors",
85
+ "model.layers.8.mlp.gate_proj.weight": "model-00005-of-00009.safetensors",
86
+ "model.layers.8.mlp.up_proj.weight": "model-00005-of-00009.safetensors",
87
+ "model.layers.9.mlp.down_proj.weight": "model-00005-of-00009.safetensors",
88
+ "model.layers.9.mlp.gate_proj.weight": "model-00005-of-00009.safetensors",
89
+ "model.layers.9.mlp.up_proj.weight": "model-00005-of-00009.safetensors",
90
+ "model.layers.0.input_layernorm.weight": "model-00005-of-00009.safetensors",
91
+ "model.layers.0.linear_attn.A_log": "model-00005-of-00009.safetensors",
92
+ "model.layers.0.linear_attn.conv1d.weight": "model-00005-of-00009.safetensors",
93
+ "model.layers.0.linear_attn.dt_bias": "model-00005-of-00009.safetensors",
94
+ "model.layers.0.linear_attn.in_proj_a.weight": "model-00005-of-00009.safetensors",
95
+ "model.layers.0.linear_attn.in_proj_b.weight": "model-00005-of-00009.safetensors",
96
+ "model.layers.0.linear_attn.in_proj_qkv.weight": "model-00005-of-00009.safetensors",
97
+ "model.layers.0.linear_attn.in_proj_z.weight": "model-00006-of-00009.safetensors",
98
+ "model.layers.0.linear_attn.norm.weight": "model-00006-of-00009.safetensors",
99
+ "model.layers.0.linear_attn.out_proj.weight": "model-00006-of-00009.safetensors",
100
+ "model.layers.0.mlp.down_proj.weight": "model-00006-of-00009.safetensors",
101
+ "model.layers.0.mlp.gate_proj.weight": "model-00006-of-00009.safetensors",
102
+ "model.layers.0.mlp.up_proj.weight": "model-00006-of-00009.safetensors",
103
+ "model.layers.0.post_attention_layernorm.weight": "model-00006-of-00009.safetensors",
104
+ "model.layers.1.input_layernorm.weight": "model-00006-of-00009.safetensors",
105
+ "model.layers.1.linear_attn.A_log": "model-00006-of-00009.safetensors",
106
+ "model.layers.1.linear_attn.conv1d.weight": "model-00006-of-00009.safetensors",
107
+ "model.layers.1.linear_attn.dt_bias": "model-00006-of-00009.safetensors",
108
+ "model.layers.1.linear_attn.in_proj_a.weight": "model-00006-of-00009.safetensors",
109
+ "model.layers.1.linear_attn.in_proj_b.weight": "model-00006-of-00009.safetensors",
110
+ "model.layers.1.linear_attn.in_proj_qkv.weight": "model-00006-of-00009.safetensors",
111
+ "model.layers.1.linear_attn.in_proj_z.weight": "model-00006-of-00009.safetensors",
112
+ "model.layers.1.linear_attn.norm.weight": "model-00006-of-00009.safetensors",
113
+ "model.layers.1.linear_attn.out_proj.weight": "model-00006-of-00009.safetensors",
114
+ "model.layers.1.post_attention_layernorm.weight": "model-00006-of-00009.safetensors",
115
+ "model.layers.10.input_layernorm.weight": "model-00006-of-00009.safetensors",
116
+ "model.layers.10.linear_attn.A_log": "model-00006-of-00009.safetensors",
117
+ "model.layers.10.linear_attn.conv1d.weight": "model-00006-of-00009.safetensors",
118
+ "model.layers.10.linear_attn.dt_bias": "model-00006-of-00009.safetensors",
119
+ "model.layers.10.linear_attn.in_proj_a.weight": "model-00006-of-00009.safetensors",
120
+ "model.layers.10.linear_attn.in_proj_b.weight": "model-00006-of-00009.safetensors",
121
+ "model.layers.10.linear_attn.in_proj_qkv.weight": "model-00006-of-00009.safetensors",
122
+ "model.layers.10.linear_attn.in_proj_z.weight": "model-00006-of-00009.safetensors",
123
+ "model.layers.10.linear_attn.norm.weight": "model-00006-of-00009.safetensors",
124
+ "model.layers.10.linear_attn.out_proj.weight": "model-00006-of-00009.safetensors",
125
+ "model.layers.10.post_attention_layernorm.weight": "model-00006-of-00009.safetensors",
126
+ "model.layers.11.input_layernorm.weight": "model-00006-of-00009.safetensors",
127
+ "model.layers.11.post_attention_layernorm.weight": "model-00006-of-00009.safetensors",
128
+ "model.layers.11.self_attn.k_norm.weight": "model-00006-of-00009.safetensors",
129
+ "model.layers.11.self_attn.k_proj.weight": "model-00006-of-00009.safetensors",
130
+ "model.layers.11.self_attn.o_proj.weight": "model-00006-of-00009.safetensors",
131
+ "model.layers.11.self_attn.q_norm.weight": "model-00006-of-00009.safetensors",
132
+ "model.layers.11.self_attn.q_proj.weight": "model-00006-of-00009.safetensors",
133
+ "model.layers.11.self_attn.v_proj.weight": "model-00006-of-00009.safetensors",
134
+ "model.layers.12.input_layernorm.weight": "model-00006-of-00009.safetensors",
135
+ "model.layers.12.linear_attn.A_log": "model-00006-of-00009.safetensors",
136
+ "model.layers.12.linear_attn.conv1d.weight": "model-00006-of-00009.safetensors",
137
+ "model.layers.12.linear_attn.dt_bias": "model-00006-of-00009.safetensors",
138
+ "model.layers.12.linear_attn.in_proj_a.weight": "model-00006-of-00009.safetensors",
139
+ "model.layers.12.linear_attn.in_proj_b.weight": "model-00006-of-00009.safetensors",
140
+ "model.layers.12.linear_attn.in_proj_qkv.weight": "model-00006-of-00009.safetensors",
141
+ "model.layers.12.linear_attn.in_proj_z.weight": "model-00006-of-00009.safetensors",
142
+ "model.layers.12.linear_attn.norm.weight": "model-00006-of-00009.safetensors",
143
+ "model.layers.12.linear_attn.out_proj.weight": "model-00006-of-00009.safetensors",
144
+ "model.layers.12.post_attention_layernorm.weight": "model-00006-of-00009.safetensors",
145
+ "model.layers.13.input_layernorm.weight": "model-00006-of-00009.safetensors",
146
+ "model.layers.13.linear_attn.A_log": "model-00006-of-00009.safetensors",
147
+ "model.layers.13.linear_attn.conv1d.weight": "model-00006-of-00009.safetensors",
148
+ "model.layers.13.linear_attn.dt_bias": "model-00006-of-00009.safetensors",
149
+ "model.layers.13.linear_attn.in_proj_a.weight": "model-00006-of-00009.safetensors",
150
+ "model.layers.13.linear_attn.in_proj_b.weight": "model-00006-of-00009.safetensors",
151
+ "model.layers.13.linear_attn.in_proj_qkv.weight": "model-00006-of-00009.safetensors",
152
+ "model.layers.13.linear_attn.in_proj_z.weight": "model-00006-of-00009.safetensors",
153
+ "model.layers.13.linear_attn.norm.weight": "model-00006-of-00009.safetensors",
154
+ "model.layers.13.linear_attn.out_proj.weight": "model-00006-of-00009.safetensors",
155
+ "model.layers.13.post_attention_layernorm.weight": "model-00006-of-00009.safetensors",
156
+ "model.layers.14.input_layernorm.weight": "model-00006-of-00009.safetensors",
157
+ "model.layers.14.linear_attn.A_log": "model-00006-of-00009.safetensors",
158
+ "model.layers.14.linear_attn.conv1d.weight": "model-00006-of-00009.safetensors",
159
+ "model.layers.14.linear_attn.dt_bias": "model-00006-of-00009.safetensors",
160
+ "model.layers.14.linear_attn.in_proj_a.weight": "model-00006-of-00009.safetensors",
161
+ "model.layers.14.linear_attn.in_proj_b.weight": "model-00006-of-00009.safetensors",
162
+ "model.layers.14.linear_attn.in_proj_qkv.weight": "model-00006-of-00009.safetensors",
163
+ "model.layers.14.linear_attn.in_proj_z.weight": "model-00006-of-00009.safetensors",
164
+ "model.layers.14.linear_attn.norm.weight": "model-00006-of-00009.safetensors",
165
+ "model.layers.14.linear_attn.out_proj.weight": "model-00006-of-00009.safetensors",
166
+ "model.layers.14.post_attention_layernorm.weight": "model-00006-of-00009.safetensors",
167
+ "model.layers.15.input_layernorm.weight": "model-00006-of-00009.safetensors",
168
+ "model.layers.15.post_attention_layernorm.weight": "model-00006-of-00009.safetensors",
169
+ "model.layers.15.self_attn.k_norm.weight": "model-00006-of-00009.safetensors",
170
+ "model.layers.15.self_attn.k_proj.weight": "model-00006-of-00009.safetensors",
171
+ "model.layers.15.self_attn.o_proj.weight": "model-00006-of-00009.safetensors",
172
+ "model.layers.15.self_attn.q_norm.weight": "model-00006-of-00009.safetensors",
173
+ "model.layers.15.self_attn.q_proj.weight": "model-00006-of-00009.safetensors",
174
+ "model.layers.15.self_attn.v_proj.weight": "model-00006-of-00009.safetensors",
175
+ "model.layers.16.input_layernorm.weight": "model-00006-of-00009.safetensors",
176
+ "model.layers.16.linear_attn.A_log": "model-00006-of-00009.safetensors",
177
+ "model.layers.16.linear_attn.conv1d.weight": "model-00006-of-00009.safetensors",
178
+ "model.layers.16.linear_attn.dt_bias": "model-00006-of-00009.safetensors",
179
+ "model.layers.16.linear_attn.in_proj_a.weight": "model-00006-of-00009.safetensors",
180
+ "model.layers.16.linear_attn.in_proj_b.weight": "model-00006-of-00009.safetensors",
181
+ "model.layers.16.linear_attn.in_proj_qkv.weight": "model-00006-of-00009.safetensors",
182
+ "model.layers.16.linear_attn.in_proj_z.weight": "model-00006-of-00009.safetensors",
183
+ "model.layers.16.linear_attn.norm.weight": "model-00006-of-00009.safetensors",
184
+ "model.layers.16.linear_attn.out_proj.weight": "model-00006-of-00009.safetensors",
185
+ "model.layers.16.post_attention_layernorm.weight": "model-00006-of-00009.safetensors",
186
+ "model.layers.17.input_layernorm.weight": "model-00006-of-00009.safetensors",
187
+ "model.layers.17.linear_attn.A_log": "model-00006-of-00009.safetensors",
188
+ "model.layers.17.linear_attn.conv1d.weight": "model-00006-of-00009.safetensors",
189
+ "model.layers.17.linear_attn.dt_bias": "model-00006-of-00009.safetensors",
190
+ "model.layers.17.linear_attn.in_proj_a.weight": "model-00006-of-00009.safetensors",
191
+ "model.layers.17.linear_attn.in_proj_b.weight": "model-00006-of-00009.safetensors",
192
+ "model.layers.17.linear_attn.in_proj_qkv.weight": "model-00006-of-00009.safetensors",
193
+ "model.layers.17.linear_attn.in_proj_z.weight": "model-00006-of-00009.safetensors",
194
+ "model.layers.17.linear_attn.norm.weight": "model-00006-of-00009.safetensors",
195
+ "model.layers.17.linear_attn.out_proj.weight": "model-00006-of-00009.safetensors",
196
+ "model.layers.17.post_attention_layernorm.weight": "model-00006-of-00009.safetensors",
197
+ "model.layers.18.input_layernorm.weight": "model-00006-of-00009.safetensors",
198
+ "model.layers.18.linear_attn.A_log": "model-00006-of-00009.safetensors",
199
+ "model.layers.18.linear_attn.conv1d.weight": "model-00006-of-00009.safetensors",
200
+ "model.layers.18.linear_attn.dt_bias": "model-00006-of-00009.safetensors",
201
+ "model.layers.18.linear_attn.in_proj_a.weight": "model-00006-of-00009.safetensors",
202
+ "model.layers.18.linear_attn.in_proj_b.weight": "model-00006-of-00009.safetensors",
203
+ "model.layers.18.linear_attn.in_proj_qkv.weight": "model-00006-of-00009.safetensors",
204
+ "model.layers.18.linear_attn.in_proj_z.weight": "model-00006-of-00009.safetensors",
205
+ "model.layers.18.linear_attn.norm.weight": "model-00006-of-00009.safetensors",
206
+ "model.layers.18.linear_attn.out_proj.weight": "model-00007-of-00009.safetensors",
207
+ "model.layers.18.post_attention_layernorm.weight": "model-00007-of-00009.safetensors",
208
+ "model.layers.19.input_layernorm.weight": "model-00007-of-00009.safetensors",
209
+ "model.layers.19.post_attention_layernorm.weight": "model-00007-of-00009.safetensors",
210
+ "model.layers.19.self_attn.k_norm.weight": "model-00007-of-00009.safetensors",
211
+ "model.layers.19.self_attn.k_proj.weight": "model-00007-of-00009.safetensors",
212
+ "model.layers.19.self_attn.o_proj.weight": "model-00007-of-00009.safetensors",
213
+ "model.layers.19.self_attn.q_norm.weight": "model-00007-of-00009.safetensors",
214
+ "model.layers.19.self_attn.q_proj.weight": "model-00007-of-00009.safetensors",
215
+ "model.layers.19.self_attn.v_proj.weight": "model-00007-of-00009.safetensors",
216
+ "model.layers.2.input_layernorm.weight": "model-00007-of-00009.safetensors",
217
+ "model.layers.2.linear_attn.A_log": "model-00007-of-00009.safetensors",
218
+ "model.layers.2.linear_attn.conv1d.weight": "model-00007-of-00009.safetensors",
219
+ "model.layers.2.linear_attn.dt_bias": "model-00007-of-00009.safetensors",
220
+ "model.layers.2.linear_attn.in_proj_a.weight": "model-00007-of-00009.safetensors",
221
+ "model.layers.2.linear_attn.in_proj_b.weight": "model-00007-of-00009.safetensors",
222
+ "model.layers.2.linear_attn.in_proj_qkv.weight": "model-00007-of-00009.safetensors",
223
+ "model.layers.2.linear_attn.in_proj_z.weight": "model-00007-of-00009.safetensors",
224
+ "model.layers.2.linear_attn.norm.weight": "model-00007-of-00009.safetensors",
225
+ "model.layers.2.linear_attn.out_proj.weight": "model-00007-of-00009.safetensors",
226
+ "model.layers.2.post_attention_layernorm.weight": "model-00007-of-00009.safetensors",
227
+ "model.layers.20.input_layernorm.weight": "model-00007-of-00009.safetensors",
228
+ "model.layers.20.linear_attn.A_log": "model-00007-of-00009.safetensors",
229
+ "model.layers.20.linear_attn.conv1d.weight": "model-00007-of-00009.safetensors",
230
+ "model.layers.20.linear_attn.dt_bias": "model-00007-of-00009.safetensors",
231
+ "model.layers.20.linear_attn.in_proj_a.weight": "model-00007-of-00009.safetensors",
232
+ "model.layers.20.linear_attn.in_proj_b.weight": "model-00007-of-00009.safetensors",
233
+ "model.layers.20.linear_attn.in_proj_qkv.weight": "model-00007-of-00009.safetensors",
234
+ "model.layers.20.linear_attn.in_proj_z.weight": "model-00007-of-00009.safetensors",
235
+ "model.layers.20.linear_attn.norm.weight": "model-00007-of-00009.safetensors",
236
+ "model.layers.20.linear_attn.out_proj.weight": "model-00007-of-00009.safetensors",
237
+ "model.layers.20.post_attention_layernorm.weight": "model-00007-of-00009.safetensors",
238
+ "model.layers.21.input_layernorm.weight": "model-00007-of-00009.safetensors",
239
+ "model.layers.21.linear_attn.A_log": "model-00007-of-00009.safetensors",
240
+ "model.layers.21.linear_attn.conv1d.weight": "model-00007-of-00009.safetensors",
241
+ "model.layers.21.linear_attn.dt_bias": "model-00007-of-00009.safetensors",
242
+ "model.layers.21.linear_attn.in_proj_a.weight": "model-00007-of-00009.safetensors",
243
+ "model.layers.21.linear_attn.in_proj_b.weight": "model-00007-of-00009.safetensors",
244
+ "model.layers.21.linear_attn.in_proj_qkv.weight": "model-00007-of-00009.safetensors",
245
+ "model.layers.21.linear_attn.in_proj_z.weight": "model-00007-of-00009.safetensors",
246
+ "model.layers.21.linear_attn.norm.weight": "model-00007-of-00009.safetensors",
247
+ "model.layers.21.linear_attn.out_proj.weight": "model-00007-of-00009.safetensors",
248
+ "model.layers.21.post_attention_layernorm.weight": "model-00007-of-00009.safetensors",
249
+ "model.layers.22.input_layernorm.weight": "model-00007-of-00009.safetensors",
250
+ "model.layers.22.linear_attn.A_log": "model-00007-of-00009.safetensors",
251
+ "model.layers.22.linear_attn.conv1d.weight": "model-00007-of-00009.safetensors",
252
+ "model.layers.22.linear_attn.dt_bias": "model-00007-of-00009.safetensors",
253
+ "model.layers.22.linear_attn.in_proj_a.weight": "model-00007-of-00009.safetensors",
254
+ "model.layers.22.linear_attn.in_proj_b.weight": "model-00007-of-00009.safetensors",
255
+ "model.layers.22.linear_attn.in_proj_qkv.weight": "model-00007-of-00009.safetensors",
256
+ "model.layers.22.linear_attn.in_proj_z.weight": "model-00007-of-00009.safetensors",
257
+ "model.layers.22.linear_attn.norm.weight": "model-00007-of-00009.safetensors",
258
+ "model.layers.22.linear_attn.out_proj.weight": "model-00007-of-00009.safetensors",
259
+ "model.layers.22.post_attention_layernorm.weight": "model-00007-of-00009.safetensors",
260
+ "model.layers.23.input_layernorm.weight": "model-00007-of-00009.safetensors",
261
+ "model.layers.23.post_attention_layernorm.weight": "model-00007-of-00009.safetensors",
262
+ "model.layers.23.self_attn.k_norm.weight": "model-00007-of-00009.safetensors",
263
+ "model.layers.23.self_attn.k_proj.weight": "model-00007-of-00009.safetensors",
264
+ "model.layers.23.self_attn.o_proj.weight": "model-00007-of-00009.safetensors",
265
+ "model.layers.23.self_attn.q_norm.weight": "model-00007-of-00009.safetensors",
266
+ "model.layers.23.self_attn.q_proj.weight": "model-00007-of-00009.safetensors",
267
+ "model.layers.23.self_attn.v_proj.weight": "model-00007-of-00009.safetensors",
268
+ "model.layers.24.input_layernorm.weight": "model-00007-of-00009.safetensors",
269
+ "model.layers.24.linear_attn.A_log": "model-00007-of-00009.safetensors",
270
+ "model.layers.24.linear_attn.conv1d.weight": "model-00007-of-00009.safetensors",
271
+ "model.layers.24.linear_attn.dt_bias": "model-00007-of-00009.safetensors",
272
+ "model.layers.24.linear_attn.in_proj_a.weight": "model-00007-of-00009.safetensors",
273
+ "model.layers.24.linear_attn.in_proj_b.weight": "model-00007-of-00009.safetensors",
274
+ "model.layers.24.linear_attn.in_proj_qkv.weight": "model-00007-of-00009.safetensors",
275
+ "model.layers.24.linear_attn.in_proj_z.weight": "model-00007-of-00009.safetensors",
276
+ "model.layers.24.linear_attn.norm.weight": "model-00007-of-00009.safetensors",
277
+ "model.layers.24.linear_attn.out_proj.weight": "model-00007-of-00009.safetensors",
278
+ "model.layers.24.post_attention_layernorm.weight": "model-00007-of-00009.safetensors",
279
+ "model.layers.25.input_layernorm.weight": "model-00007-of-00009.safetensors",
280
+ "model.layers.25.linear_attn.A_log": "model-00007-of-00009.safetensors",
281
+ "model.layers.25.linear_attn.conv1d.weight": "model-00007-of-00009.safetensors",
282
+ "model.layers.25.linear_attn.dt_bias": "model-00007-of-00009.safetensors",
283
+ "model.layers.25.linear_attn.in_proj_a.weight": "model-00007-of-00009.safetensors",
284
+ "model.layers.25.linear_attn.in_proj_b.weight": "model-00007-of-00009.safetensors",
285
+ "model.layers.25.linear_attn.in_proj_qkv.weight": "model-00007-of-00009.safetensors",
286
+ "model.layers.25.linear_attn.in_proj_z.weight": "model-00007-of-00009.safetensors",
287
+ "model.layers.25.linear_attn.norm.weight": "model-00007-of-00009.safetensors",
288
+ "model.layers.25.linear_attn.out_proj.weight": "model-00007-of-00009.safetensors",
289
+ "model.layers.25.post_attention_layernorm.weight": "model-00007-of-00009.safetensors",
290
+ "model.layers.26.input_layernorm.weight": "model-00007-of-00009.safetensors",
291
+ "model.layers.26.linear_attn.A_log": "model-00007-of-00009.safetensors",
292
+ "model.layers.26.linear_attn.conv1d.weight": "model-00007-of-00009.safetensors",
293
+ "model.layers.26.linear_attn.dt_bias": "model-00007-of-00009.safetensors",
294
+ "model.layers.26.linear_attn.in_proj_a.weight": "model-00007-of-00009.safetensors",
295
+ "model.layers.26.linear_attn.in_proj_b.weight": "model-00007-of-00009.safetensors",
296
+ "model.layers.26.linear_attn.in_proj_qkv.weight": "model-00007-of-00009.safetensors",
297
+ "model.layers.26.linear_attn.in_proj_z.weight": "model-00007-of-00009.safetensors",
298
+ "model.layers.26.linear_attn.norm.weight": "model-00007-of-00009.safetensors",
299
+ "model.layers.26.linear_attn.out_proj.weight": "model-00007-of-00009.safetensors",
300
+ "model.layers.26.mlp.gate_proj.weight": "model-00007-of-00009.safetensors",
301
+ "model.layers.26.mlp.up_proj.weight": "model-00007-of-00009.safetensors",
302
+ "model.layers.26.post_attention_layernorm.weight": "model-00007-of-00009.safetensors",
303
+ "model.layers.27.input_layernorm.weight": "model-00007-of-00009.safetensors",
304
+ "model.layers.27.mlp.down_proj.weight": "model-00007-of-00009.safetensors",
305
+ "model.layers.27.mlp.gate_proj.weight": "model-00007-of-00009.safetensors",
306
+ "model.layers.27.mlp.up_proj.weight": "model-00007-of-00009.safetensors",
307
+ "model.layers.27.post_attention_layernorm.weight": "model-00007-of-00009.safetensors",
308
+ "model.layers.27.self_attn.k_norm.weight": "model-00007-of-00009.safetensors",
309
+ "model.layers.27.self_attn.k_proj.weight": "model-00007-of-00009.safetensors",
310
+ "model.layers.27.self_attn.o_proj.weight": "model-00008-of-00009.safetensors",
311
+ "model.layers.27.self_attn.q_norm.weight": "model-00008-of-00009.safetensors",
312
+ "model.layers.27.self_attn.q_proj.weight": "model-00008-of-00009.safetensors",
313
+ "model.layers.27.self_attn.v_proj.weight": "model-00008-of-00009.safetensors",
314
+ "model.layers.28.input_layernorm.weight": "model-00008-of-00009.safetensors",
315
+ "model.layers.28.linear_attn.A_log": "model-00008-of-00009.safetensors",
316
+ "model.layers.28.linear_attn.conv1d.weight": "model-00008-of-00009.safetensors",
317
+ "model.layers.28.linear_attn.dt_bias": "model-00008-of-00009.safetensors",
318
+ "model.layers.28.linear_attn.in_proj_a.weight": "model-00008-of-00009.safetensors",
319
+ "model.layers.28.linear_attn.in_proj_b.weight": "model-00008-of-00009.safetensors",
320
+ "model.layers.28.linear_attn.in_proj_qkv.weight": "model-00008-of-00009.safetensors",
321
+ "model.layers.28.linear_attn.in_proj_z.weight": "model-00008-of-00009.safetensors",
322
+ "model.layers.28.linear_attn.norm.weight": "model-00008-of-00009.safetensors",
323
+ "model.layers.28.linear_attn.out_proj.weight": "model-00008-of-00009.safetensors",
324
+ "model.layers.28.mlp.down_proj.weight": "model-00008-of-00009.safetensors",
325
+ "model.layers.28.mlp.gate_proj.weight": "model-00008-of-00009.safetensors",
326
+ "model.layers.28.mlp.up_proj.weight": "model-00008-of-00009.safetensors",
327
+ "model.layers.28.post_attention_layernorm.weight": "model-00008-of-00009.safetensors",
328
+ "model.layers.29.input_layernorm.weight": "model-00008-of-00009.safetensors",
329
+ "model.layers.29.linear_attn.A_log": "model-00008-of-00009.safetensors",
330
+ "model.layers.29.linear_attn.conv1d.weight": "model-00008-of-00009.safetensors",
331
+ "model.layers.29.linear_attn.dt_bias": "model-00008-of-00009.safetensors",
332
+ "model.layers.29.linear_attn.in_proj_a.weight": "model-00008-of-00009.safetensors",
333
+ "model.layers.29.linear_attn.in_proj_b.weight": "model-00008-of-00009.safetensors",
334
+ "model.layers.29.linear_attn.in_proj_qkv.weight": "model-00008-of-00009.safetensors",
335
+ "model.layers.29.linear_attn.in_proj_z.weight": "model-00008-of-00009.safetensors",
336
+ "model.layers.29.linear_attn.norm.weight": "model-00008-of-00009.safetensors",
337
+ "model.layers.29.linear_attn.out_proj.weight": "model-00008-of-00009.safetensors",
338
+ "model.layers.29.mlp.gate_proj.weight": "model-00008-of-00009.safetensors",
339
+ "model.layers.29.mlp.up_proj.weight": "model-00008-of-00009.safetensors",
340
+ "model.layers.29.post_attention_layernorm.weight": "model-00008-of-00009.safetensors",
341
+ "model.layers.3.input_layernorm.weight": "model-00008-of-00009.safetensors",
342
+ "model.layers.3.post_attention_layernorm.weight": "model-00008-of-00009.safetensors",
343
+ "model.layers.3.self_attn.k_norm.weight": "model-00008-of-00009.safetensors",
344
+ "model.layers.3.self_attn.k_proj.weight": "model-00008-of-00009.safetensors",
345
+ "model.layers.3.self_attn.o_proj.weight": "model-00008-of-00009.safetensors",
346
+ "model.layers.3.self_attn.q_norm.weight": "model-00008-of-00009.safetensors",
347
+ "model.layers.3.self_attn.q_proj.weight": "model-00008-of-00009.safetensors",
348
+ "model.layers.3.self_attn.v_proj.weight": "model-00008-of-00009.safetensors",
349
+ "model.layers.30.input_layernorm.weight": "model-00008-of-00009.safetensors",
350
+ "model.layers.30.linear_attn.A_log": "model-00008-of-00009.safetensors",
351
+ "model.layers.30.linear_attn.conv1d.weight": "model-00008-of-00009.safetensors",
352
+ "model.layers.30.linear_attn.dt_bias": "model-00008-of-00009.safetensors",
353
+ "model.layers.30.linear_attn.in_proj_a.weight": "model-00008-of-00009.safetensors",
354
+ "model.layers.30.linear_attn.in_proj_b.weight": "model-00008-of-00009.safetensors",
355
+ "model.layers.30.linear_attn.in_proj_qkv.weight": "model-00008-of-00009.safetensors",
356
+ "model.layers.30.linear_attn.in_proj_z.weight": "model-00008-of-00009.safetensors",
357
+ "model.layers.30.linear_attn.norm.weight": "model-00008-of-00009.safetensors",
358
+ "model.layers.30.linear_attn.out_proj.weight": "model-00008-of-00009.safetensors",
359
+ "model.layers.30.post_attention_layernorm.weight": "model-00008-of-00009.safetensors",
360
+ "model.layers.31.input_layernorm.weight": "model-00008-of-00009.safetensors",
361
+ "model.layers.31.post_attention_layernorm.weight": "model-00008-of-00009.safetensors",
362
+ "model.layers.31.self_attn.k_norm.weight": "model-00008-of-00009.safetensors",
363
+ "model.layers.31.self_attn.k_proj.weight": "model-00008-of-00009.safetensors",
364
+ "model.layers.31.self_attn.o_proj.weight": "model-00008-of-00009.safetensors",
365
+ "model.layers.31.self_attn.q_norm.weight": "model-00008-of-00009.safetensors",
366
+ "model.layers.31.self_attn.q_proj.weight": "model-00008-of-00009.safetensors",
367
+ "model.layers.31.self_attn.v_proj.weight": "model-00008-of-00009.safetensors",
368
+ "model.layers.4.input_layernorm.weight": "model-00008-of-00009.safetensors",
369
+ "model.layers.4.linear_attn.A_log": "model-00008-of-00009.safetensors",
370
+ "model.layers.4.linear_attn.conv1d.weight": "model-00008-of-00009.safetensors",
371
+ "model.layers.4.linear_attn.dt_bias": "model-00008-of-00009.safetensors",
372
+ "model.layers.4.linear_attn.in_proj_a.weight": "model-00008-of-00009.safetensors",
373
+ "model.layers.4.linear_attn.in_proj_b.weight": "model-00008-of-00009.safetensors",
374
+ "model.layers.4.linear_attn.in_proj_qkv.weight": "model-00008-of-00009.safetensors",
375
+ "model.layers.4.linear_attn.in_proj_z.weight": "model-00008-of-00009.safetensors",
376
+ "model.layers.4.linear_attn.norm.weight": "model-00008-of-00009.safetensors",
377
+ "model.layers.4.linear_attn.out_proj.weight": "model-00008-of-00009.safetensors",
378
+ "model.layers.4.post_attention_layernorm.weight": "model-00008-of-00009.safetensors",
379
+ "model.layers.5.input_layernorm.weight": "model-00008-of-00009.safetensors",
380
+ "model.layers.5.linear_attn.A_log": "model-00008-of-00009.safetensors",
381
+ "model.layers.5.linear_attn.conv1d.weight": "model-00008-of-00009.safetensors",
382
+ "model.layers.5.linear_attn.dt_bias": "model-00008-of-00009.safetensors",
383
+ "model.layers.5.linear_attn.in_proj_a.weight": "model-00008-of-00009.safetensors",
384
+ "model.layers.5.linear_attn.in_proj_b.weight": "model-00008-of-00009.safetensors",
385
+ "model.layers.5.linear_attn.in_proj_qkv.weight": "model-00008-of-00009.safetensors",
386
+ "model.layers.5.linear_attn.in_proj_z.weight": "model-00008-of-00009.safetensors",
387
+ "model.layers.5.linear_attn.norm.weight": "model-00008-of-00009.safetensors",
388
+ "model.layers.5.linear_attn.out_proj.weight": "model-00008-of-00009.safetensors",
389
+ "model.layers.5.post_attention_layernorm.weight": "model-00008-of-00009.safetensors",
390
+ "model.layers.6.input_layernorm.weight": "model-00008-of-00009.safetensors",
391
+ "model.layers.6.linear_attn.A_log": "model-00008-of-00009.safetensors",
392
+ "model.layers.6.linear_attn.conv1d.weight": "model-00008-of-00009.safetensors",
393
+ "model.layers.6.linear_attn.dt_bias": "model-00008-of-00009.safetensors",
394
+ "model.layers.6.linear_attn.in_proj_a.weight": "model-00008-of-00009.safetensors",
395
+ "model.layers.6.linear_attn.in_proj_b.weight": "model-00008-of-00009.safetensors",
396
+ "model.layers.6.linear_attn.in_proj_qkv.weight": "model-00008-of-00009.safetensors",
397
+ "model.layers.6.linear_attn.in_proj_z.weight": "model-00008-of-00009.safetensors",
398
+ "model.layers.6.linear_attn.norm.weight": "model-00008-of-00009.safetensors",
399
+ "model.layers.6.linear_attn.out_proj.weight": "model-00008-of-00009.safetensors",
400
+ "model.layers.6.post_attention_layernorm.weight": "model-00008-of-00009.safetensors",
401
+ "model.layers.7.input_layernorm.weight": "model-00008-of-00009.safetensors",
402
+ "model.layers.7.post_attention_layernorm.weight": "model-00008-of-00009.safetensors",
403
+ "model.layers.7.self_attn.k_norm.weight": "model-00008-of-00009.safetensors",
404
+ "model.layers.7.self_attn.k_proj.weight": "model-00008-of-00009.safetensors",
405
+ "model.layers.7.self_attn.o_proj.weight": "model-00008-of-00009.safetensors",
406
+ "model.layers.7.self_attn.q_norm.weight": "model-00008-of-00009.safetensors",
407
+ "model.layers.7.self_attn.q_proj.weight": "model-00009-of-00009.safetensors",
408
+ "model.layers.7.self_attn.v_proj.weight": "model-00009-of-00009.safetensors",
409
+ "model.layers.8.input_layernorm.weight": "model-00009-of-00009.safetensors",
410
+ "model.layers.8.linear_attn.A_log": "model-00009-of-00009.safetensors",
411
+ "model.layers.8.linear_attn.conv1d.weight": "model-00009-of-00009.safetensors",
412
+ "model.layers.8.linear_attn.dt_bias": "model-00009-of-00009.safetensors",
413
+ "model.layers.8.linear_attn.in_proj_a.weight": "model-00009-of-00009.safetensors",
414
+ "model.layers.8.linear_attn.in_proj_b.weight": "model-00009-of-00009.safetensors",
415
+ "model.layers.8.linear_attn.in_proj_qkv.weight": "model-00009-of-00009.safetensors",
416
+ "model.layers.8.linear_attn.in_proj_z.weight": "model-00009-of-00009.safetensors",
417
+ "model.layers.8.linear_attn.norm.weight": "model-00009-of-00009.safetensors",
418
+ "model.layers.8.linear_attn.out_proj.weight": "model-00009-of-00009.safetensors",
419
+ "model.layers.8.post_attention_layernorm.weight": "model-00009-of-00009.safetensors",
420
+ "model.layers.9.input_layernorm.weight": "model-00009-of-00009.safetensors",
421
+ "model.layers.9.linear_attn.A_log": "model-00009-of-00009.safetensors",
422
+ "model.layers.9.linear_attn.conv1d.weight": "model-00009-of-00009.safetensors",
423
+ "model.layers.9.linear_attn.dt_bias": "model-00009-of-00009.safetensors",
424
+ "model.layers.9.linear_attn.in_proj_a.weight": "model-00009-of-00009.safetensors",
425
+ "model.layers.9.linear_attn.in_proj_b.weight": "model-00009-of-00009.safetensors",
426
+ "model.layers.9.linear_attn.in_proj_qkv.weight": "model-00009-of-00009.safetensors",
427
+ "model.layers.9.linear_attn.in_proj_z.weight": "model-00009-of-00009.safetensors",
428
+ "model.layers.9.linear_attn.norm.weight": "model-00009-of-00009.safetensors",
429
+ "model.layers.9.linear_attn.out_proj.weight": "model-00009-of-00009.safetensors",
430
+ "model.layers.9.post_attention_layernorm.weight": "model-00009-of-00009.safetensors",
431
+ "model.norm.weight": "model-00009-of-00009.safetensors"
432
+ }
433
+ }
release-manifest.json CHANGED
@@ -1,30 +1,40 @@
1
  {
2
- "source_commit": "157e9b5f0e19e884255505e24efd9b0bfc18497d",
3
- "candidate": "jet-v5-panel02-r2-20260924",
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4
  "validation": {
5
- "onnx_golden_passed": true,
6
  "cases": 36,
7
- "answer_flips": 0,
8
- "reference_backend": "native MLX CUDA fused bf16"
9
- },
10
- "files": {
11
- "README.md": "62a746e114cc3365b2b1f00c03bda5bee234f30186a2529eb2e1e1f09262e015",
12
- "TRAINING_HISTORY.md": "c94f2d2570078049f66ac89ec420b7bef7fba6a614d3e8add54444dfde092cde",
13
- "calibration.json": "6d9ba9d874699bf1f48f0703a814075a175ccb460d65c2c4870a3e6fb37fdb2f",
14
- "chat_template.jinja": "87a2728cb8dc9fe424d624542f6060ec05a1d285ebbec578bb078900e33396b5",
15
- "config.json": "332d56de2e5cde28245ac8b1776639bf9f7ed55fc911dfd2399ae8872acee2a9",
16
- "export-provenance.json": "a3f2a53d03816fe3e57ebcbdf850b84f98b52c3a135ad5cd581d96276eacc0d2",
17
- "export-validation.txt": "154c0212c4d4f64500ec13ebdffd7f405180a0ab3be6d049127144b4bb162df0",
18
- "golden.json": "98e895994a3544548a09ad72f68e599af908628ac8093ecd2eed58a679b69319",
19
- "model.safetensors": "5fb52e23dbff62e4c9982420ba4b07375b582685c4c1d22d1754f260e16e0097",
20
- "model.safetensors.index.json": "90681e31419773af1b89d8597c1f4f5153f092fec6e55d09ac268e62462a008e",
21
- "onnx/model_q8.onnx": "7ee7a5bdda762f735c6aa9257d63f758afef546afbfc1a701ba698fc89ef67f0",
22
- "tokenizer.json": "be75606093db2094d7cd20f3c2f385c212750648bd6ea4fb2bf507a6a4c55506",
23
- "tokenizer_config.json": "d93ac1a2c7adb9ad022f354d822f1f0f57e32e62ef2989e902782d6ab896acfe"
24
  },
25
- "training_archive": {
26
- "revision": "ee7d33ecae2b8bee30891657dd57c92d34e0ce53",
27
- "tag": "training-archive-20260924",
28
- "removed_from_main": 187
29
- }
30
  }
 
1
  {
2
+ "version": "v6.0.0",
3
+ "name": "Jet",
4
+ "format": "complete merged BF16 Qwen3_5ForCausalLM",
5
+ "files": {
6
+ "LICENSE": "bbedc3fda3305820b977265f01b8619d87570a6739de3a5582c3464840f1e57a",
7
+ "README.md": "43bcdd39d003a210b5ee4d669ca772ad846b3bdf46f19c26e7ebf96077c77e76",
8
+ "calibration.json": "c7b13d6446dfa455bc18c11a9f877994728e670ddb4c3323f1bd16eb4cde2bc7",
9
+ "chat_template.jinja": "a4aee8afcf2e0711942cf848899be66016f8d14a889ff9ede07bca099c28f715",
10
+ "config.json": "63f47812d0f11118e4d252d2b3ad488707eb9287a11589f4fd382a1d31182724",
11
+ "evaluation.json": "c6a6dcc897dfd3d406db5ef88e6ec848f1138dc30a473c6ad94239c3a09acf0e",
12
+ "format.py": "f9b86dd757dbebc1fa48effbf48b7ba6861dcd6def5a025cfa937866eed02828",
13
+ "inference.py": "38443ddac02367f5857557ebae72aaf3e4d840f407573fd0dcb3ba037a5bc19d",
14
+ "jet.py": "a053495e98ac3c10358d041004b2a661bfb7b56ebc539196b919e46f10f0e454",
15
+ "merge-provenance.json": "9c168012766e8dd4e97f441fd44ec198ca22a09cea0009e2a677c66b5f29b753",
16
+ "merge-validation.json": "344a62368b294cafbc9b4e5b2da60e64f9aec8c21af7d0301c829d0b69c4dde5",
17
+ "model-00001-of-00009.safetensors": "758c65ea6c124bbe96b68a2d5475f7e4ec0ff9b6a4dbba87f295144ace55f07d",
18
+ "model-00002-of-00009.safetensors": "8e84de8d9a45219bbeb1a33392370979cce7702ceab4dea27b5f4b3b4e78deb0",
19
+ "model-00003-of-00009.safetensors": "d96476f63563f6db809675f551857e392102189c17eae2e2999bed0c4f967b22",
20
+ "model-00004-of-00009.safetensors": "bf5440f1558b2b9fc1e4ddec335cc77c04ac89621ce91a72ae3b3a542ad6eb25",
21
+ "model-00005-of-00009.safetensors": "52a8e3c8c06d2d16554e6146ffadcb0830367180d4ed2d4725084c0b4b257967",
22
+ "model-00006-of-00009.safetensors": "0d560b820ad7edc2faad717f6655b3f638e8779b40fda4e333d6457bcb9ed47c",
23
+ "model-00007-of-00009.safetensors": "fff39c3f2152571b72d377c6095daca3c796da187d94e88d18292c8709aa75d3",
24
+ "model-00008-of-00009.safetensors": "da8fa5e8e7bbcab3529e6f4014fdc3a42240a27c4b7fd123f3690abb35c96789",
25
+ "model-00009-of-00009.safetensors": "8d76d978760f6c15b9f5cb0c3b5eeada3513ff8a53104389cd895b5a5a092a94",
26
+ "model.safetensors.index.json": "583cb9f6b27293828c3e8c5055cc5a534846585063b057c5643592ecb8220ead",
27
+ "requirements.txt": "2888712d1e07f61a0748da102183fbff30c7de6f4152f239625d17c864bf9dde",
28
+ "runtime.py": "42ecb8f12ea72d2c050d533f9038c8a5fc48778a16fe5b5e3e9affb9cb161109",
29
+ "tokenizer.json": "06b9509352d2af50381ab2247e083b80d32d5c0aba91c272ca9ff729b6a0e523",
30
+ "tokenizer_config.json": "9cf04fffe3d8c3b85e439fb35c7acad0761ab51c422a8c4256d9f887c3a0be7d"
31
+ },
32
  "validation": {
 
33
  "cases": 36,
34
+ "selection": "First 12 cases per type, scanning local test then calibration; no outcome selection",
35
+ "argmax_flips": 1,
36
+ "max_probability_difference": 0.04372840585277227,
37
+ "base_download_required": false
 
 
 
 
 
 
 
 
 
 
 
 
 
38
  },
39
+ "official_decision_index": null
 
 
 
 
40
  }
requirements.txt ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ torch==2.11.0
2
+ transformers==5.17.0
3
+ accelerate==1.15.0
4
+ numpy==2.5.3
5
+ flash-linear-attention==0.5.2
runtime.py ADDED
@@ -0,0 +1,36 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """CUDA BF16 label readout for the merged Jet model."""
2
+ import torch
3
+ import torch.nn.functional as F
4
+ from transformers import AutoTokenizer, Qwen3_5ForCausalLM
5
+
6
+ def install_linear_attention():
7
+ """Use FLA's differentiable chunk kernel; leave convolution on native PyTorch."""
8
+ from fla.ops.gated_delta_rule import chunk_gated_delta_rule
9
+ from transformers.models.qwen3_5 import modeling_qwen3_5 as impl
10
+ def chunk(query, key, value, g, beta, chunk_size=64, initial_state=None,
11
+ output_final_state=False, use_qk_l2norm_in_kernel=False, **kwargs):
12
+ return chunk_gated_delta_rule(q=query,k=key,v=value,g=g,beta=beta,
13
+ initial_state=initial_state,output_final_state=output_final_state,
14
+ use_qk_l2norm_in_kernel=use_qk_l2norm_in_kernel)
15
+ impl.torch_chunk_gated_delta_rule = chunk
16
+
17
+
18
+ def load_model(path):
19
+ install_linear_attention()
20
+ tokenizer = AutoTokenizer.from_pretrained(path)
21
+ model, info = Qwen3_5ForCausalLM.from_pretrained(path, dtype=torch.bfloat16,
22
+ device_map={'': 'cuda'}, attn_implementation='sdpa', output_loading_info=True)
23
+ if info.get('missing_keys') or info.get('mismatched_keys') or info.get('unexpected_keys'):
24
+ raise RuntimeError(f'Incomplete model load: {info}')
25
+ model.config.use_cache = False
26
+ model.eval()
27
+ return model, tokenizer
28
+
29
+ def label_logits(model, example):
30
+ base=model.get_base_model() if hasattr(model,'get_base_model') else model
31
+ ids=torch.tensor([example['ids']],device='cuda',dtype=torch.long)
32
+ hidden=base.model(input_ids=ids,use_cache=False).last_hidden_state[:, -1, :]
33
+ labels=torch.tensor(example['labels'],device='cuda',dtype=torch.long)
34
+ # Only materialize the requested rows of the frozen vocabulary head.
35
+ return F.linear(hidden,base.lm_head.weight.index_select(0,labels))[0].float()
36
+
tokenizer.json CHANGED
@@ -1,3 +1,3 @@
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:be75606093db2094d7cd20f3c2f385c212750648bd6ea4fb2bf507a6a4c55506
3
- size 11422650
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:06b9509352d2af50381ab2247e083b80d32d5c0aba91c272ca9ff729b6a0e523
3
+ size 19989325
tokenizer_config.json CHANGED
@@ -1,16 +1,32 @@
1
  {
2
  "add_prefix_space": false,
 
 
 
3
  "backend": "tokenizers",
4
  "bos_token": null,
5
  "clean_up_tokenization_spaces": false,
6
  "eos_token": "<|im_end|>",
7
  "errors": "replace",
8
- "is_local": true,
 
9
  "local_files_only": false,
10
- "model_max_length": 131072,
 
 
 
 
 
 
 
 
 
11
  "pad_token": "<|endoftext|>",
 
12
  "split_special_tokens": false,
13
  "tokenizer_class": "Qwen2Tokenizer",
14
- "tool_parser_type": "json_tools",
15
- "unk_token": null
 
 
16
  }
 
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": false,
13
  "local_files_only": false,
14
+ "model_max_length": 262144,
15
+ "model_specific_special_tokens": {
16
+ "audio_bos_token": "<|audio_start|>",
17
+ "audio_eos_token": "<|audio_end|>",
18
+ "audio_token": "<|audio_pad|>",
19
+ "image_token": "<|image_pad|>",
20
+ "video_token": "<|video_pad|>",
21
+ "vision_bos_token": "<|vision_start|>",
22
+ "vision_eos_token": "<|vision_end|>"
23
+ },
24
  "pad_token": "<|endoftext|>",
25
+ "pretokenize_regex": "(?i:'s|'t|'re|'ve|'m|'ll|'d)|[^\\r\\n\\p{L}\\p{N}]?[\\p{L}\\p{M}]+|\\p{N}| ?[^\\s\\p{L}\\p{M}\\p{N}]+[\\r\\n]*|\\s*[\\r\\n]+|\\s+(?!\\S)|\\s+",
26
  "split_special_tokens": false,
27
  "tokenizer_class": "Qwen2Tokenizer",
28
+ "unk_token": null,
29
+ "video_token": "<|video_pad|>",
30
+ "vision_bos_token": "<|vision_start|>",
31
+ "vision_eos_token": "<|vision_end|>"
32
  }