Text Classification
MLX
Safetensors
English
qwen3_5
qwen3.5
decision
unofficial-port
experimental
4bit
4-bit precision
Instructions to use cowWhySo/jeeves-mlx with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- MLX
How to use cowWhySo/jeeves-mlx with MLX:
# Download the model from the Hub pip install huggingface_hub[hf_xet] hf download cowWhySo/jeeves-mlx --local-dir jeeves-mlx
- Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- LM Studio
- Atomic Chat
Publish Jeeves MLX 4bit (CPU diagnostics; not benchmarked)
Browse files- .gitattributes +1 -0
- BUILD.md +90 -0
- CONVERSION_COMPLETE.json +8 -0
- LICENSE +202 -0
- LICENSE_JEEVES_CODE +21 -0
- PACKAGE_MANIFEST.json +224 -0
- README.md +89 -0
- RELEASE.json +15 -0
- chat_template.jinja +154 -0
- config.json +79 -0
- dataformat.py +173 -0
- example_request.json +9 -0
- export.json +111 -0
- fixtures.json +338 -0
- head.pt +3 -0
- head.safetensors +3 -0
- jeeves_format.py +92 -0
- jeeves_support.py +177 -0
- model.safetensors +3 -0
- model.safetensors.index.json +935 -0
- provenance/bf16_weight_audit.json +5 -0
- provenance/conversion_run_lock.json +32 -0
- provenance/format_head_checks.json +14 -0
- provenance/jeeves-mlx-4bit.npz +3 -0
- provenance/jeeves-mlx-4bit_smoke.json +17 -0
- provenance/jeeves-mlx-bf16.npz +3 -0
- provenance/jeeves-mlx-bf16_smoke.json +17 -0
- provenance/original_package_README.md +33 -0
- provenance/preflight.json +14 -0
- provenance/requirements-cpu-lock.txt +41 -0
- provenance/source_PACKAGE_MANIFEST.json +154 -0
- provenance/source_config.json +61 -0
- provenance/source_lock.json +7 -0
- provenance/source_shards.json +27 -0
- provenance/torch_reference.json +18 -0
- provenance/torch_reference.npz +3 -0
- provenance/upstream_code.json +13 -0
- provenance/upstream_dataloader.py +268 -0
- provenance/upstream_head.py +20 -0
- provenance/upstream_model_card.md +106 -0
- requirements-mac.txt +6 -0
- run_jeeves.py +180 -0
- tokenizer.json +3 -0
- tokenizer_config.json +33 -0
- validation.json +67 -0
.gitattributes
CHANGED
|
@@ -33,3 +33,4 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
|
|
| 33 |
*.zip filter=lfs diff=lfs merge=lfs -text
|
| 34 |
*.zst filter=lfs diff=lfs merge=lfs -text
|
| 35 |
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
|
|
|
|
|
| 33 |
*.zip filter=lfs diff=lfs merge=lfs -text
|
| 34 |
*.zst filter=lfs diff=lfs merge=lfs -text
|
| 35 |
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
| 36 |
+
tokenizer.json filter=lfs diff=lfs merge=lfs -text
|
BUILD.md
ADDED
|
@@ -0,0 +1,90 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Build and publication record
|
| 2 |
+
|
| 3 |
+
## Conversion is not training
|
| 4 |
+
|
| 5 |
+
These already-converted `4bit` weights were read from the user's completed `jeeves_9b_cpu_v1_1` build. The publishing notebook does not train, merge adapters, reconvert, quantize, run inference, recalibrate, or change model tensors. It streams existing files from Drive.
|
| 6 |
+
|
| 7 |
+
The upstream release describes fused Qwen3.5-9B weights, a pointer head, and a fitted temperature. See the [original code](https://github.com/PostHog/jeeves) and [original model card](https://huggingface.co/PostHog/jeeves) for the upstream training recipe; no new training performance is asserted here.
|
| 8 |
+
|
| 9 |
+
## Pinned conversion inputs
|
| 10 |
+
|
| 11 |
+
```json
|
| 12 |
+
{
|
| 13 |
+
"request": {
|
| 14 |
+
"schema": "jeeves-mlx-cpu-v1",
|
| 15 |
+
"repo_id": "PostHog/jeeves",
|
| 16 |
+
"hf_revision": "8622b7d1652a9dcb8629486b84dce9e8d690c5cd",
|
| 17 |
+
"jeeves_code_ref": "HEAD",
|
| 18 |
+
"mlx_lm_code_ref": "refs/heads/main",
|
| 19 |
+
"mlx_requirement": "mlx[cpu]==0.32.3",
|
| 20 |
+
"quant_bits": [
|
| 21 |
+
4,
|
| 22 |
+
8
|
| 23 |
+
],
|
| 24 |
+
"q_group_size": 64,
|
| 25 |
+
"run_torch_reference": true,
|
| 26 |
+
"run_cpu_smoke": true,
|
| 27 |
+
"smoke_cases": 1,
|
| 28 |
+
"smoke_max_tokens": 256,
|
| 29 |
+
"prefill_chunk_size": 16,
|
| 30 |
+
"greedy_smoke_tokens": 0,
|
| 31 |
+
"min_ram_gib": 24,
|
| 32 |
+
"bf16_probability_atol": 0.02,
|
| 33 |
+
"bf16_min_cosine": 0.995,
|
| 34 |
+
"helper_sha256": {
|
| 35 |
+
"jeeves_support.py": "26ca899ee62b13ef3a93ff7075bf4fcfd097e1c1e15589b667c22be71205beb6",
|
| 36 |
+
"run_jeeves.py": "5e381f42611ee195f4579eb3d3433abf7c292aecb26e52b6ccd94ecd4e13c654",
|
| 37 |
+
"convert_worker.py": "538444544ae39fdbe5031b0a75dcff88615b33e1127d7eb42fefde325c36afd7"
|
| 38 |
+
}
|
| 39 |
+
},
|
| 40 |
+
"jeeves_code_sha": "f04ec5567301450dcaae0210dd54deeb4f647f87",
|
| 41 |
+
"mlx_lm_sha": "94cdcae13b266c337bcaca09b97b9c5a9c0e2cde",
|
| 42 |
+
"identity": "c4d0ea30e584dbf0d1e672c59c2e00036cb6a1a7025833ef49c01c63432b18fa"
|
| 43 |
+
}
|
| 44 |
+
```
|
| 45 |
+
|
| 46 |
+
This is the original conversion lock, not the publishing environment. The original Mac dependencies are in `requirements-mac.txt`. The CPU dependency lock is included in `provenance/requirements-cpu-lock.txt` when present in the original run. These pins identify the build; this document is not a substitute for a complete conversion implementation.
|
| 47 |
+
|
| 48 |
+
## Stored converted configuration
|
| 49 |
+
|
| 50 |
+
```json
|
| 51 |
+
{
|
| 52 |
+
"model_type": "qwen3_5",
|
| 53 |
+
"num_hidden_layers": 32,
|
| 54 |
+
"hidden_size": 4096,
|
| 55 |
+
"full_attention_interval": 4,
|
| 56 |
+
"rope_theta": 10000000,
|
| 57 |
+
"partial_rotary_factor": 0.25,
|
| 58 |
+
"rope_parameters": {
|
| 59 |
+
"type": "default",
|
| 60 |
+
"rope_theta": 10000000,
|
| 61 |
+
"partial_rotary_factor": 0.25
|
| 62 |
+
},
|
| 63 |
+
"quantization": {
|
| 64 |
+
"group_size": 64,
|
| 65 |
+
"bits": 4,
|
| 66 |
+
"mode": "affine"
|
| 67 |
+
},
|
| 68 |
+
"quantization_config": {
|
| 69 |
+
"group_size": 64,
|
| 70 |
+
"bits": 4,
|
| 71 |
+
"mode": "affine"
|
| 72 |
+
}
|
| 73 |
+
}
|
| 74 |
+
```
|
| 75 |
+
|
| 76 |
+
The retained `provenance/source_config.json`, source shard hashes, original encoder/head source, and audit records describe the conversion inputs. The published backbone uses MLX tensor layout and `model_type=qwen3_5`; the pointer head is separately stored in FP32. Original `head.pt` is retained for provenance and is never unpickled by the publishing notebook.
|
| 77 |
+
|
| 78 |
+
## What publication verifies
|
| 79 |
+
|
| 80 |
+
The publisher checks every original manifest entry using streaming full-file SHA-256; reads `validation.json`; checks required licenses/runner/tokenizer/head files; validates safetensors headers, offsets, and shard indexing without loading tensors; checks expected quantization metadata and cross-variant shared files; scans text/code files for common credential patterns; then constructs a new release manifest. A credential scan is a safeguard, not a general audit of private content.
|
| 81 |
+
|
| 82 |
+
Only files named in the verified package manifest and the explicitly generated release documents are eligible for upload. Caches, secrets, unrelated Drive files, raw run logs, and undeclared files are not uploaded. No model-weight copy is made on Drive or in a staging folder.
|
| 83 |
+
|
| 84 |
+
Uploads use explicit file paths and a parent-commit guard. Existing managed branch contents are compared by size plus LFS SHA-256 or regular Git-blob SHA-1. Unexpected files or an unrelated existing repository cause a stop, not an automatic deletion. Successful upload verification checks Hub file metadata at an immutable commit and downloads `validation.json` for byte comparison; it does not re-download all weights or execute them.
|
| 85 |
+
|
| 86 |
+
`provenance/original_package_README.md` and `provenance/source_PACKAGE_MANIFEST.json` preserve the originals. New `README.md`, `BUILD.md`, `RELEASE.json`, and `PACKAGE_MANIFEST.json` document the publication; `validation.json`, runtime code, weights, tokenizer, calibration, and licenses remain byte-identical to the conversion package. The root published manifest excludes itself by design.
|
| 87 |
+
|
| 88 |
+
## Remaining validation
|
| 89 |
+
|
| 90 |
+
Apple Metal execution, representative task accuracy, calibration after quantization, greedy reasoning, and realistic latency/memory benchmarks remain unmeasured. Packaging and remote checksum checks must not be reported as model-quality validation.
|
CONVERSION_COMPLETE.json
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"identity": "c4d0ea30e584dbf0d1e672c59c2e00036cb6a1a7025833ef49c01c63432b18fa",
|
| 3 |
+
"variant": "jeeves-mlx-4bit",
|
| 4 |
+
"tensor_count": 927,
|
| 5 |
+
"tensor_bytes": 5038040064,
|
| 6 |
+
"status": "weights_converted_and_structurally_checked",
|
| 7 |
+
"backbone_parity": "not_yet_assessed"
|
| 8 |
+
}
|
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.
|
LICENSE_JEEVES_CODE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
MIT License
|
| 2 |
+
|
| 3 |
+
Copyright (c) 2026 Nicholas P. Waltz
|
| 4 |
+
|
| 5 |
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
| 6 |
+
of this software and associated documentation files (the "Software"), to deal
|
| 7 |
+
in the Software without restriction, including without limitation the rights
|
| 8 |
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
| 9 |
+
copies of the Software, and to permit persons to whom the Software is
|
| 10 |
+
furnished to do so, subject to the following conditions:
|
| 11 |
+
|
| 12 |
+
The above copyright notice and this permission notice shall be included in all
|
| 13 |
+
copies or substantial portions of the Software.
|
| 14 |
+
|
| 15 |
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
| 16 |
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
| 17 |
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
| 18 |
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
| 19 |
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
| 20 |
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
| 21 |
+
SOFTWARE.
|
PACKAGE_MANIFEST.json
ADDED
|
@@ -0,0 +1,224 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"conversion_identity": "c4d0ea30e584dbf0d1e672c59c2e00036cb6a1a7025833ef49c01c63432b18fa",
|
| 3 |
+
"files": {
|
| 4 |
+
"BUILD.md": {
|
| 5 |
+
"bytes": 4914,
|
| 6 |
+
"git_blob_sha1": "9befdd51c6eab46dbaaa30e80cdfcd1a8bb73914",
|
| 7 |
+
"sha256": "54a936dac8c11112c82ef931a4115b3887b0e353e64038058a334508e908244e"
|
| 8 |
+
},
|
| 9 |
+
"CONVERSION_COMPLETE.json": {
|
| 10 |
+
"bytes": 269,
|
| 11 |
+
"git_blob_sha1": "3bbdb56b348f87fc20d006204624e8d559c402a3",
|
| 12 |
+
"sha256": "cb7ff21cfa818a070dc01cb79829ceca9e293e5c9dfc400ab8c8a81a4699b383"
|
| 13 |
+
},
|
| 14 |
+
"LICENSE": {
|
| 15 |
+
"bytes": 11544,
|
| 16 |
+
"git_blob_sha1": "f938136e3adacfd92be087f6e113b5d6d97f678f",
|
| 17 |
+
"sha256": "bbedc3fda3305820b977265f01b8619d87570a6739de3a5582c3464840f1e57a"
|
| 18 |
+
},
|
| 19 |
+
"LICENSE_JEEVES_CODE": {
|
| 20 |
+
"bytes": 1074,
|
| 21 |
+
"git_blob_sha1": "f86d38990a659f4df8800a78a48744e18908e7ca",
|
| 22 |
+
"sha256": "823f556c20700f9a2f5e520c7d4eb3089f083fb19cf618cdbe08c08982f41b8e"
|
| 23 |
+
},
|
| 24 |
+
"README.md": {
|
| 25 |
+
"bytes": 6654,
|
| 26 |
+
"git_blob_sha1": "94ae7402fb520e1c273858b59c834738871f1c5d",
|
| 27 |
+
"sha256": "afca0915c4c0f884953f333b3f7af88a6aa7f62a171b487cd5ddceb3fe6fab5c"
|
| 28 |
+
},
|
| 29 |
+
"RELEASE.json": {
|
| 30 |
+
"bytes": 647,
|
| 31 |
+
"git_blob_sha1": "ce36b81379680de18edc1be0b9f7081d4f1d21d2",
|
| 32 |
+
"sha256": "a024d878ea83db6b976c2896cfc5bcd860e7ddd70255ef7c2095af946c11f86f"
|
| 33 |
+
},
|
| 34 |
+
"chat_template.jinja": {
|
| 35 |
+
"bytes": 7756,
|
| 36 |
+
"git_blob_sha1": "a585dec894e63da457d9440ec6aa7caa16d20860",
|
| 37 |
+
"sha256": "a4aee8afcf2e0711942cf848899be66016f8d14a889ff9ede07bca099c28f715"
|
| 38 |
+
},
|
| 39 |
+
"config.json": {
|
| 40 |
+
"bytes": 2080,
|
| 41 |
+
"git_blob_sha1": "d43ddf5fab8169d39664c06156eae65e41d13af2",
|
| 42 |
+
"sha256": "6cc3a4bc9bd804159d7849476564026451ace6009b7fc51cdf14908aaacf333a"
|
| 43 |
+
},
|
| 44 |
+
"dataformat.py": {
|
| 45 |
+
"bytes": 6058,
|
| 46 |
+
"git_blob_sha1": "c950dadc457b051e03aa19eabd25aec299b93899",
|
| 47 |
+
"sha256": "1c421b0e2ba879f5799842b3a44350d1f1db117ead23c47c7b01a27e2139c664"
|
| 48 |
+
},
|
| 49 |
+
"example_request.json": {
|
| 50 |
+
"bytes": 179,
|
| 51 |
+
"git_blob_sha1": "7fcfe2a8fd726bb73afe68d98be985f4e7ba790a",
|
| 52 |
+
"sha256": "7cec13b2283352be787736c7bb47fb783b61814f9ed25fb9ac2742d521435145"
|
| 53 |
+
},
|
| 54 |
+
"export.json": {
|
| 55 |
+
"bytes": 2582,
|
| 56 |
+
"git_blob_sha1": "cd254ec10c3a8eff3bbe52d42f88e20564c56721",
|
| 57 |
+
"sha256": "608d8aa594bc9cc6cd37e691eb3b5ec0e661866be0ae38f21659f6d70531e8a1"
|
| 58 |
+
},
|
| 59 |
+
"fixtures.json": {
|
| 60 |
+
"bytes": 4863,
|
| 61 |
+
"git_blob_sha1": "d1afbc455f04bd8648a0c823ad0c7ff56e0c3c3c",
|
| 62 |
+
"sha256": "2887c941fd5a497ae51343a9e2382ea1d198ab5eb140f4e8c8fd37c54be4ebf0"
|
| 63 |
+
},
|
| 64 |
+
"head.pt": {
|
| 65 |
+
"bytes": 8392767,
|
| 66 |
+
"git_blob_sha1": "48bc4d58231ee305e7d3bd9b719ef47ff8ab328f",
|
| 67 |
+
"sha256": "2ab935dea9eecf263086d9ed6dfe97fd5558193663ecae102fd3c50ae6878d60"
|
| 68 |
+
},
|
| 69 |
+
"head.safetensors": {
|
| 70 |
+
"bytes": 8391016,
|
| 71 |
+
"git_blob_sha1": "837f2da3c17a936f5347529ef7c421c8ab08ef4d",
|
| 72 |
+
"sha256": "ceac931470abafbc62723a297291f2c3d96627679794433585e658981798343e"
|
| 73 |
+
},
|
| 74 |
+
"jeeves_format.py": {
|
| 75 |
+
"bytes": 4244,
|
| 76 |
+
"git_blob_sha1": "1904b0a300b93f944d463722a3864827b8a6e38c",
|
| 77 |
+
"sha256": "6bb9599483ce4328024bf2c8473959996b3c55a226ae2a31c739ec87b0f215ca"
|
| 78 |
+
},
|
| 79 |
+
"jeeves_support.py": {
|
| 80 |
+
"bytes": 7920,
|
| 81 |
+
"git_blob_sha1": "7ed1ca6a65b11ee078f4f202296480cbb481c29b",
|
| 82 |
+
"sha256": "26ca899ee62b13ef3a93ff7075bf4fcfd097e1c1e15589b667c22be71205beb6"
|
| 83 |
+
},
|
| 84 |
+
"model.safetensors": {
|
| 85 |
+
"bytes": 5038161163,
|
| 86 |
+
"git_blob_sha1": "416a53edc10b90b36a80b9bab618a59d19abba24",
|
| 87 |
+
"sha256": "a7f3c503106f38d7bff3a55cb16b82bb5085fd8247893ade8a1de6ed1750e1f1"
|
| 88 |
+
},
|
| 89 |
+
"model.safetensors.index.json": {
|
| 90 |
+
"bytes": 81194,
|
| 91 |
+
"git_blob_sha1": "a155f5eba81d28e47c41d1522c5fbaefed63f19d",
|
| 92 |
+
"sha256": "215f9abadc1cea4d465b01c036dffcac5a84c2fb2386777863eff6928b91ed0b"
|
| 93 |
+
},
|
| 94 |
+
"provenance/bf16_weight_audit.json": {
|
| 95 |
+
"bytes": 201,
|
| 96 |
+
"git_blob_sha1": "b181d091a68d1bd2407c6d3d18d36e4de27867e0",
|
| 97 |
+
"sha256": "a4668cfbcf61c2946e870e552776d876f8cfd1cd021b4bda5f30795bfa545ee4"
|
| 98 |
+
},
|
| 99 |
+
"provenance/conversion_run_lock.json": {
|
| 100 |
+
"bytes": 1113,
|
| 101 |
+
"git_blob_sha1": "23670a4c65c17b7240f4381af793d04f28b71186",
|
| 102 |
+
"sha256": "ee800d671e63a5f3008b91e633353ad27f25d3980a877a82575febd41349fd47"
|
| 103 |
+
},
|
| 104 |
+
"provenance/format_head_checks.json": {
|
| 105 |
+
"bytes": 481,
|
| 106 |
+
"git_blob_sha1": "34e60904788736db8e14dd4d173c078c5bb31ea6",
|
| 107 |
+
"sha256": "fb3c9913a7d9200186d9b4ec7e79701e1b9fb0e9513636e7b84db716584140ce"
|
| 108 |
+
},
|
| 109 |
+
"provenance/jeeves-mlx-4bit.npz": {
|
| 110 |
+
"bytes": 49972,
|
| 111 |
+
"git_blob_sha1": "fef4ffe75c32a3b85bd6551dac62eebf8d8ece85",
|
| 112 |
+
"sha256": "b23046076e0105c29e487312856067b9e4c0a4d53ced30a543b5543911551ba7"
|
| 113 |
+
},
|
| 114 |
+
"provenance/jeeves-mlx-4bit_smoke.json": {
|
| 115 |
+
"bytes": 467,
|
| 116 |
+
"git_blob_sha1": "565aec925f5924d6549c7d4cae5e87c41ee3be53",
|
| 117 |
+
"sha256": "4f76a693cf949f7cdd3eac7b573b8e15083e5a3f0b7614a06ec449a525c05baf"
|
| 118 |
+
},
|
| 119 |
+
"provenance/jeeves-mlx-bf16.npz": {
|
| 120 |
+
"bytes": 49972,
|
| 121 |
+
"git_blob_sha1": "de5830dda85c898a36c7c7b1d858f63307107d84",
|
| 122 |
+
"sha256": "20f08bc1b539c2b7321c666c73faba142141641db0c27757958a1f463e92f52c"
|
| 123 |
+
},
|
| 124 |
+
"provenance/jeeves-mlx-bf16_smoke.json": {
|
| 125 |
+
"bytes": 469,
|
| 126 |
+
"git_blob_sha1": "73d8c5abc70344b4f73fadfc59913abc1524388a",
|
| 127 |
+
"sha256": "09b6e75e09a1b51d571e0309e9de7f566b33a5aa86fa039a5669577717dade0d"
|
| 128 |
+
},
|
| 129 |
+
"provenance/original_package_README.md": {
|
| 130 |
+
"bytes": 2192,
|
| 131 |
+
"git_blob_sha1": "36d1319d9e35e6cac375ee2d4e4e5cee2563e285",
|
| 132 |
+
"sha256": "fc5140a87a684cb672186d46c739e8482174854632dbcb929985ffda6eced3a9"
|
| 133 |
+
},
|
| 134 |
+
"provenance/preflight.json": {
|
| 135 |
+
"bytes": 337,
|
| 136 |
+
"git_blob_sha1": "09ccfb8117071b61d962cb9e7f6e7e1643f69af9",
|
| 137 |
+
"sha256": "6cc3ab0b1b759f6751f68ca3867f9648573a69e9632840feb42cb2b60daf27c6"
|
| 138 |
+
},
|
| 139 |
+
"provenance/requirements-cpu-lock.txt": {
|
| 140 |
+
"bytes": 750,
|
| 141 |
+
"git_blob_sha1": "9bf3f6068366175d8f20e5d84aa1098067459f7d",
|
| 142 |
+
"sha256": "3001f76ad1dea715696448e5cc7bfbb52a44291e09fae27b65bcc3eaf3bfecb5"
|
| 143 |
+
},
|
| 144 |
+
"provenance/source_PACKAGE_MANIFEST.json": {
|
| 145 |
+
"bytes": 5445,
|
| 146 |
+
"git_blob_sha1": "101d33c375185a8fedc7257373c6795ba37da2af",
|
| 147 |
+
"sha256": "f1559f8e86c02d9544f9bbded27d8df5425ae8fc700a32271038e1495ef69279"
|
| 148 |
+
},
|
| 149 |
+
"provenance/source_config.json": {
|
| 150 |
+
"bytes": 1471,
|
| 151 |
+
"git_blob_sha1": "6902ebcb645647c0f9bc61274442c665e75e0880",
|
| 152 |
+
"sha256": "b0ca5d0cb2056e4c1a4eb9a0616c114773cbd8b7428c1927259b28b3938b4191"
|
| 153 |
+
},
|
| 154 |
+
"provenance/source_lock.json": {
|
| 155 |
+
"bytes": 302,
|
| 156 |
+
"git_blob_sha1": "3dc183e04a66d8338c427d2f63c060b06757fd2c",
|
| 157 |
+
"sha256": "d96f01e2558461e3c3daa874755a8212af64591840f6e6c8415f73ad8328e446"
|
| 158 |
+
},
|
| 159 |
+
"provenance/source_shards.json": {
|
| 160 |
+
"bytes": 913,
|
| 161 |
+
"git_blob_sha1": "2fbeaff8dd643a41bd1b828f747288e5b64a5ba9",
|
| 162 |
+
"sha256": "8f7b5da3ef9b11a19ff1976b382fc5908989beab726c68ad8ef70b6db7c57f8e"
|
| 163 |
+
},
|
| 164 |
+
"provenance/torch_reference.json": {
|
| 165 |
+
"bytes": 504,
|
| 166 |
+
"git_blob_sha1": "9842d7ba5524ff558c3d61a081f4e818e122be80",
|
| 167 |
+
"sha256": "1ff8eed755e0c8d4febb490a8be902c4b21a33802e428ff23047a31109d41c8c"
|
| 168 |
+
},
|
| 169 |
+
"provenance/torch_reference.npz": {
|
| 170 |
+
"bytes": 49972,
|
| 171 |
+
"git_blob_sha1": "1ec661cbef5fc938a76228bf1f6bd2450e9aac23",
|
| 172 |
+
"sha256": "852fadb6c779fbbb45073590aa5f08f6385f903dad22c8a6ab27d6613de5ebba"
|
| 173 |
+
},
|
| 174 |
+
"provenance/upstream_code.json": {
|
| 175 |
+
"bytes": 799,
|
| 176 |
+
"git_blob_sha1": "73dd0d880b5cab190c16e1ad5bb50f2761357ab6",
|
| 177 |
+
"sha256": "d50143f13dac140feb845dfef53380e370371f6c95412bee6b212d5387bb7987"
|
| 178 |
+
},
|
| 179 |
+
"provenance/upstream_dataloader.py": {
|
| 180 |
+
"bytes": 11424,
|
| 181 |
+
"git_blob_sha1": "1fcb0ead744abd3cddf413f8a636497a4908549e",
|
| 182 |
+
"sha256": "7d8a43ddcac427125bbe6b8aca9cfb3306aa1dbef6d7509bfed1a65a2d93b4d1"
|
| 183 |
+
},
|
| 184 |
+
"provenance/upstream_head.py": {
|
| 185 |
+
"bytes": 714,
|
| 186 |
+
"git_blob_sha1": "93dbcbf2adf466764da93fd63456d272f4ba8b70",
|
| 187 |
+
"sha256": "4c4f503c0ecef50d58b7a789f79f9336324c1548d9832e9ce75a675fd2ba302f"
|
| 188 |
+
},
|
| 189 |
+
"provenance/upstream_model_card.md": {
|
| 190 |
+
"bytes": 5234,
|
| 191 |
+
"git_blob_sha1": "406793bf53d745ecf44940d7ba21c8b340ae3e0d",
|
| 192 |
+
"sha256": "8f18acc423edf4c7db50d877f8f826ff6e019e6395092b800b6673db3e00cae2"
|
| 193 |
+
},
|
| 194 |
+
"requirements-mac.txt": {
|
| 195 |
+
"bytes": 184,
|
| 196 |
+
"git_blob_sha1": "0ea05364a02bff105cc85d094481bf18e13f9281",
|
| 197 |
+
"sha256": "01b04c2acde4835455b18b65e8e3567c1a8d607f23692afb01f4a842487dd147"
|
| 198 |
+
},
|
| 199 |
+
"run_jeeves.py": {
|
| 200 |
+
"bytes": 9594,
|
| 201 |
+
"git_blob_sha1": "9c6b9e9e062968776758a645ef6c5b67c0c85df8",
|
| 202 |
+
"sha256": "5e381f42611ee195f4579eb3d3433abf7c292aecb26e52b6ccd94ecd4e13c654"
|
| 203 |
+
},
|
| 204 |
+
"tokenizer.json": {
|
| 205 |
+
"bytes": 19989325,
|
| 206 |
+
"git_blob_sha1": "d5967dbafffa6c5b250a02b35723f53e702d0d62",
|
| 207 |
+
"sha256": "06b9509352d2af50381ab2247e083b80d32d5c0aba91c272ca9ff729b6a0e523"
|
| 208 |
+
},
|
| 209 |
+
"tokenizer_config.json": {
|
| 210 |
+
"bytes": 1161,
|
| 211 |
+
"git_blob_sha1": "8d610519919e32dd25f499e61f4bd38d7a0ad9b2",
|
| 212 |
+
"sha256": "95c557768e6b88a7128befc7bfd3c7de50e5d51af9b8b33a9f4dee0e04f99679"
|
| 213 |
+
},
|
| 214 |
+
"validation.json": {
|
| 215 |
+
"bytes": 2250,
|
| 216 |
+
"git_blob_sha1": "cd87a7cb8c9203e61b7b816d3ec96f5e2a76c4b1",
|
| 217 |
+
"sha256": "36d3a8cf620c7db74476f8f4f6d0c8ab77b225bb0d6b5c8859eb0d5bf57f5061"
|
| 218 |
+
}
|
| 219 |
+
},
|
| 220 |
+
"repo_id": "cowWhySo/jeeves-mlx",
|
| 221 |
+
"schema": "cowwhyso-jeeves-mlx-publisher/v1",
|
| 222 |
+
"self_excluded": "PACKAGE_MANIFEST.json",
|
| 223 |
+
"variant": "4bit"
|
| 224 |
+
}
|
README.md
ADDED
|
@@ -0,0 +1,89 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
license: apache-2.0
|
| 3 |
+
language:
|
| 4 |
+
- en
|
| 5 |
+
base_model: PostHog/jeeves
|
| 6 |
+
library_name: mlx
|
| 7 |
+
pipeline_tag: text-classification
|
| 8 |
+
tags:
|
| 9 |
+
- mlx
|
| 10 |
+
- qwen3.5
|
| 11 |
+
- decision
|
| 12 |
+
- unofficial-port
|
| 13 |
+
- experimental
|
| 14 |
+
- 4bit
|
| 15 |
+
---
|
| 16 |
+
|
| 17 |
+
# Jeeves-9B MLX — 4bit
|
| 18 |
+
|
| 19 |
+
Unofficial CPU-converted MLX packaging of **[PostHog/jeeves](https://huggingface.co/PostHog/jeeves)**, published by **[cowWhySo](https://huggingface.co/cowWhySo)**. This is not a PostHog or Apple release, a newly trained model, or a benchmark-certified port.
|
| 20 |
+
|
| 21 |
+
**Original project: [PostHog/jeeves on GitHub](https://github.com/PostHog/jeeves)**
|
| 22 |
+
**Original model: [PostHog/jeeves on Hugging Face](https://huggingface.co/PostHog/jeeves)**
|
| 23 |
+
|
| 24 |
+
> **Validation: `converted_and_small_cpu_diagnostics_passed_not_benchmarked`.** Read [validation.json](validation.json) before relying on the package. Apple Metal execution, task accuracy, post-quantization calibration, and representative latency remain unmeasured. Upstream benchmark scores and CUDA speed claims do not transfer to this conversion.
|
| 25 |
+
|
| 26 |
+
## Available packages
|
| 27 |
+
|
| 28 |
+
One repository; one complete package per branch. `main` contains **4-bit**, not BF16. Other variants are branches, not subfolders. Downloading one revision does not download the others.
|
| 29 |
+
|
| 30 |
+
| Variant | Revision | Original package size on Drive |
|
| 31 |
+
| --- | --- | ---: |
|
| 32 |
+
| 4bit | [`main`](https://huggingface.co/cowWhySo/jeeves-mlx/tree/main) | 4.73 GiB |
|
| 33 |
+
| 8bit | [`8bit`](https://huggingface.co/cowWhySo/jeeves-mlx/tree/8bit) | 8.90 GiB |
|
| 34 |
+
| bf16 | [`bf16`](https://huggingface.co/cowWhySo/jeeves-mlx/tree/bf16) | 16.71 GiB |
|
| 35 |
+
|
| 36 |
+
Sizes are actual original package bytes divided by 2^30 (GiB), including auxiliary files. Publishing adds small documentation/manifest files. These are **disk sizes**, not measured peak RAM or unified-memory requirements. This README describes the `main` revision.
|
| 37 |
+
|
| 38 |
+
## What is preserved
|
| 39 |
+
|
| 40 |
+
The Qwen3.5-9B backbone uses **4-bit MLX affine quantization, group size 64**. The original pointer head is retained as `head.pt` and exported without changing its FP32 values as `head.safetensors`. The released fitted temperature is **1.85892808437347**, retained in `export.json`; it has **not** been refitted for quantization. Exact-format helpers, the tokenizer, original licenses, source records, and diagnostic fixtures accompany the weights.
|
| 41 |
+
|
| 42 |
+
Jeeves uses a custom decision head and prompt/readout format, not an ordinary text-generation pipeline. Use the included `run_jeeves.py` for decisions; `mlx_lm.generate` alone does not implement Jeeves scoring. See [BUILD.md](BUILD.md) for build details and [provenance/original_package_README.md](provenance/original_package_README.md) for the original conversion notes.
|
| 43 |
+
|
| 44 |
+
## Download and try on Apple Silicon
|
| 45 |
+
|
| 46 |
+
These are **instructions for an unmeasured Metal path**, not a claim that this release has been tested on a Mac. Review the included Python source before running it. Each variant should have its own local directory; do not overlay variants into one directory.
|
| 47 |
+
|
| 48 |
+
```bash
|
| 49 |
+
python3 -m venv .venv
|
| 50 |
+
source .venv/bin/activate
|
| 51 |
+
python -m pip install "huggingface_hub==1.33.0"
|
| 52 |
+
hf download cowWhySo/jeeves-mlx --revision main --local-dir jeeves-mlx-4bit
|
| 53 |
+
cd jeeves-mlx-4bit
|
| 54 |
+
python -m pip install -r requirements-mac.txt
|
| 55 |
+
python run_jeeves.py --model . --request example_request.json --device gpu --think-tokens 0
|
| 56 |
+
```
|
| 57 |
+
|
| 58 |
+
To select a different variant, replace the revision and directory with `main` / `jeeves-mlx-4bit`, `8bit` / `jeeves-mlx-8bit`, or `bf16` / `jeeves-mlx-bf16`. Pin a release commit SHA instead of a branch for reproducible downstream experiments.
|
| 59 |
+
|
| 60 |
+
The runner accepts `state` and a `questions` mapping with `noul`, `choice`, or `score` types. It returns option probabilities under its own `results` schema; it is **not wire-compatible** with the upstream `/v1/systemone` HTTP service.
|
| 61 |
+
|
| 62 |
+
An optional, **unvalidated greedy-thinking path** exists:
|
| 63 |
+
|
| 64 |
+
```bash
|
| 65 |
+
python run_jeeves.py --model . --request example_request.json --device gpu --think-tokens 128
|
| 66 |
+
```
|
| 67 |
+
|
| 68 |
+
The reference runner processes questions independently, uses a separate cache per question, and re-prefills the full sequence for decision readout after optional reasoning. It does not port the speculative diffusion drafters, CUDA graphs, FP8 serving, parallel-question engine, or adaptive no-thinking threshold.
|
| 69 |
+
|
| 70 |
+
## Evidence and limits
|
| 71 |
+
|
| 72 |
+
The stored format/head checks passed for 4 format cases. The synthetic-hidden-state pointer-head comparison reported maximum probability error 0; it is **not** a backbone comparison. The stored no-thinking CPU smoke test contains **1 case(s)**. The BF16 backbone comparison is explicitly a small-fixture diagnostic with heuristic tolerances, not general equivalence.
|
| 73 |
+
|
| 74 |
+
On the recorded 1-case diagnostic, the maximum option-probability difference from MLX BF16 was 0.016297996. This is not an accuracy or calibration estimate.
|
| 75 |
+
|
| 76 |
+
No task accuracy, calibration benchmark, Metal speed, quantized quality ranking, or validated reasoning performance is claimed. CPU smoke elapsed times in the evidence are diagnostics, not representative serving benchmarks. Retaining the original temperature is not evidence of calibration on a different numerical path.
|
| 77 |
+
|
| 78 |
+
## Build provenance
|
| 79 |
+
|
| 80 |
+
- Model source: [`PostHog/jeeves@8622b7d1652a9dcb8629486b84dce9e8d690c5cd`](https://huggingface.co/PostHog/jeeves/tree/8622b7d1652a9dcb8629486b84dce9e8d690c5cd).
|
| 81 |
+
- Jeeves code: [`f04ec5567301450dcaae0210dd54deeb4f647f87`](https://github.com/PostHog/jeeves/tree/f04ec5567301450dcaae0210dd54deeb4f647f87).
|
| 82 |
+
- MLX-LM code: [`94cdcae13b266c337bcaca09b97b9c5a9c0e2cde`](https://github.com/ml-explore/mlx-lm/tree/94cdcae13b266c337bcaca09b97b9c5a9c0e2cde).
|
| 83 |
+
- Conversion MLX requirement: `mlx[cpu]==0.32.3`; original build identity: `c4d0ea30e584dbf0d1e672c59c2e00036cb6a1a7025833ef49c01c63432b18fa`.
|
| 84 |
+
|
| 85 |
+
[PACKAGE_MANIFEST.json](PACKAGE_MANIFEST.json) hashes the published payload except itself. [provenance/source_PACKAGE_MANIFEST.json](provenance/source_PACKAGE_MANIFEST.json) is the unmodified original manifest; its paths describe the original pre-publication package, not the newly documented payload. [RELEASE.json](RELEASE.json) distinguishes conversion evidence from packaging checks. Original `validation.json` is unchanged.
|
| 86 |
+
|
| 87 |
+
## License and attribution
|
| 88 |
+
|
| 89 |
+
Model weights follow the original **Apache-2.0** license retained in [LICENSE](LICENSE). Upstream Jeeves code is **MIT** licensed; its notice is retained in [LICENSE_JEEVES_CODE](LICENSE_JEEVES_CODE). Respect any additional notices in the included files. Credits for the original model, training, calibration, and serving research belong to PostHog and the upstream authors; this repository provides an unofficial MLX conversion/packaging.
|
RELEASE.json
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"branch": "main",
|
| 3 |
+
"conversion_identity": "c4d0ea30e584dbf0d1e672c59c2e00036cb6a1a7025833ef49c01c63432b18fa",
|
| 4 |
+
"inference_run_by_publisher": false,
|
| 5 |
+
"publisher_version": "1.0.0",
|
| 6 |
+
"repo_id": "cowWhySo/jeeves-mlx",
|
| 7 |
+
"schema": "cowwhyso-jeeves-mlx-publisher/v1",
|
| 8 |
+
"scope": "Package integrity and publication only; not model-quality validation",
|
| 9 |
+
"source_package_bytes": 5075258092,
|
| 10 |
+
"source_repo": "PostHog/jeeves",
|
| 11 |
+
"source_revision": "8622b7d1652a9dcb8629486b84dce9e8d690c5cd",
|
| 12 |
+
"source_validation_status": "converted_and_small_cpu_diagnostics_passed_not_benchmarked",
|
| 13 |
+
"variant": "4bit",
|
| 14 |
+
"weights_modified_by_publisher": false
|
| 15 |
+
}
|
chat_template.jinja
ADDED
|
@@ -0,0 +1,154 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{%- set image_count = namespace(value=0) %}
|
| 2 |
+
{%- set video_count = namespace(value=0) %}
|
| 3 |
+
{%- macro render_content(content, do_vision_count, is_system_content=false) %}
|
| 4 |
+
{%- if content is string %}
|
| 5 |
+
{{- content }}
|
| 6 |
+
{%- elif content is iterable and content is not mapping %}
|
| 7 |
+
{%- for item in content %}
|
| 8 |
+
{%- if 'image' in item or 'image_url' in item or item.type == 'image' %}
|
| 9 |
+
{%- if is_system_content %}
|
| 10 |
+
{{- raise_exception('System message cannot contain images.') }}
|
| 11 |
+
{%- endif %}
|
| 12 |
+
{%- if do_vision_count %}
|
| 13 |
+
{%- set image_count.value = image_count.value + 1 %}
|
| 14 |
+
{%- endif %}
|
| 15 |
+
{%- if add_vision_id %}
|
| 16 |
+
{{- 'Picture ' ~ image_count.value ~ ': ' }}
|
| 17 |
+
{%- endif %}
|
| 18 |
+
{{- '<|vision_start|><|image_pad|><|vision_end|>' }}
|
| 19 |
+
{%- elif 'video' in item or item.type == 'video' %}
|
| 20 |
+
{%- if is_system_content %}
|
| 21 |
+
{{- raise_exception('System message cannot contain videos.') }}
|
| 22 |
+
{%- endif %}
|
| 23 |
+
{%- if do_vision_count %}
|
| 24 |
+
{%- set video_count.value = video_count.value + 1 %}
|
| 25 |
+
{%- endif %}
|
| 26 |
+
{%- if add_vision_id %}
|
| 27 |
+
{{- 'Video ' ~ video_count.value ~ ': ' }}
|
| 28 |
+
{%- endif %}
|
| 29 |
+
{{- '<|vision_start|><|video_pad|><|vision_end|>' }}
|
| 30 |
+
{%- elif 'text' in item %}
|
| 31 |
+
{{- item.text }}
|
| 32 |
+
{%- else %}
|
| 33 |
+
{{- raise_exception('Unexpected item type in content.') }}
|
| 34 |
+
{%- endif %}
|
| 35 |
+
{%- endfor %}
|
| 36 |
+
{%- elif content is none or content is undefined %}
|
| 37 |
+
{{- '' }}
|
| 38 |
+
{%- else %}
|
| 39 |
+
{{- raise_exception('Unexpected content type.') }}
|
| 40 |
+
{%- endif %}
|
| 41 |
+
{%- endmacro %}
|
| 42 |
+
{%- if not messages %}
|
| 43 |
+
{{- raise_exception('No messages provided.') }}
|
| 44 |
+
{%- endif %}
|
| 45 |
+
{%- if tools and tools is iterable and tools is not mapping %}
|
| 46 |
+
{{- '<|im_start|>system\n' }}
|
| 47 |
+
{{- "# Tools\n\nYou have access to the following functions:\n\n<tools>" }}
|
| 48 |
+
{%- for tool in tools %}
|
| 49 |
+
{{- "\n" }}
|
| 50 |
+
{{- tool | tojson }}
|
| 51 |
+
{%- endfor %}
|
| 52 |
+
{{- "\n</tools>" }}
|
| 53 |
+
{{- '\n\nIf you choose to call a function ONLY reply in the following format with NO suffix:\n\n<tool_call>\n<function=example_function_name>\n<parameter=example_parameter_1>\nvalue_1\n</parameter>\n<parameter=example_parameter_2>\nThis is the value for the second parameter\nthat can span\nmultiple lines\n</parameter>\n</function>\n</tool_call>\n\n<IMPORTANT>\nReminder:\n- Function calls MUST follow the specified format: an inner <function=...></function> block must be nested within <tool_call></tool_call> XML tags\n- Required parameters MUST be specified\n- You may provide optional reasoning for your function call in natural language BEFORE the function call, but NOT after\n- If there is no function call available, answer the question like normal with your current knowledge and do not tell the user about function calls\n</IMPORTANT>' }}
|
| 54 |
+
{%- if messages[0].role == 'system' %}
|
| 55 |
+
{%- set content = render_content(messages[0].content, false, true)|trim %}
|
| 56 |
+
{%- if content %}
|
| 57 |
+
{{- '\n\n' + content }}
|
| 58 |
+
{%- endif %}
|
| 59 |
+
{%- endif %}
|
| 60 |
+
{{- '<|im_end|>\n' }}
|
| 61 |
+
{%- else %}
|
| 62 |
+
{%- if messages[0].role == 'system' %}
|
| 63 |
+
{%- set content = render_content(messages[0].content, false, true)|trim %}
|
| 64 |
+
{{- '<|im_start|>system\n' + content + '<|im_end|>\n' }}
|
| 65 |
+
{%- endif %}
|
| 66 |
+
{%- endif %}
|
| 67 |
+
{%- set ns = namespace(multi_step_tool=true, last_query_index=messages|length - 1) %}
|
| 68 |
+
{%- for message in messages[::-1] %}
|
| 69 |
+
{%- set index = (messages|length - 1) - loop.index0 %}
|
| 70 |
+
{%- if ns.multi_step_tool and message.role == "user" %}
|
| 71 |
+
{%- set content = render_content(message.content, false)|trim %}
|
| 72 |
+
{%- if not(content.startswith('<tool_response>') and content.endswith('</tool_response>')) %}
|
| 73 |
+
{%- set ns.multi_step_tool = false %}
|
| 74 |
+
{%- set ns.last_query_index = index %}
|
| 75 |
+
{%- endif %}
|
| 76 |
+
{%- endif %}
|
| 77 |
+
{%- endfor %}
|
| 78 |
+
{%- if ns.multi_step_tool %}
|
| 79 |
+
{{- raise_exception('No user query found in messages.') }}
|
| 80 |
+
{%- endif %}
|
| 81 |
+
{%- for message in messages %}
|
| 82 |
+
{%- set content = render_content(message.content, true)|trim %}
|
| 83 |
+
{%- if message.role == "system" %}
|
| 84 |
+
{%- if not loop.first %}
|
| 85 |
+
{{- raise_exception('System message must be at the beginning.') }}
|
| 86 |
+
{%- endif %}
|
| 87 |
+
{%- elif message.role == "user" %}
|
| 88 |
+
{{- '<|im_start|>' + message.role + '\n' + content + '<|im_end|>' + '\n' }}
|
| 89 |
+
{%- elif message.role == "assistant" %}
|
| 90 |
+
{%- set reasoning_content = '' %}
|
| 91 |
+
{%- if message.reasoning_content is string %}
|
| 92 |
+
{%- set reasoning_content = message.reasoning_content %}
|
| 93 |
+
{%- else %}
|
| 94 |
+
{%- if '</think>' in content %}
|
| 95 |
+
{%- set reasoning_content = content.split('</think>')[0].rstrip('\n').split('<think>')[-1].lstrip('\n') %}
|
| 96 |
+
{%- set content = content.split('</think>')[-1].lstrip('\n') %}
|
| 97 |
+
{%- endif %}
|
| 98 |
+
{%- endif %}
|
| 99 |
+
{%- set reasoning_content = reasoning_content|trim %}
|
| 100 |
+
{%- if loop.index0 > ns.last_query_index %}
|
| 101 |
+
{{- '<|im_start|>' + message.role + '\n<think>\n' + reasoning_content + '\n</think>\n\n' + content }}
|
| 102 |
+
{%- else %}
|
| 103 |
+
{{- '<|im_start|>' + message.role + '\n' + content }}
|
| 104 |
+
{%- endif %}
|
| 105 |
+
{%- if message.tool_calls and message.tool_calls is iterable and message.tool_calls is not mapping %}
|
| 106 |
+
{%- for tool_call in message.tool_calls %}
|
| 107 |
+
{%- if tool_call.function is defined %}
|
| 108 |
+
{%- set tool_call = tool_call.function %}
|
| 109 |
+
{%- endif %}
|
| 110 |
+
{%- if loop.first %}
|
| 111 |
+
{%- if content|trim %}
|
| 112 |
+
{{- '\n\n<tool_call>\n<function=' + tool_call.name + '>\n' }}
|
| 113 |
+
{%- else %}
|
| 114 |
+
{{- '<tool_call>\n<function=' + tool_call.name + '>\n' }}
|
| 115 |
+
{%- endif %}
|
| 116 |
+
{%- else %}
|
| 117 |
+
{{- '\n<tool_call>\n<function=' + tool_call.name + '>\n' }}
|
| 118 |
+
{%- endif %}
|
| 119 |
+
{%- if tool_call.arguments is defined %}
|
| 120 |
+
{%- for args_name, args_value in tool_call.arguments|items %}
|
| 121 |
+
{{- '<parameter=' + args_name + '>\n' }}
|
| 122 |
+
{%- set args_value = args_value | tojson | safe if args_value is mapping or (args_value is sequence and args_value is not string) else args_value | string %}
|
| 123 |
+
{{- args_value }}
|
| 124 |
+
{{- '\n</parameter>\n' }}
|
| 125 |
+
{%- endfor %}
|
| 126 |
+
{%- endif %}
|
| 127 |
+
{{- '</function>\n</tool_call>' }}
|
| 128 |
+
{%- endfor %}
|
| 129 |
+
{%- endif %}
|
| 130 |
+
{{- '<|im_end|>\n' }}
|
| 131 |
+
{%- elif message.role == "tool" %}
|
| 132 |
+
{%- if loop.previtem and loop.previtem.role != "tool" %}
|
| 133 |
+
{{- '<|im_start|>user' }}
|
| 134 |
+
{%- endif %}
|
| 135 |
+
{{- '\n<tool_response>\n' }}
|
| 136 |
+
{{- content }}
|
| 137 |
+
{{- '\n</tool_response>' }}
|
| 138 |
+
{%- if not loop.last and loop.nextitem.role != "tool" %}
|
| 139 |
+
{{- '<|im_end|>\n' }}
|
| 140 |
+
{%- elif loop.last %}
|
| 141 |
+
{{- '<|im_end|>\n' }}
|
| 142 |
+
{%- endif %}
|
| 143 |
+
{%- else %}
|
| 144 |
+
{{- raise_exception('Unexpected message role.') }}
|
| 145 |
+
{%- endif %}
|
| 146 |
+
{%- endfor %}
|
| 147 |
+
{%- if add_generation_prompt %}
|
| 148 |
+
{{- '<|im_start|>assistant\n' }}
|
| 149 |
+
{%- if enable_thinking is defined and enable_thinking is false %}
|
| 150 |
+
{{- '<think>\n\n</think>\n\n' }}
|
| 151 |
+
{%- else %}
|
| 152 |
+
{{- '<think>\n' }}
|
| 153 |
+
{%- endif %}
|
| 154 |
+
{%- endif %}
|
config.json
ADDED
|
@@ -0,0 +1,79 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"attention_bias": false,
|
| 3 |
+
"attention_dropout": 0.0,
|
| 4 |
+
"bos_token_id": null,
|
| 5 |
+
"dtype": "bfloat16",
|
| 6 |
+
"eos_token_id": 248044,
|
| 7 |
+
"full_attention_interval": 4,
|
| 8 |
+
"head_dim": 256,
|
| 9 |
+
"hidden_act": "silu",
|
| 10 |
+
"hidden_size": 4096,
|
| 11 |
+
"initializer_range": 0.02,
|
| 12 |
+
"intermediate_size": 12288,
|
| 13 |
+
"layer_types": [
|
| 14 |
+
"linear_attention",
|
| 15 |
+
"linear_attention",
|
| 16 |
+
"linear_attention",
|
| 17 |
+
"full_attention",
|
| 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 |
+
],
|
| 47 |
+
"linear_conv_kernel_dim": 4,
|
| 48 |
+
"linear_key_head_dim": 128,
|
| 49 |
+
"linear_num_key_heads": 16,
|
| 50 |
+
"linear_num_value_heads": 32,
|
| 51 |
+
"linear_value_head_dim": 128,
|
| 52 |
+
"max_position_embeddings": 262144,
|
| 53 |
+
"model_type": "qwen3_5",
|
| 54 |
+
"num_attention_heads": 16,
|
| 55 |
+
"num_hidden_layers": 32,
|
| 56 |
+
"num_key_value_heads": 4,
|
| 57 |
+
"pad_token_id": null,
|
| 58 |
+
"partial_rotary_factor": 0.25,
|
| 59 |
+
"quantization": {
|
| 60 |
+
"group_size": 64,
|
| 61 |
+
"bits": 4,
|
| 62 |
+
"mode": "affine"
|
| 63 |
+
},
|
| 64 |
+
"quantization_config": {
|
| 65 |
+
"group_size": 64,
|
| 66 |
+
"bits": 4,
|
| 67 |
+
"mode": "affine"
|
| 68 |
+
},
|
| 69 |
+
"rms_norm_eps": 1e-06,
|
| 70 |
+
"rope_parameters": {
|
| 71 |
+
"type": "default",
|
| 72 |
+
"rope_theta": 10000000,
|
| 73 |
+
"partial_rotary_factor": 0.25
|
| 74 |
+
},
|
| 75 |
+
"rope_theta": 10000000,
|
| 76 |
+
"tie_word_embeddings": false,
|
| 77 |
+
"torch_dtype": "bfloat16",
|
| 78 |
+
"vocab_size": 248320
|
| 79 |
+
}
|
dataformat.py
ADDED
|
@@ -0,0 +1,173 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from __future__ import annotations
|
| 2 |
+
|
| 3 |
+
import hashlib
|
| 4 |
+
import json
|
| 5 |
+
import os
|
| 6 |
+
from dataclasses import dataclass, field
|
| 7 |
+
from typing import Any, Iterable, Sequence
|
| 8 |
+
|
| 9 |
+
CHOICE, NOUL, SCORE = "choice", "noul", "score"
|
| 10 |
+
QUESTION_TYPES = (CHOICE, NOUL, SCORE)
|
| 11 |
+
|
| 12 |
+
|
| 13 |
+
def render(value: Any, indent: int = 0) -> str:
|
| 14 |
+
pad = " " * indent
|
| 15 |
+
if value is None:
|
| 16 |
+
return ""
|
| 17 |
+
if isinstance(value, (str, int, float, bool)):
|
| 18 |
+
return str(value)
|
| 19 |
+
if isinstance(value, list):
|
| 20 |
+
return "\n".join(f"{pad}- {render(x, indent + 1).lstrip()}" for x in value)
|
| 21 |
+
return "\n".join(
|
| 22 |
+
f"{pad}{k}:\n{render(v, indent + 1)}" if isinstance(v, (dict, list)) else f"{pad}{k}: {render(v)}"
|
| 23 |
+
for k, v in value.items()
|
| 24 |
+
)
|
| 25 |
+
|
| 26 |
+
|
| 27 |
+
def option_text(name: str, desc: Any) -> str:
|
| 28 |
+
return name if desc is None or desc == "" else f"{name}: {render(desc)}"
|
| 29 |
+
|
| 30 |
+
|
| 31 |
+
def state_hash(state: Any) -> str:
|
| 32 |
+
text = state if isinstance(state, str) else json.dumps(state, sort_keys=True, ensure_ascii=False)
|
| 33 |
+
return hashlib.sha256(" ".join(text.casefold().split()).encode()).hexdigest()
|
| 34 |
+
|
| 35 |
+
|
| 36 |
+
@dataclass
|
| 37 |
+
class Question:
|
| 38 |
+
id: str
|
| 39 |
+
type: str
|
| 40 |
+
instructions: Any
|
| 41 |
+
criteria: Any = None
|
| 42 |
+
label: Any = None
|
| 43 |
+
src: str = ""
|
| 44 |
+
target: dict[str, float] | None = None
|
| 45 |
+
|
| 46 |
+
def __post_init__(self) -> None:
|
| 47 |
+
if self.type not in QUESTION_TYPES:
|
| 48 |
+
raise ValueError(f"unknown question type {self.type!r}")
|
| 49 |
+
if self.type == CHOICE and not isinstance(self.criteria, dict):
|
| 50 |
+
raise ValueError(f"{self.id}: choice criteria must be a dict")
|
| 51 |
+
if self.type == SCORE and not isinstance(self.criteria, list):
|
| 52 |
+
raise ValueError(f"{self.id}: score criteria must be a list")
|
| 53 |
+
if self.type == NOUL and self.criteria is not None and not isinstance(self.criteria, dict):
|
| 54 |
+
raise ValueError(f"{self.id}: noul criteria must be a dict or null")
|
| 55 |
+
|
| 56 |
+
def keys(self) -> list[str]:
|
| 57 |
+
if self.type == CHOICE:
|
| 58 |
+
return list(self.criteria)
|
| 59 |
+
if self.type == NOUL:
|
| 60 |
+
return ["false", "true"]
|
| 61 |
+
return [str(i) for i in range(len(self.criteria))]
|
| 62 |
+
|
| 63 |
+
def instruction_text(self) -> str:
|
| 64 |
+
return render(self.instructions)
|
| 65 |
+
|
| 66 |
+
def options(self) -> list[str]:
|
| 67 |
+
if self.type == CHOICE:
|
| 68 |
+
return [option_text(k, v) for k, v in self.criteria.items()]
|
| 69 |
+
if self.type == NOUL:
|
| 70 |
+
c = self.criteria or {}
|
| 71 |
+
return [option_text("no", c.get("false")), option_text("yes", c.get("true"))]
|
| 72 |
+
return [render(x) for x in self.criteria]
|
| 73 |
+
|
| 74 |
+
def label_index(self) -> int:
|
| 75 |
+
if self.type == CHOICE:
|
| 76 |
+
return self.keys().index(self.label)
|
| 77 |
+
return int(self.label)
|
| 78 |
+
|
| 79 |
+
def target_vector(self) -> list[float] | None:
|
| 80 |
+
if self.target is None:
|
| 81 |
+
return None
|
| 82 |
+
t = [float(self.target.get(k, 0.0)) for k in self.keys()]
|
| 83 |
+
s = sum(t)
|
| 84 |
+
if s <= 0:
|
| 85 |
+
raise ValueError(f"{self.id}: target puts no mass on any option")
|
| 86 |
+
return [x / s for x in t]
|
| 87 |
+
|
| 88 |
+
def to_dict(self) -> dict[str, Any]:
|
| 89 |
+
d: dict[str, Any] = {"type": self.type, "instructions": self.instructions}
|
| 90 |
+
if self.criteria is not None or self.type != NOUL:
|
| 91 |
+
d["criteria"] = self.criteria
|
| 92 |
+
d["label"] = self.label
|
| 93 |
+
d["src"] = self.src
|
| 94 |
+
if self.target is not None:
|
| 95 |
+
d["target"] = self.target
|
| 96 |
+
return d
|
| 97 |
+
|
| 98 |
+
@classmethod
|
| 99 |
+
def from_dict(cls, qid: str, d: dict[str, Any]) -> "Question":
|
| 100 |
+
return cls(id=qid, type=d["type"], instructions=d["instructions"], criteria=d.get("criteria"),
|
| 101 |
+
label=d.get("label"), src=d.get("src", ""), target=d.get("target"))
|
| 102 |
+
|
| 103 |
+
|
| 104 |
+
@dataclass
|
| 105 |
+
class DataFormat:
|
| 106 |
+
state: Any
|
| 107 |
+
questions: list[Question]
|
| 108 |
+
meta: dict[str, Any] = field(default_factory=dict)
|
| 109 |
+
|
| 110 |
+
def state_text(self) -> str:
|
| 111 |
+
return render(self.state)
|
| 112 |
+
|
| 113 |
+
def question(self, qid: str) -> Question:
|
| 114 |
+
for q in self.questions:
|
| 115 |
+
if q.id == qid:
|
| 116 |
+
return q
|
| 117 |
+
raise KeyError(qid)
|
| 118 |
+
|
| 119 |
+
@property
|
| 120 |
+
def source(self) -> str:
|
| 121 |
+
return self.meta.get("source", "")
|
| 122 |
+
|
| 123 |
+
@property
|
| 124 |
+
def id(self) -> str:
|
| 125 |
+
return self.meta.get("id", "")
|
| 126 |
+
|
| 127 |
+
def text_sha256(self) -> str:
|
| 128 |
+
return self.meta.get("text_sha256") or state_hash(self.state)
|
| 129 |
+
|
| 130 |
+
def to_dict(self) -> dict[str, Any]:
|
| 131 |
+
return {"state": self.state, "questions": {q.id: q.to_dict() for q in self.questions}, "_meta": self.meta}
|
| 132 |
+
|
| 133 |
+
@classmethod
|
| 134 |
+
def from_dict(cls, d: dict[str, Any]) -> "DataFormat":
|
| 135 |
+
if "state" not in d or not isinstance(d.get("questions"), dict) or not d["questions"]:
|
| 136 |
+
raise ValueError("a record needs a state and a non-empty questions object")
|
| 137 |
+
return cls(state=d["state"], questions=[Question.from_dict(k, v) for k, v in d["questions"].items()],
|
| 138 |
+
meta=dict(d.get("_meta", {})))
|
| 139 |
+
|
| 140 |
+
@classmethod
|
| 141 |
+
def from_json(cls, line: str) -> "DataFormat":
|
| 142 |
+
return cls.from_dict(json.loads(line))
|
| 143 |
+
|
| 144 |
+
def to_json(self) -> str:
|
| 145 |
+
return json.dumps(self.to_dict(), ensure_ascii=False, default=str)
|
| 146 |
+
|
| 147 |
+
|
| 148 |
+
def read_jsonl(path: str | os.PathLike) -> list[DataFormat]:
|
| 149 |
+
out = []
|
| 150 |
+
with open(path, encoding="utf-8") as fh:
|
| 151 |
+
for n, line in enumerate(fh, start=1):
|
| 152 |
+
if line.strip():
|
| 153 |
+
try:
|
| 154 |
+
out.append(DataFormat.from_json(line))
|
| 155 |
+
except (ValueError, KeyError) as e:
|
| 156 |
+
raise ValueError(f"{os.fspath(path)}:{n}: {e}") from e
|
| 157 |
+
return out
|
| 158 |
+
|
| 159 |
+
|
| 160 |
+
def write_jsonl(path: str | os.PathLike, records: Iterable[DataFormat | dict]) -> int:
|
| 161 |
+
n = 0
|
| 162 |
+
with open(path, "w", encoding="utf-8", newline="\n") as fh:
|
| 163 |
+
for r in records:
|
| 164 |
+
fh.write((r.to_json() if isinstance(r, DataFormat) else json.dumps(r, ensure_ascii=False, default=str)) + "\n")
|
| 165 |
+
n += 1
|
| 166 |
+
return n
|
| 167 |
+
|
| 168 |
+
|
| 169 |
+
def by_source(records: Sequence[DataFormat]) -> dict[str, list[DataFormat]]:
|
| 170 |
+
out: dict[str, list[DataFormat]] = {}
|
| 171 |
+
for r in records:
|
| 172 |
+
out.setdefault(r.source, []).append(r)
|
| 173 |
+
return out
|
example_request.json
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"state": "The customer was charged twice for one order.",
|
| 3 |
+
"questions": {
|
| 4 |
+
"billing": {
|
| 5 |
+
"type": "noul",
|
| 6 |
+
"instructions": "Is this a billing issue?"
|
| 7 |
+
}
|
| 8 |
+
}
|
| 9 |
+
}
|
export.json
ADDED
|
@@ -0,0 +1,111 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"source_checkpoint": "runs/best_step402",
|
| 3 |
+
"base_model": "Qwen/Qwen3.5-9B",
|
| 4 |
+
"dtype": "bfloat16",
|
| 5 |
+
"format": "markers-v3-plainchains",
|
| 6 |
+
"head_dim": 256,
|
| 7 |
+
"temperature": 1.8589280843734741,
|
| 8 |
+
"stage": "cispo",
|
| 9 |
+
"step": 402,
|
| 10 |
+
"sources": {
|
| 11 |
+
"banking77": 0,
|
| 12 |
+
"boolq": 1,
|
| 13 |
+
"agnews": 2,
|
| 14 |
+
"mnli": 3,
|
| 15 |
+
"sst5": 4,
|
| 16 |
+
"yelp": 5,
|
| 17 |
+
"trec": 6,
|
| 18 |
+
"dbpedia14": 7,
|
| 19 |
+
"amazon": 8,
|
| 20 |
+
"imdb": 9,
|
| 21 |
+
"mmlu": 10,
|
| 22 |
+
"emotion": 11,
|
| 23 |
+
"tweet_offensive": 12,
|
| 24 |
+
"qnli": 13,
|
| 25 |
+
"paws": 14,
|
| 26 |
+
"sciq": 15,
|
| 27 |
+
"contrastive": 16,
|
| 28 |
+
"compositional": 17,
|
| 29 |
+
"composition_holdout": 18,
|
| 30 |
+
"semif": 19,
|
| 31 |
+
"wanli": 20,
|
| 32 |
+
"mmlu_pro": 21,
|
| 33 |
+
"buried": 22,
|
| 34 |
+
"unknowable": 23,
|
| 35 |
+
"unknowable_control": 24,
|
| 36 |
+
"night2_assertion": 25,
|
| 37 |
+
"night2_dates": 26,
|
| 38 |
+
"night2_unknowable": 27,
|
| 39 |
+
"night2_unknowable_control": 28
|
| 40 |
+
},
|
| 41 |
+
"metrics": null,
|
| 42 |
+
"training_config": {
|
| 43 |
+
"stage": "cispo",
|
| 44 |
+
"run_dir": "runs/cispo_rep",
|
| 45 |
+
"data_dir": "data",
|
| 46 |
+
"model": "Qwen/Qwen3.5-9B",
|
| 47 |
+
"init": "runs/sft_v4/final",
|
| 48 |
+
"resume": null,
|
| 49 |
+
"lora_r": 16,
|
| 50 |
+
"lora_alpha": 32.0,
|
| 51 |
+
"lora_dropout": 0.0,
|
| 52 |
+
"head_dim": 256,
|
| 53 |
+
"lr": 5e-05,
|
| 54 |
+
"head_lr": 0.0001,
|
| 55 |
+
"weight_decay": 0.0,
|
| 56 |
+
"warmup": 20,
|
| 57 |
+
"epochs": 4,
|
| 58 |
+
"max_steps": 0,
|
| 59 |
+
"batch_size": 8,
|
| 60 |
+
"grad_clip": 1.0,
|
| 61 |
+
"max_len": 4096,
|
| 62 |
+
"max_seq_len": 8192,
|
| 63 |
+
"train_limit": 0,
|
| 64 |
+
"dev_limit": 0,
|
| 65 |
+
"eval_every": 50,
|
| 66 |
+
"eval_batch_size": 16,
|
| 67 |
+
"eval_think": true,
|
| 68 |
+
"eval_think_limit": 256,
|
| 69 |
+
"log_every": 10,
|
| 70 |
+
"seed": 0,
|
| 71 |
+
"gradient_checkpointing": true,
|
| 72 |
+
"prompts_per_step": 8,
|
| 73 |
+
"group": 8,
|
| 74 |
+
"nothink_per_group": 0,
|
| 75 |
+
"nothink_start_epoch": 1,
|
| 76 |
+
"max_think": 2560,
|
| 77 |
+
"temperature": 1.0,
|
| 78 |
+
"top_p": 1.0,
|
| 79 |
+
"eps_high": 0.2,
|
| 80 |
+
"updates": 1,
|
| 81 |
+
"train_mix_frac": 0.0,
|
| 82 |
+
"rollout_ce_weight": 0.5,
|
| 83 |
+
"anchor_ce_weight": 0.5,
|
| 84 |
+
"anchor_batch": 8,
|
| 85 |
+
"gen_batch_size": 64,
|
| 86 |
+
"logprob_chunk": 128,
|
| 87 |
+
"micro_groups": 2,
|
| 88 |
+
"length_hinge": 2048,
|
| 89 |
+
"length_hinge_end": 1024,
|
| 90 |
+
"length_ramp": 0,
|
| 91 |
+
"length_penalty_weight": 1.0,
|
| 92 |
+
"length_penalty_cap": 0.1,
|
| 93 |
+
"length_penalty_correct_only": true,
|
| 94 |
+
"length_hinge2": 0,
|
| 95 |
+
"length_hinge2_end": 1792,
|
| 96 |
+
"length_penalty2_weight": 0.0,
|
| 97 |
+
"closure_reward": 0.0,
|
| 98 |
+
"pad_multiple": 128,
|
| 99 |
+
"num_workers": 2,
|
| 100 |
+
"compile": true,
|
| 101 |
+
"graph_decode": true,
|
| 102 |
+
"async_rollouts": true,
|
| 103 |
+
"ckpt_minutes": 45.0,
|
| 104 |
+
"log_rollouts": 3,
|
| 105 |
+
"log_chain_chars": 1200,
|
| 106 |
+
"sft_think_frac": 0.5,
|
| 107 |
+
"chain_cache": "data/chains",
|
| 108 |
+
"filter_active": false,
|
| 109 |
+
"filter_min_spread": 0.02
|
| 110 |
+
}
|
| 111 |
+
}
|
fixtures.json
ADDED
|
@@ -0,0 +1,338 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
[
|
| 2 |
+
{
|
| 3 |
+
"id": "case0",
|
| 4 |
+
"request": {
|
| 5 |
+
"state": "The customer was charged twice for one order.",
|
| 6 |
+
"questions": {
|
| 7 |
+
"billing": {
|
| 8 |
+
"type": "noul",
|
| 9 |
+
"instructions": "Is this a billing issue?",
|
| 10 |
+
"label": 1
|
| 11 |
+
}
|
| 12 |
+
}
|
| 13 |
+
},
|
| 14 |
+
"ids": [
|
| 15 |
+
248045,
|
| 16 |
+
846,
|
| 17 |
+
198,
|
| 18 |
+
248060,
|
| 19 |
+
760,
|
| 20 |
+
5813,
|
| 21 |
+
557,
|
| 22 |
+
11102,
|
| 23 |
+
10598,
|
| 24 |
+
364,
|
| 25 |
+
799,
|
| 26 |
+
1906,
|
| 27 |
+
13,
|
| 28 |
+
198,
|
| 29 |
+
248061,
|
| 30 |
+
3742,
|
| 31 |
+
411,
|
| 32 |
+
264,
|
| 33 |
+
32419,
|
| 34 |
+
4125,
|
| 35 |
+
30,
|
| 36 |
+
198,
|
| 37 |
+
248049,
|
| 38 |
+
2083,
|
| 39 |
+
248050,
|
| 40 |
+
198,
|
| 41 |
+
248049,
|
| 42 |
+
9405,
|
| 43 |
+
248050,
|
| 44 |
+
248046,
|
| 45 |
+
198,
|
| 46 |
+
248045,
|
| 47 |
+
74455,
|
| 48 |
+
198,
|
| 49 |
+
248068,
|
| 50 |
+
198,
|
| 51 |
+
198,
|
| 52 |
+
248069,
|
| 53 |
+
271,
|
| 54 |
+
248049,
|
| 55 |
+
2083,
|
| 56 |
+
248050,
|
| 57 |
+
198,
|
| 58 |
+
248049,
|
| 59 |
+
9405,
|
| 60 |
+
248050,
|
| 61 |
+
198,
|
| 62 |
+
248062
|
| 63 |
+
],
|
| 64 |
+
"option_positions": [
|
| 65 |
+
41,
|
| 66 |
+
45
|
| 67 |
+
],
|
| 68 |
+
"decide_position": 47,
|
| 69 |
+
"keys": [
|
| 70 |
+
"false",
|
| 71 |
+
"true"
|
| 72 |
+
],
|
| 73 |
+
"input_tokens": 48
|
| 74 |
+
},
|
| 75 |
+
{
|
| 76 |
+
"id": "case1",
|
| 77 |
+
"request": {
|
| 78 |
+
"state": {
|
| 79 |
+
"status": "delivered",
|
| 80 |
+
"refund_requested": false
|
| 81 |
+
},
|
| 82 |
+
"questions": {
|
| 83 |
+
"status": {
|
| 84 |
+
"type": "choice",
|
| 85 |
+
"instructions": "What is the order status?",
|
| 86 |
+
"criteria": {
|
| 87 |
+
"delivered": null,
|
| 88 |
+
"cancelled": null
|
| 89 |
+
},
|
| 90 |
+
"label": "delivered"
|
| 91 |
+
}
|
| 92 |
+
}
|
| 93 |
+
},
|
| 94 |
+
"ids": [
|
| 95 |
+
248045,
|
| 96 |
+
846,
|
| 97 |
+
198,
|
| 98 |
+
248060,
|
| 99 |
+
2738,
|
| 100 |
+
25,
|
| 101 |
+
12238,
|
| 102 |
+
198,
|
| 103 |
+
66165,
|
| 104 |
+
70238,
|
| 105 |
+
25,
|
| 106 |
+
3439,
|
| 107 |
+
198,
|
| 108 |
+
248061,
|
| 109 |
+
3710,
|
| 110 |
+
369,
|
| 111 |
+
279,
|
| 112 |
+
1906,
|
| 113 |
+
2552,
|
| 114 |
+
30,
|
| 115 |
+
198,
|
| 116 |
+
248049,
|
| 117 |
+
9302,
|
| 118 |
+
41636,
|
| 119 |
+
248050,
|
| 120 |
+
198,
|
| 121 |
+
248049,
|
| 122 |
+
91993,
|
| 123 |
+
248050,
|
| 124 |
+
248046,
|
| 125 |
+
198,
|
| 126 |
+
248045,
|
| 127 |
+
74455,
|
| 128 |
+
198,
|
| 129 |
+
248068,
|
| 130 |
+
198,
|
| 131 |
+
198,
|
| 132 |
+
248069,
|
| 133 |
+
271,
|
| 134 |
+
248049,
|
| 135 |
+
9302,
|
| 136 |
+
41636,
|
| 137 |
+
248050,
|
| 138 |
+
198,
|
| 139 |
+
248049,
|
| 140 |
+
91993,
|
| 141 |
+
248050,
|
| 142 |
+
198,
|
| 143 |
+
248062
|
| 144 |
+
],
|
| 145 |
+
"option_positions": [
|
| 146 |
+
42,
|
| 147 |
+
46
|
| 148 |
+
],
|
| 149 |
+
"decide_position": 48,
|
| 150 |
+
"keys": [
|
| 151 |
+
"delivered",
|
| 152 |
+
"cancelled"
|
| 153 |
+
],
|
| 154 |
+
"input_tokens": 49
|
| 155 |
+
},
|
| 156 |
+
{
|
| 157 |
+
"id": "case2",
|
| 158 |
+
"request": {
|
| 159 |
+
"state": "The product was excellent.",
|
| 160 |
+
"questions": {
|
| 161 |
+
"sentiment": {
|
| 162 |
+
"type": "score",
|
| 163 |
+
"instructions": "Rate the sentiment.",
|
| 164 |
+
"criteria": [
|
| 165 |
+
"negative",
|
| 166 |
+
"neutral",
|
| 167 |
+
"positive"
|
| 168 |
+
],
|
| 169 |
+
"label": 2
|
| 170 |
+
}
|
| 171 |
+
}
|
| 172 |
+
},
|
| 173 |
+
"ids": [
|
| 174 |
+
248045,
|
| 175 |
+
846,
|
| 176 |
+
198,
|
| 177 |
+
248060,
|
| 178 |
+
760,
|
| 179 |
+
1918,
|
| 180 |
+
557,
|
| 181 |
+
8800,
|
| 182 |
+
13,
|
| 183 |
+
198,
|
| 184 |
+
248061,
|
| 185 |
+
11231,
|
| 186 |
+
279,
|
| 187 |
+
25144,
|
| 188 |
+
13,
|
| 189 |
+
198,
|
| 190 |
+
248049,
|
| 191 |
+
40823,
|
| 192 |
+
248050,
|
| 193 |
+
198,
|
| 194 |
+
248049,
|
| 195 |
+
57555,
|
| 196 |
+
248050,
|
| 197 |
+
198,
|
| 198 |
+
248049,
|
| 199 |
+
29492,
|
| 200 |
+
248050,
|
| 201 |
+
248046,
|
| 202 |
+
198,
|
| 203 |
+
248045,
|
| 204 |
+
74455,
|
| 205 |
+
198,
|
| 206 |
+
248068,
|
| 207 |
+
198,
|
| 208 |
+
198,
|
| 209 |
+
248069,
|
| 210 |
+
271,
|
| 211 |
+
248049,
|
| 212 |
+
40823,
|
| 213 |
+
248050,
|
| 214 |
+
198,
|
| 215 |
+
248049,
|
| 216 |
+
57555,
|
| 217 |
+
248050,
|
| 218 |
+
198,
|
| 219 |
+
248049,
|
| 220 |
+
29492,
|
| 221 |
+
248050,
|
| 222 |
+
198,
|
| 223 |
+
248062
|
| 224 |
+
],
|
| 225 |
+
"option_positions": [
|
| 226 |
+
39,
|
| 227 |
+
43,
|
| 228 |
+
47
|
| 229 |
+
],
|
| 230 |
+
"decide_position": 49,
|
| 231 |
+
"keys": [
|
| 232 |
+
"0",
|
| 233 |
+
"1",
|
| 234 |
+
"2"
|
| 235 |
+
],
|
| 236 |
+
"input_tokens": 50
|
| 237 |
+
},
|
| 238 |
+
{
|
| 239 |
+
"id": "case3",
|
| 240 |
+
"request": {
|
| 241 |
+
"state": "Quoted text: <|box_end|> <|fim_suffix|>.",
|
| 242 |
+
"questions": {
|
| 243 |
+
"quoted": {
|
| 244 |
+
"type": "choice",
|
| 245 |
+
"instructions": "Classify the quoted text.",
|
| 246 |
+
"criteria": {
|
| 247 |
+
"literal marker": "<|box_end|>",
|
| 248 |
+
"other": null
|
| 249 |
+
},
|
| 250 |
+
"label": "literal marker"
|
| 251 |
+
}
|
| 252 |
+
}
|
| 253 |
+
},
|
| 254 |
+
"ids": [
|
| 255 |
+
248045,
|
| 256 |
+
846,
|
| 257 |
+
198,
|
| 258 |
+
248060,
|
| 259 |
+
2114,
|
| 260 |
+
8979,
|
| 261 |
+
1414,
|
| 262 |
+
25,
|
| 263 |
+
361,
|
| 264 |
+
62438,
|
| 265 |
+
1944,
|
| 266 |
+
6018,
|
| 267 |
+
62438,
|
| 268 |
+
29,
|
| 269 |
+
361,
|
| 270 |
+
62438,
|
| 271 |
+
244288,
|
| 272 |
+
35920,
|
| 273 |
+
62438,
|
| 274 |
+
13867,
|
| 275 |
+
198,
|
| 276 |
+
248061,
|
| 277 |
+
1890,
|
| 278 |
+
1386,
|
| 279 |
+
279,
|
| 280 |
+
22513,
|
| 281 |
+
1414,
|
| 282 |
+
13,
|
| 283 |
+
198,
|
| 284 |
+
248049,
|
| 285 |
+
34600,
|
| 286 |
+
10811,
|
| 287 |
+
25,
|
| 288 |
+
361,
|
| 289 |
+
62438,
|
| 290 |
+
1944,
|
| 291 |
+
6018,
|
| 292 |
+
62438,
|
| 293 |
+
29,
|
| 294 |
+
248050,
|
| 295 |
+
198,
|
| 296 |
+
248049,
|
| 297 |
+
1520,
|
| 298 |
+
248050,
|
| 299 |
+
248046,
|
| 300 |
+
198,
|
| 301 |
+
248045,
|
| 302 |
+
74455,
|
| 303 |
+
198,
|
| 304 |
+
248068,
|
| 305 |
+
198,
|
| 306 |
+
198,
|
| 307 |
+
248069,
|
| 308 |
+
271,
|
| 309 |
+
248049,
|
| 310 |
+
34600,
|
| 311 |
+
10811,
|
| 312 |
+
25,
|
| 313 |
+
361,
|
| 314 |
+
62438,
|
| 315 |
+
1944,
|
| 316 |
+
6018,
|
| 317 |
+
62438,
|
| 318 |
+
29,
|
| 319 |
+
248050,
|
| 320 |
+
198,
|
| 321 |
+
248049,
|
| 322 |
+
1520,
|
| 323 |
+
248050,
|
| 324 |
+
198,
|
| 325 |
+
248062
|
| 326 |
+
],
|
| 327 |
+
"option_positions": [
|
| 328 |
+
64,
|
| 329 |
+
68
|
| 330 |
+
],
|
| 331 |
+
"decide_position": 70,
|
| 332 |
+
"keys": [
|
| 333 |
+
"literal marker",
|
| 334 |
+
"other"
|
| 335 |
+
],
|
| 336 |
+
"input_tokens": 71
|
| 337 |
+
}
|
| 338 |
+
]
|
head.pt
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:2ab935dea9eecf263086d9ed6dfe97fd5558193663ecae102fd3c50ae6878d60
|
| 3 |
+
size 8392767
|
head.safetensors
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:ceac931470abafbc62723a297291f2c3d96627679794433585e658981798343e
|
| 3 |
+
size 8391016
|
jeeves_format.py
ADDED
|
@@ -0,0 +1,92 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Extracted from PostHog/jeeves loader/dataloader.py (MIT).
|
| 2 |
+
# Only training imports/unused nodes were removed; see LICENSE_JEEVES_CODE.
|
| 3 |
+
from __future__ import annotations
|
| 4 |
+
import re
|
| 5 |
+
from dataclasses import dataclass
|
| 6 |
+
from transformers import AutoTokenizer
|
| 7 |
+
from dataformat import DataFormat, Question
|
| 8 |
+
STATE, Q, OPT, OPT_END, DECIDE = ('<|fim_prefix|>', '<|fim_middle|>', '<|box_start|>', '<|box_end|>', '<|fim_suffix|>')
|
| 9 |
+
THINK, THINK_END = ('<think>', '</think>')
|
| 10 |
+
CONTROL_RE = re.compile('<\\|([A-Za-z0-9_]+)\\|>')
|
| 11 |
+
|
| 12 |
+
def sanitize(text: str) -> str:
|
| 13 |
+
return CONTROL_RE.sub('<¦\\1¦>', text)
|
| 14 |
+
|
| 15 |
+
@dataclass
|
| 16 |
+
class Example:
|
| 17 |
+
prompt: list[int]
|
| 18 |
+
remainder: list[int]
|
| 19 |
+
label: int
|
| 20 |
+
target: list[float] | None
|
| 21 |
+
n_options: int
|
| 22 |
+
source: str
|
| 23 |
+
source_id: int
|
| 24 |
+
record_id: str
|
| 25 |
+
question_id: str
|
| 26 |
+
think: list[int] | None = None
|
| 27 |
+
plain_prompt: list[int] | None = None
|
| 28 |
+
|
| 29 |
+
@property
|
| 30 |
+
def full(self) -> list[int]:
|
| 31 |
+
return self.prompt + self.remainder
|
| 32 |
+
|
| 33 |
+
@dataclass(frozen=True)
|
| 34 |
+
class Markers:
|
| 35 |
+
pad_id: int
|
| 36 |
+
opt_end_id: int
|
| 37 |
+
think_end_id: int
|
| 38 |
+
empty_think: tuple[int, ...]
|
| 39 |
+
pad_multiple: int
|
| 40 |
+
|
| 41 |
+
class Encoder:
|
| 42 |
+
FORMAT = 'markers-v3-plainchains'
|
| 43 |
+
|
| 44 |
+
def __init__(self, tokenizer_repo: str='Qwen/Qwen3.5-9B', pad_multiple: int=128):
|
| 45 |
+
self.tok = AutoTokenizer.from_pretrained(tokenizer_repo)
|
| 46 |
+
self.pad_multiple = pad_multiple
|
| 47 |
+
ids = self.tok.convert_tokens_to_ids([STATE, Q, OPT, OPT_END, DECIDE, THINK, THINK_END])
|
| 48 |
+
if any((i is None or i == self.tok.unk_token_id for i in ids)):
|
| 49 |
+
raise ValueError('marker tokens missing from tokenizer')
|
| 50 |
+
self.state_id, self.q_id, self.opt_id, self.opt_end_id, self.decide_id, self.think_id, self.think_end_id = ids
|
| 51 |
+
self.pad_id = self.tok.pad_token_id
|
| 52 |
+
special = set(self.tok.all_special_ids) | set(self.tok.get_added_vocab().values())
|
| 53 |
+
self.banned_ids = sorted(special - {self.think_end_id})
|
| 54 |
+
self.empty_think = self.encode('\n')
|
| 55 |
+
|
| 56 |
+
@property
|
| 57 |
+
def markers(self) -> Markers:
|
| 58 |
+
return Markers(self.pad_id, self.opt_end_id, self.think_end_id, tuple(self.empty_think), self.pad_multiple)
|
| 59 |
+
|
| 60 |
+
def encode(self, text: str) -> list[int]:
|
| 61 |
+
return self.tok(text, add_special_tokens=False).input_ids
|
| 62 |
+
|
| 63 |
+
@staticmethod
|
| 64 |
+
def option_block(q: Question) -> str:
|
| 65 |
+
return ''.join((f'{OPT}{sanitize(o)}{OPT_END}\n' for o in q.options()))
|
| 66 |
+
|
| 67 |
+
def chat(self, content: str) -> str:
|
| 68 |
+
return self.tok.apply_chat_template([{'role': 'user', 'content': content}], tokenize=False, add_generation_prompt=True, enable_thinking=True)
|
| 69 |
+
|
| 70 |
+
def prompt_text(self, record: DataFormat, q: Question) -> str:
|
| 71 |
+
return self.chat(f'{STATE}{sanitize(record.state_text())}\n{Q}{sanitize(q.instruction_text())}\n{self.option_block(q)}')
|
| 72 |
+
|
| 73 |
+
def plain_prompt_text(self, record: DataFormat, q: Question) -> str:
|
| 74 |
+
options = '\n'.join((sanitize(o) for o in q.options()))
|
| 75 |
+
return self.chat(f'Context:\n{sanitize(record.state_text())}\n\nQuestion: {sanitize(q.instruction_text())}\n\nOptions:\n{options}')
|
| 76 |
+
|
| 77 |
+
def remainder_text(self, q: Question) -> str:
|
| 78 |
+
return f'{THINK_END}\n\n{self.option_block(q)}{DECIDE}'
|
| 79 |
+
|
| 80 |
+
def example(self, record: DataFormat, q: Question, source_id: int) -> Example:
|
| 81 |
+
prompt = self.encode(self.prompt_text(record, q))
|
| 82 |
+
remainder = self.encode(self.remainder_text(q))
|
| 83 |
+
if prompt[-2:] != self.encode(f'{THINK}\n') or remainder[0] != self.think_end_id or remainder[-1] != self.decide_id:
|
| 84 |
+
raise ValueError(f'unexpected layout for {record.id}/{q.id}')
|
| 85 |
+
if remainder.count(self.opt_end_id) != len(q.options()):
|
| 86 |
+
raise ValueError(f'option boundary count mismatch for {record.id}/{q.id}')
|
| 87 |
+
return Example(prompt=prompt, remainder=remainder, label=q.label_index(), target=q.target_vector(), n_options=len(q.options()), source=record.source, source_id=source_id, record_id=record.id, question_id=q.id, plain_prompt=self.encode(self.plain_prompt_text(record, q)))
|
| 88 |
+
|
| 89 |
+
def readout_positions(ids: list[int], m: Markers) -> tuple[list[int], int]:
|
| 90 |
+
start = len(ids) - 1 - ids[::-1].index(m.think_end_id)
|
| 91 |
+
opts = [i for i in range(start, len(ids)) if ids[i] == m.opt_end_id]
|
| 92 |
+
return (opts, len(ids) - 1)
|
jeeves_support.py
ADDED
|
@@ -0,0 +1,177 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
"""Standard-library helpers for the Jeeves CPU conversion notebook."""
|
| 2 |
+
from __future__ import annotations
|
| 3 |
+
import ast
|
| 4 |
+
import hashlib
|
| 5 |
+
import json
|
| 6 |
+
import math
|
| 7 |
+
import os
|
| 8 |
+
import struct
|
| 9 |
+
from pathlib import Path
|
| 10 |
+
|
| 11 |
+
FORMAT_VERSION = "jeeves-mlx-cpu-v1"
|
| 12 |
+
|
| 13 |
+
|
| 14 |
+
def write_json(path, value):
|
| 15 |
+
path = Path(path)
|
| 16 |
+
path.parent.mkdir(parents=True, exist_ok=True)
|
| 17 |
+
temp = path.with_name(path.name + ".tmp")
|
| 18 |
+
temp.write_text(json.dumps(value, indent=2, ensure_ascii=False, allow_nan=False) + "\n", encoding="utf-8")
|
| 19 |
+
os.replace(temp, path)
|
| 20 |
+
|
| 21 |
+
|
| 22 |
+
def read_json(path):
|
| 23 |
+
return json.loads(Path(path).read_text(encoding="utf-8"))
|
| 24 |
+
|
| 25 |
+
|
| 26 |
+
def sha256(path, block_size=8 * 1024 * 1024):
|
| 27 |
+
h = hashlib.sha256()
|
| 28 |
+
with Path(path).open("rb") as stream:
|
| 29 |
+
for chunk in iter(lambda: stream.read(block_size), b""):
|
| 30 |
+
h.update(chunk)
|
| 31 |
+
return h.hexdigest()
|
| 32 |
+
|
| 33 |
+
|
| 34 |
+
def fingerprint(value):
|
| 35 |
+
return hashlib.sha256(json.dumps(value, sort_keys=True, separators=(",", ":")).encode()).hexdigest()
|
| 36 |
+
|
| 37 |
+
|
| 38 |
+
def adapt_config(original):
|
| 39 |
+
"""Adapt metadata only. Leave all tensor transforms to MLX-LM."""
|
| 40 |
+
cfg = json.loads(json.dumps(original))
|
| 41 |
+
if "text_config" in cfg:
|
| 42 |
+
raise ValueError("This notebook targets the flat Jeeves export, not a new nested export.")
|
| 43 |
+
required = ("layer_types", "num_hidden_layers", "rope_theta", "partial_rotary_factor", "hidden_size")
|
| 44 |
+
for key in required:
|
| 45 |
+
if key not in cfg:
|
| 46 |
+
raise ValueError(f"Missing source configuration field: {key}")
|
| 47 |
+
expected = ["full_attention" if (i + 1) % 4 == 0 else "linear_attention"
|
| 48 |
+
for i in range(cfg["num_hidden_layers"])]
|
| 49 |
+
if cfg["layer_types"] != expected:
|
| 50 |
+
raise ValueError("Layer schedule changed. Do not guess full_attention_interval.")
|
| 51 |
+
if cfg.get("hidden_act", "silu") != "silu" or cfg.get("num_experts", 0):
|
| 52 |
+
raise ValueError("Unsupported architecture change in this source revision.")
|
| 53 |
+
if cfg.get("quantization") or cfg.get("quantization_config"):
|
| 54 |
+
raise ValueError("Expected unquantized, fused Jeeves weights.")
|
| 55 |
+
cfg["model_type"] = "qwen3_5"
|
| 56 |
+
cfg["full_attention_interval"] = 4
|
| 57 |
+
cfg["rope_parameters"] = {
|
| 58 |
+
"type": "default", "rope_theta": cfg["rope_theta"],
|
| 59 |
+
"partial_rotary_factor": cfg["partial_rotary_factor"],
|
| 60 |
+
}
|
| 61 |
+
cfg["torch_dtype"] = cfg.get("dtype", "bfloat16")
|
| 62 |
+
return cfg
|
| 63 |
+
|
| 64 |
+
|
| 65 |
+
def safetensors_header(path):
|
| 66 |
+
"""Validate container length/offsets without loading multi-GB tensors."""
|
| 67 |
+
path = Path(path)
|
| 68 |
+
size = path.stat().st_size
|
| 69 |
+
with path.open("rb") as stream:
|
| 70 |
+
raw = stream.read(8)
|
| 71 |
+
if len(raw) != 8:
|
| 72 |
+
raise ValueError(f"Truncated Safetensors file: {path}")
|
| 73 |
+
length = struct.unpack("<Q", raw)[0]
|
| 74 |
+
if length < 2 or length > min(64 * 1024 * 1024, size - 8):
|
| 75 |
+
raise ValueError(f"Invalid Safetensors header length: {path}")
|
| 76 |
+
header = json.loads(stream.read(length))
|
| 77 |
+
data_bytes = size - 8 - length
|
| 78 |
+
tensors = {k: v for k, v in header.items() if k != "__metadata__"}
|
| 79 |
+
widths = {"BOOL": 1, "U8": 1, "I8": 1, "F8_E4M3": 1, "F8_E5M2": 1,
|
| 80 |
+
"I16": 2, "U16": 2, "F16": 2, "BF16": 2, "I32": 4, "U32": 4,
|
| 81 |
+
"F32": 4, "F64": 8, "I64": 8, "U64": 8}
|
| 82 |
+
spans = []
|
| 83 |
+
for name, t in tensors.items():
|
| 84 |
+
start, end = t["data_offsets"]
|
| 85 |
+
shape = t["shape"]
|
| 86 |
+
if any(not isinstance(x, int) or x < 0 for x in shape):
|
| 87 |
+
raise ValueError(f"Invalid tensor shape: {name}")
|
| 88 |
+
if not (0 <= start <= end <= data_bytes):
|
| 89 |
+
raise ValueError(f"Invalid tensor offsets: {path.name}:{name}")
|
| 90 |
+
if t["dtype"] in widths and end - start != math.prod(shape) * widths[t["dtype"]]:
|
| 91 |
+
raise ValueError(f"Tensor byte count mismatch: {name}")
|
| 92 |
+
spans.append((start, end))
|
| 93 |
+
cursor = 0
|
| 94 |
+
for start, end in sorted(spans):
|
| 95 |
+
if start != cursor:
|
| 96 |
+
raise ValueError(f"Tensor gaps/overlaps in {path}")
|
| 97 |
+
cursor = end
|
| 98 |
+
if cursor != data_bytes:
|
| 99 |
+
raise ValueError(f"Unexpected trailing data in {path}")
|
| 100 |
+
return tensors
|
| 101 |
+
|
| 102 |
+
|
| 103 |
+
def inspect_model(directory):
|
| 104 |
+
directory = Path(directory)
|
| 105 |
+
index = read_json(directory / "model.safetensors.index.json")
|
| 106 |
+
mapping = index["weight_map"]
|
| 107 |
+
found, nbytes = {}, 0
|
| 108 |
+
for filename in sorted(set(mapping.values())):
|
| 109 |
+
if Path(filename).name != filename:
|
| 110 |
+
raise ValueError("Unexpected nested shard path")
|
| 111 |
+
path = directory / filename
|
| 112 |
+
header = safetensors_header(path)
|
| 113 |
+
for key, info in header.items():
|
| 114 |
+
if key in found or mapping.get(key) != filename:
|
| 115 |
+
raise ValueError(f"Duplicate or incorrectly indexed tensor: {key}")
|
| 116 |
+
found[key] = info
|
| 117 |
+
nbytes += info["data_offsets"][1] - info["data_offsets"][0]
|
| 118 |
+
if set(mapping) != set(found):
|
| 119 |
+
raise ValueError("Shard/index tensor inventory mismatch")
|
| 120 |
+
advertised = index.get("metadata", {}).get("total_size")
|
| 121 |
+
if advertised is not None and advertised != nbytes:
|
| 122 |
+
raise ValueError(f"Tensor byte total mismatch: {advertised} != {nbytes}")
|
| 123 |
+
return {"tensor_count": len(found), "tensor_bytes": nbytes, "tensors": found}
|
| 124 |
+
|
| 125 |
+
|
| 126 |
+
def extract_encoder(source_text):
|
| 127 |
+
"""Retain upstream encoder AST nodes; remove only training/PyTorch imports."""
|
| 128 |
+
parsed = ast.parse(source_text)
|
| 129 |
+
wanted = {"sanitize", "Example", "Markers", "Encoder", "readout_positions"}
|
| 130 |
+
assignments = {"STATE", "Q", "OPT", "OPT_END", "DECIDE", "THINK", "THINK_END", "CONTROL_RE"}
|
| 131 |
+
nodes, seen = [], set()
|
| 132 |
+
for node in parsed.body:
|
| 133 |
+
if isinstance(node, (ast.ClassDef, ast.FunctionDef)) and node.name in wanted:
|
| 134 |
+
nodes.append(node)
|
| 135 |
+
seen.add(node.name)
|
| 136 |
+
elif isinstance(node, ast.Assign):
|
| 137 |
+
names = {n.id for target in node.targets for n in ast.walk(target) if isinstance(n, ast.Name)}
|
| 138 |
+
if names and names <= assignments:
|
| 139 |
+
nodes.append(node)
|
| 140 |
+
seen.update(names)
|
| 141 |
+
if seen != wanted | assignments:
|
| 142 |
+
raise ValueError(f"Upstream encoder structure changed: missing {(wanted | assignments) - seen}")
|
| 143 |
+
imports = ast.parse("from __future__ import annotations\nimport re\nfrom dataclasses import dataclass\n"
|
| 144 |
+
"from transformers import AutoTokenizer\nfrom dataformat import DataFormat, Question\n").body
|
| 145 |
+
module = ast.Module(body=imports + nodes, type_ignores=[])
|
| 146 |
+
ast.fix_missing_locations(module)
|
| 147 |
+
text = ("# Extracted from PostHog/jeeves loader/dataloader.py (MIT).\n"
|
| 148 |
+
"# Only training imports/unused nodes were removed; see LICENSE_JEEVES_CODE.\n" + ast.unparse(module) + "\n")
|
| 149 |
+
compile(text, "jeeves_format.py", "exec")
|
| 150 |
+
return text
|
| 151 |
+
|
| 152 |
+
|
| 153 |
+
def build_manifest(directory, identity):
|
| 154 |
+
directory = Path(directory)
|
| 155 |
+
files = {}
|
| 156 |
+
for path in sorted(directory.rglob("*")):
|
| 157 |
+
if not path.is_file() or path.name == "PACKAGE_MANIFEST.json" or "__pycache__" in path.parts:
|
| 158 |
+
continue
|
| 159 |
+
name = path.relative_to(directory).as_posix()
|
| 160 |
+
files[name] = {"bytes": path.stat().st_size, "sha256": sha256(path)}
|
| 161 |
+
value = {"schema": FORMAT_VERSION, "identity": identity, "files": files}
|
| 162 |
+
write_json(directory / "PACKAGE_MANIFEST.json", value)
|
| 163 |
+
return value
|
| 164 |
+
|
| 165 |
+
|
| 166 |
+
def verify_manifest(directory, identity=None):
|
| 167 |
+
directory = Path(directory)
|
| 168 |
+
manifest = read_json(directory / "PACKAGE_MANIFEST.json")
|
| 169 |
+
if identity is not None and manifest["identity"] != identity:
|
| 170 |
+
raise ValueError("Package belongs to a different conversion identity.")
|
| 171 |
+
for name, item in manifest["files"].items():
|
| 172 |
+
path = directory / name
|
| 173 |
+
if not path.is_relative_to(directory) or ".." in Path(name).parts:
|
| 174 |
+
raise ValueError("Unsafe manifest path")
|
| 175 |
+
if not path.is_file() or path.stat().st_size != item["bytes"] or sha256(path) != item["sha256"]:
|
| 176 |
+
raise ValueError(f"Package integrity check failed: {name}")
|
| 177 |
+
return manifest
|
model.safetensors
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:a7f3c503106f38d7bff3a55cb16b82bb5085fd8247893ade8a1de6ed1750e1f1
|
| 3 |
+
size 5038161163
|
model.safetensors.index.json
ADDED
|
@@ -0,0 +1,935 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"metadata": {
|
| 3 |
+
"total_size": 5038040064,
|
| 4 |
+
"total_parameters": 8953801728
|
| 5 |
+
},
|
| 6 |
+
"weight_map": {
|
| 7 |
+
"language_model.lm_head.biases": "model.safetensors",
|
| 8 |
+
"language_model.lm_head.scales": "model.safetensors",
|
| 9 |
+
"language_model.lm_head.weight": "model.safetensors",
|
| 10 |
+
"language_model.model.embed_tokens.biases": "model.safetensors",
|
| 11 |
+
"language_model.model.embed_tokens.scales": "model.safetensors",
|
| 12 |
+
"language_model.model.embed_tokens.weight": "model.safetensors",
|
| 13 |
+
"language_model.model.layers.0.input_layernorm.weight": "model.safetensors",
|
| 14 |
+
"language_model.model.layers.0.linear_attn.A_log": "model.safetensors",
|
| 15 |
+
"language_model.model.layers.0.linear_attn.conv1d.weight": "model.safetensors",
|
| 16 |
+
"language_model.model.layers.0.linear_attn.dt_bias": "model.safetensors",
|
| 17 |
+
"language_model.model.layers.0.linear_attn.in_proj_a.biases": "model.safetensors",
|
| 18 |
+
"language_model.model.layers.0.linear_attn.in_proj_a.scales": "model.safetensors",
|
| 19 |
+
"language_model.model.layers.0.linear_attn.in_proj_a.weight": "model.safetensors",
|
| 20 |
+
"language_model.model.layers.0.linear_attn.in_proj_b.biases": "model.safetensors",
|
| 21 |
+
"language_model.model.layers.0.linear_attn.in_proj_b.scales": "model.safetensors",
|
| 22 |
+
"language_model.model.layers.0.linear_attn.in_proj_b.weight": "model.safetensors",
|
| 23 |
+
"language_model.model.layers.0.linear_attn.in_proj_qkv.biases": "model.safetensors",
|
| 24 |
+
"language_model.model.layers.0.linear_attn.in_proj_qkv.scales": "model.safetensors",
|
| 25 |
+
"language_model.model.layers.0.linear_attn.in_proj_qkv.weight": "model.safetensors",
|
| 26 |
+
"language_model.model.layers.0.linear_attn.in_proj_z.biases": "model.safetensors",
|
| 27 |
+
"language_model.model.layers.0.linear_attn.in_proj_z.scales": "model.safetensors",
|
| 28 |
+
"language_model.model.layers.0.linear_attn.in_proj_z.weight": "model.safetensors",
|
| 29 |
+
"language_model.model.layers.0.linear_attn.norm.weight": "model.safetensors",
|
| 30 |
+
"language_model.model.layers.0.linear_attn.out_proj.biases": "model.safetensors",
|
| 31 |
+
"language_model.model.layers.0.linear_attn.out_proj.scales": "model.safetensors",
|
| 32 |
+
"language_model.model.layers.0.linear_attn.out_proj.weight": "model.safetensors",
|
| 33 |
+
"language_model.model.layers.0.mlp.down_proj.biases": "model.safetensors",
|
| 34 |
+
"language_model.model.layers.0.mlp.down_proj.scales": "model.safetensors",
|
| 35 |
+
"language_model.model.layers.0.mlp.down_proj.weight": "model.safetensors",
|
| 36 |
+
"language_model.model.layers.0.mlp.gate_proj.biases": "model.safetensors",
|
| 37 |
+
"language_model.model.layers.0.mlp.gate_proj.scales": "model.safetensors",
|
| 38 |
+
"language_model.model.layers.0.mlp.gate_proj.weight": "model.safetensors",
|
| 39 |
+
"language_model.model.layers.0.mlp.up_proj.biases": "model.safetensors",
|
| 40 |
+
"language_model.model.layers.0.mlp.up_proj.scales": "model.safetensors",
|
| 41 |
+
"language_model.model.layers.0.mlp.up_proj.weight": "model.safetensors",
|
| 42 |
+
"language_model.model.layers.0.post_attention_layernorm.weight": "model.safetensors",
|
| 43 |
+
"language_model.model.layers.1.input_layernorm.weight": "model.safetensors",
|
| 44 |
+
"language_model.model.layers.1.linear_attn.A_log": "model.safetensors",
|
| 45 |
+
"language_model.model.layers.1.linear_attn.conv1d.weight": "model.safetensors",
|
| 46 |
+
"language_model.model.layers.1.linear_attn.dt_bias": "model.safetensors",
|
| 47 |
+
"language_model.model.layers.1.linear_attn.in_proj_a.biases": "model.safetensors",
|
| 48 |
+
"language_model.model.layers.1.linear_attn.in_proj_a.scales": "model.safetensors",
|
| 49 |
+
"language_model.model.layers.1.linear_attn.in_proj_a.weight": "model.safetensors",
|
| 50 |
+
"language_model.model.layers.1.linear_attn.in_proj_b.biases": "model.safetensors",
|
| 51 |
+
"language_model.model.layers.1.linear_attn.in_proj_b.scales": "model.safetensors",
|
| 52 |
+
"language_model.model.layers.1.linear_attn.in_proj_b.weight": "model.safetensors",
|
| 53 |
+
"language_model.model.layers.1.linear_attn.in_proj_qkv.biases": "model.safetensors",
|
| 54 |
+
"language_model.model.layers.1.linear_attn.in_proj_qkv.scales": "model.safetensors",
|
| 55 |
+
"language_model.model.layers.1.linear_attn.in_proj_qkv.weight": "model.safetensors",
|
| 56 |
+
"language_model.model.layers.1.linear_attn.in_proj_z.biases": "model.safetensors",
|
| 57 |
+
"language_model.model.layers.1.linear_attn.in_proj_z.scales": "model.safetensors",
|
| 58 |
+
"language_model.model.layers.1.linear_attn.in_proj_z.weight": "model.safetensors",
|
| 59 |
+
"language_model.model.layers.1.linear_attn.norm.weight": "model.safetensors",
|
| 60 |
+
"language_model.model.layers.1.linear_attn.out_proj.biases": "model.safetensors",
|
| 61 |
+
"language_model.model.layers.1.linear_attn.out_proj.scales": "model.safetensors",
|
| 62 |
+
"language_model.model.layers.1.linear_attn.out_proj.weight": "model.safetensors",
|
| 63 |
+
"language_model.model.layers.1.mlp.down_proj.biases": "model.safetensors",
|
| 64 |
+
"language_model.model.layers.1.mlp.down_proj.scales": "model.safetensors",
|
| 65 |
+
"language_model.model.layers.1.mlp.down_proj.weight": "model.safetensors",
|
| 66 |
+
"language_model.model.layers.1.mlp.gate_proj.biases": "model.safetensors",
|
| 67 |
+
"language_model.model.layers.1.mlp.gate_proj.scales": "model.safetensors",
|
| 68 |
+
"language_model.model.layers.1.mlp.gate_proj.weight": "model.safetensors",
|
| 69 |
+
"language_model.model.layers.1.mlp.up_proj.biases": "model.safetensors",
|
| 70 |
+
"language_model.model.layers.1.mlp.up_proj.scales": "model.safetensors",
|
| 71 |
+
"language_model.model.layers.1.mlp.up_proj.weight": "model.safetensors",
|
| 72 |
+
"language_model.model.layers.1.post_attention_layernorm.weight": "model.safetensors",
|
| 73 |
+
"language_model.model.layers.10.input_layernorm.weight": "model.safetensors",
|
| 74 |
+
"language_model.model.layers.10.linear_attn.A_log": "model.safetensors",
|
| 75 |
+
"language_model.model.layers.10.linear_attn.conv1d.weight": "model.safetensors",
|
| 76 |
+
"language_model.model.layers.10.linear_attn.dt_bias": "model.safetensors",
|
| 77 |
+
"language_model.model.layers.10.linear_attn.in_proj_a.biases": "model.safetensors",
|
| 78 |
+
"language_model.model.layers.10.linear_attn.in_proj_a.scales": "model.safetensors",
|
| 79 |
+
"language_model.model.layers.10.linear_attn.in_proj_a.weight": "model.safetensors",
|
| 80 |
+
"language_model.model.layers.10.linear_attn.in_proj_b.biases": "model.safetensors",
|
| 81 |
+
"language_model.model.layers.10.linear_attn.in_proj_b.scales": "model.safetensors",
|
| 82 |
+
"language_model.model.layers.10.linear_attn.in_proj_b.weight": "model.safetensors",
|
| 83 |
+
"language_model.model.layers.10.linear_attn.in_proj_qkv.biases": "model.safetensors",
|
| 84 |
+
"language_model.model.layers.10.linear_attn.in_proj_qkv.scales": "model.safetensors",
|
| 85 |
+
"language_model.model.layers.10.linear_attn.in_proj_qkv.weight": "model.safetensors",
|
| 86 |
+
"language_model.model.layers.10.linear_attn.in_proj_z.biases": "model.safetensors",
|
| 87 |
+
"language_model.model.layers.10.linear_attn.in_proj_z.scales": "model.safetensors",
|
| 88 |
+
"language_model.model.layers.10.linear_attn.in_proj_z.weight": "model.safetensors",
|
| 89 |
+
"language_model.model.layers.10.linear_attn.norm.weight": "model.safetensors",
|
| 90 |
+
"language_model.model.layers.10.linear_attn.out_proj.biases": "model.safetensors",
|
| 91 |
+
"language_model.model.layers.10.linear_attn.out_proj.scales": "model.safetensors",
|
| 92 |
+
"language_model.model.layers.10.linear_attn.out_proj.weight": "model.safetensors",
|
| 93 |
+
"language_model.model.layers.10.mlp.down_proj.biases": "model.safetensors",
|
| 94 |
+
"language_model.model.layers.10.mlp.down_proj.scales": "model.safetensors",
|
| 95 |
+
"language_model.model.layers.10.mlp.down_proj.weight": "model.safetensors",
|
| 96 |
+
"language_model.model.layers.10.mlp.gate_proj.biases": "model.safetensors",
|
| 97 |
+
"language_model.model.layers.10.mlp.gate_proj.scales": "model.safetensors",
|
| 98 |
+
"language_model.model.layers.10.mlp.gate_proj.weight": "model.safetensors",
|
| 99 |
+
"language_model.model.layers.10.mlp.up_proj.biases": "model.safetensors",
|
| 100 |
+
"language_model.model.layers.10.mlp.up_proj.scales": "model.safetensors",
|
| 101 |
+
"language_model.model.layers.10.mlp.up_proj.weight": "model.safetensors",
|
| 102 |
+
"language_model.model.layers.10.post_attention_layernorm.weight": "model.safetensors",
|
| 103 |
+
"language_model.model.layers.11.input_layernorm.weight": "model.safetensors",
|
| 104 |
+
"language_model.model.layers.11.mlp.down_proj.biases": "model.safetensors",
|
| 105 |
+
"language_model.model.layers.11.mlp.down_proj.scales": "model.safetensors",
|
| 106 |
+
"language_model.model.layers.11.mlp.down_proj.weight": "model.safetensors",
|
| 107 |
+
"language_model.model.layers.11.mlp.gate_proj.biases": "model.safetensors",
|
| 108 |
+
"language_model.model.layers.11.mlp.gate_proj.scales": "model.safetensors",
|
| 109 |
+
"language_model.model.layers.11.mlp.gate_proj.weight": "model.safetensors",
|
| 110 |
+
"language_model.model.layers.11.mlp.up_proj.biases": "model.safetensors",
|
| 111 |
+
"language_model.model.layers.11.mlp.up_proj.scales": "model.safetensors",
|
| 112 |
+
"language_model.model.layers.11.mlp.up_proj.weight": "model.safetensors",
|
| 113 |
+
"language_model.model.layers.11.post_attention_layernorm.weight": "model.safetensors",
|
| 114 |
+
"language_model.model.layers.11.self_attn.k_norm.weight": "model.safetensors",
|
| 115 |
+
"language_model.model.layers.11.self_attn.k_proj.biases": "model.safetensors",
|
| 116 |
+
"language_model.model.layers.11.self_attn.k_proj.scales": "model.safetensors",
|
| 117 |
+
"language_model.model.layers.11.self_attn.k_proj.weight": "model.safetensors",
|
| 118 |
+
"language_model.model.layers.11.self_attn.o_proj.biases": "model.safetensors",
|
| 119 |
+
"language_model.model.layers.11.self_attn.o_proj.scales": "model.safetensors",
|
| 120 |
+
"language_model.model.layers.11.self_attn.o_proj.weight": "model.safetensors",
|
| 121 |
+
"language_model.model.layers.11.self_attn.q_norm.weight": "model.safetensors",
|
| 122 |
+
"language_model.model.layers.11.self_attn.q_proj.biases": "model.safetensors",
|
| 123 |
+
"language_model.model.layers.11.self_attn.q_proj.scales": "model.safetensors",
|
| 124 |
+
"language_model.model.layers.11.self_attn.q_proj.weight": "model.safetensors",
|
| 125 |
+
"language_model.model.layers.11.self_attn.v_proj.biases": "model.safetensors",
|
| 126 |
+
"language_model.model.layers.11.self_attn.v_proj.scales": "model.safetensors",
|
| 127 |
+
"language_model.model.layers.11.self_attn.v_proj.weight": "model.safetensors",
|
| 128 |
+
"language_model.model.layers.12.input_layernorm.weight": "model.safetensors",
|
| 129 |
+
"language_model.model.layers.12.linear_attn.A_log": "model.safetensors",
|
| 130 |
+
"language_model.model.layers.12.linear_attn.conv1d.weight": "model.safetensors",
|
| 131 |
+
"language_model.model.layers.12.linear_attn.dt_bias": "model.safetensors",
|
| 132 |
+
"language_model.model.layers.12.linear_attn.in_proj_a.biases": "model.safetensors",
|
| 133 |
+
"language_model.model.layers.12.linear_attn.in_proj_a.scales": "model.safetensors",
|
| 134 |
+
"language_model.model.layers.12.linear_attn.in_proj_a.weight": "model.safetensors",
|
| 135 |
+
"language_model.model.layers.12.linear_attn.in_proj_b.biases": "model.safetensors",
|
| 136 |
+
"language_model.model.layers.12.linear_attn.in_proj_b.scales": "model.safetensors",
|
| 137 |
+
"language_model.model.layers.12.linear_attn.in_proj_b.weight": "model.safetensors",
|
| 138 |
+
"language_model.model.layers.12.linear_attn.in_proj_qkv.biases": "model.safetensors",
|
| 139 |
+
"language_model.model.layers.12.linear_attn.in_proj_qkv.scales": "model.safetensors",
|
| 140 |
+
"language_model.model.layers.12.linear_attn.in_proj_qkv.weight": "model.safetensors",
|
| 141 |
+
"language_model.model.layers.12.linear_attn.in_proj_z.biases": "model.safetensors",
|
| 142 |
+
"language_model.model.layers.12.linear_attn.in_proj_z.scales": "model.safetensors",
|
| 143 |
+
"language_model.model.layers.12.linear_attn.in_proj_z.weight": "model.safetensors",
|
| 144 |
+
"language_model.model.layers.12.linear_attn.norm.weight": "model.safetensors",
|
| 145 |
+
"language_model.model.layers.12.linear_attn.out_proj.biases": "model.safetensors",
|
| 146 |
+
"language_model.model.layers.12.linear_attn.out_proj.scales": "model.safetensors",
|
| 147 |
+
"language_model.model.layers.12.linear_attn.out_proj.weight": "model.safetensors",
|
| 148 |
+
"language_model.model.layers.12.mlp.down_proj.biases": "model.safetensors",
|
| 149 |
+
"language_model.model.layers.12.mlp.down_proj.scales": "model.safetensors",
|
| 150 |
+
"language_model.model.layers.12.mlp.down_proj.weight": "model.safetensors",
|
| 151 |
+
"language_model.model.layers.12.mlp.gate_proj.biases": "model.safetensors",
|
| 152 |
+
"language_model.model.layers.12.mlp.gate_proj.scales": "model.safetensors",
|
| 153 |
+
"language_model.model.layers.12.mlp.gate_proj.weight": "model.safetensors",
|
| 154 |
+
"language_model.model.layers.12.mlp.up_proj.biases": "model.safetensors",
|
| 155 |
+
"language_model.model.layers.12.mlp.up_proj.scales": "model.safetensors",
|
| 156 |
+
"language_model.model.layers.12.mlp.up_proj.weight": "model.safetensors",
|
| 157 |
+
"language_model.model.layers.12.post_attention_layernorm.weight": "model.safetensors",
|
| 158 |
+
"language_model.model.layers.13.input_layernorm.weight": "model.safetensors",
|
| 159 |
+
"language_model.model.layers.13.linear_attn.A_log": "model.safetensors",
|
| 160 |
+
"language_model.model.layers.13.linear_attn.conv1d.weight": "model.safetensors",
|
| 161 |
+
"language_model.model.layers.13.linear_attn.dt_bias": "model.safetensors",
|
| 162 |
+
"language_model.model.layers.13.linear_attn.in_proj_a.biases": "model.safetensors",
|
| 163 |
+
"language_model.model.layers.13.linear_attn.in_proj_a.scales": "model.safetensors",
|
| 164 |
+
"language_model.model.layers.13.linear_attn.in_proj_a.weight": "model.safetensors",
|
| 165 |
+
"language_model.model.layers.13.linear_attn.in_proj_b.biases": "model.safetensors",
|
| 166 |
+
"language_model.model.layers.13.linear_attn.in_proj_b.scales": "model.safetensors",
|
| 167 |
+
"language_model.model.layers.13.linear_attn.in_proj_b.weight": "model.safetensors",
|
| 168 |
+
"language_model.model.layers.13.linear_attn.in_proj_qkv.biases": "model.safetensors",
|
| 169 |
+
"language_model.model.layers.13.linear_attn.in_proj_qkv.scales": "model.safetensors",
|
| 170 |
+
"language_model.model.layers.13.linear_attn.in_proj_qkv.weight": "model.safetensors",
|
| 171 |
+
"language_model.model.layers.13.linear_attn.in_proj_z.biases": "model.safetensors",
|
| 172 |
+
"language_model.model.layers.13.linear_attn.in_proj_z.scales": "model.safetensors",
|
| 173 |
+
"language_model.model.layers.13.linear_attn.in_proj_z.weight": "model.safetensors",
|
| 174 |
+
"language_model.model.layers.13.linear_attn.norm.weight": "model.safetensors",
|
| 175 |
+
"language_model.model.layers.13.linear_attn.out_proj.biases": "model.safetensors",
|
| 176 |
+
"language_model.model.layers.13.linear_attn.out_proj.scales": "model.safetensors",
|
| 177 |
+
"language_model.model.layers.13.linear_attn.out_proj.weight": "model.safetensors",
|
| 178 |
+
"language_model.model.layers.13.mlp.down_proj.biases": "model.safetensors",
|
| 179 |
+
"language_model.model.layers.13.mlp.down_proj.scales": "model.safetensors",
|
| 180 |
+
"language_model.model.layers.13.mlp.down_proj.weight": "model.safetensors",
|
| 181 |
+
"language_model.model.layers.13.mlp.gate_proj.biases": "model.safetensors",
|
| 182 |
+
"language_model.model.layers.13.mlp.gate_proj.scales": "model.safetensors",
|
| 183 |
+
"language_model.model.layers.13.mlp.gate_proj.weight": "model.safetensors",
|
| 184 |
+
"language_model.model.layers.13.mlp.up_proj.biases": "model.safetensors",
|
| 185 |
+
"language_model.model.layers.13.mlp.up_proj.scales": "model.safetensors",
|
| 186 |
+
"language_model.model.layers.13.mlp.up_proj.weight": "model.safetensors",
|
| 187 |
+
"language_model.model.layers.13.post_attention_layernorm.weight": "model.safetensors",
|
| 188 |
+
"language_model.model.layers.14.input_layernorm.weight": "model.safetensors",
|
| 189 |
+
"language_model.model.layers.14.linear_attn.A_log": "model.safetensors",
|
| 190 |
+
"language_model.model.layers.14.linear_attn.conv1d.weight": "model.safetensors",
|
| 191 |
+
"language_model.model.layers.14.linear_attn.dt_bias": "model.safetensors",
|
| 192 |
+
"language_model.model.layers.14.linear_attn.in_proj_a.biases": "model.safetensors",
|
| 193 |
+
"language_model.model.layers.14.linear_attn.in_proj_a.scales": "model.safetensors",
|
| 194 |
+
"language_model.model.layers.14.linear_attn.in_proj_a.weight": "model.safetensors",
|
| 195 |
+
"language_model.model.layers.14.linear_attn.in_proj_b.biases": "model.safetensors",
|
| 196 |
+
"language_model.model.layers.14.linear_attn.in_proj_b.scales": "model.safetensors",
|
| 197 |
+
"language_model.model.layers.14.linear_attn.in_proj_b.weight": "model.safetensors",
|
| 198 |
+
"language_model.model.layers.14.linear_attn.in_proj_qkv.biases": "model.safetensors",
|
| 199 |
+
"language_model.model.layers.14.linear_attn.in_proj_qkv.scales": "model.safetensors",
|
| 200 |
+
"language_model.model.layers.14.linear_attn.in_proj_qkv.weight": "model.safetensors",
|
| 201 |
+
"language_model.model.layers.14.linear_attn.in_proj_z.biases": "model.safetensors",
|
| 202 |
+
"language_model.model.layers.14.linear_attn.in_proj_z.scales": "model.safetensors",
|
| 203 |
+
"language_model.model.layers.14.linear_attn.in_proj_z.weight": "model.safetensors",
|
| 204 |
+
"language_model.model.layers.14.linear_attn.norm.weight": "model.safetensors",
|
| 205 |
+
"language_model.model.layers.14.linear_attn.out_proj.biases": "model.safetensors",
|
| 206 |
+
"language_model.model.layers.14.linear_attn.out_proj.scales": "model.safetensors",
|
| 207 |
+
"language_model.model.layers.14.linear_attn.out_proj.weight": "model.safetensors",
|
| 208 |
+
"language_model.model.layers.14.mlp.down_proj.biases": "model.safetensors",
|
| 209 |
+
"language_model.model.layers.14.mlp.down_proj.scales": "model.safetensors",
|
| 210 |
+
"language_model.model.layers.14.mlp.down_proj.weight": "model.safetensors",
|
| 211 |
+
"language_model.model.layers.14.mlp.gate_proj.biases": "model.safetensors",
|
| 212 |
+
"language_model.model.layers.14.mlp.gate_proj.scales": "model.safetensors",
|
| 213 |
+
"language_model.model.layers.14.mlp.gate_proj.weight": "model.safetensors",
|
| 214 |
+
"language_model.model.layers.14.mlp.up_proj.biases": "model.safetensors",
|
| 215 |
+
"language_model.model.layers.14.mlp.up_proj.scales": "model.safetensors",
|
| 216 |
+
"language_model.model.layers.14.mlp.up_proj.weight": "model.safetensors",
|
| 217 |
+
"language_model.model.layers.14.post_attention_layernorm.weight": "model.safetensors",
|
| 218 |
+
"language_model.model.layers.15.input_layernorm.weight": "model.safetensors",
|
| 219 |
+
"language_model.model.layers.15.mlp.down_proj.biases": "model.safetensors",
|
| 220 |
+
"language_model.model.layers.15.mlp.down_proj.scales": "model.safetensors",
|
| 221 |
+
"language_model.model.layers.15.mlp.down_proj.weight": "model.safetensors",
|
| 222 |
+
"language_model.model.layers.15.mlp.gate_proj.biases": "model.safetensors",
|
| 223 |
+
"language_model.model.layers.15.mlp.gate_proj.scales": "model.safetensors",
|
| 224 |
+
"language_model.model.layers.15.mlp.gate_proj.weight": "model.safetensors",
|
| 225 |
+
"language_model.model.layers.15.mlp.up_proj.biases": "model.safetensors",
|
| 226 |
+
"language_model.model.layers.15.mlp.up_proj.scales": "model.safetensors",
|
| 227 |
+
"language_model.model.layers.15.mlp.up_proj.weight": "model.safetensors",
|
| 228 |
+
"language_model.model.layers.15.post_attention_layernorm.weight": "model.safetensors",
|
| 229 |
+
"language_model.model.layers.15.self_attn.k_norm.weight": "model.safetensors",
|
| 230 |
+
"language_model.model.layers.15.self_attn.k_proj.biases": "model.safetensors",
|
| 231 |
+
"language_model.model.layers.15.self_attn.k_proj.scales": "model.safetensors",
|
| 232 |
+
"language_model.model.layers.15.self_attn.k_proj.weight": "model.safetensors",
|
| 233 |
+
"language_model.model.layers.15.self_attn.o_proj.biases": "model.safetensors",
|
| 234 |
+
"language_model.model.layers.15.self_attn.o_proj.scales": "model.safetensors",
|
| 235 |
+
"language_model.model.layers.15.self_attn.o_proj.weight": "model.safetensors",
|
| 236 |
+
"language_model.model.layers.15.self_attn.q_norm.weight": "model.safetensors",
|
| 237 |
+
"language_model.model.layers.15.self_attn.q_proj.biases": "model.safetensors",
|
| 238 |
+
"language_model.model.layers.15.self_attn.q_proj.scales": "model.safetensors",
|
| 239 |
+
"language_model.model.layers.15.self_attn.q_proj.weight": "model.safetensors",
|
| 240 |
+
"language_model.model.layers.15.self_attn.v_proj.biases": "model.safetensors",
|
| 241 |
+
"language_model.model.layers.15.self_attn.v_proj.scales": "model.safetensors",
|
| 242 |
+
"language_model.model.layers.15.self_attn.v_proj.weight": "model.safetensors",
|
| 243 |
+
"language_model.model.layers.16.input_layernorm.weight": "model.safetensors",
|
| 244 |
+
"language_model.model.layers.16.linear_attn.A_log": "model.safetensors",
|
| 245 |
+
"language_model.model.layers.16.linear_attn.conv1d.weight": "model.safetensors",
|
| 246 |
+
"language_model.model.layers.16.linear_attn.dt_bias": "model.safetensors",
|
| 247 |
+
"language_model.model.layers.16.linear_attn.in_proj_a.biases": "model.safetensors",
|
| 248 |
+
"language_model.model.layers.16.linear_attn.in_proj_a.scales": "model.safetensors",
|
| 249 |
+
"language_model.model.layers.16.linear_attn.in_proj_a.weight": "model.safetensors",
|
| 250 |
+
"language_model.model.layers.16.linear_attn.in_proj_b.biases": "model.safetensors",
|
| 251 |
+
"language_model.model.layers.16.linear_attn.in_proj_b.scales": "model.safetensors",
|
| 252 |
+
"language_model.model.layers.16.linear_attn.in_proj_b.weight": "model.safetensors",
|
| 253 |
+
"language_model.model.layers.16.linear_attn.in_proj_qkv.biases": "model.safetensors",
|
| 254 |
+
"language_model.model.layers.16.linear_attn.in_proj_qkv.scales": "model.safetensors",
|
| 255 |
+
"language_model.model.layers.16.linear_attn.in_proj_qkv.weight": "model.safetensors",
|
| 256 |
+
"language_model.model.layers.16.linear_attn.in_proj_z.biases": "model.safetensors",
|
| 257 |
+
"language_model.model.layers.16.linear_attn.in_proj_z.scales": "model.safetensors",
|
| 258 |
+
"language_model.model.layers.16.linear_attn.in_proj_z.weight": "model.safetensors",
|
| 259 |
+
"language_model.model.layers.16.linear_attn.norm.weight": "model.safetensors",
|
| 260 |
+
"language_model.model.layers.16.linear_attn.out_proj.biases": "model.safetensors",
|
| 261 |
+
"language_model.model.layers.16.linear_attn.out_proj.scales": "model.safetensors",
|
| 262 |
+
"language_model.model.layers.16.linear_attn.out_proj.weight": "model.safetensors",
|
| 263 |
+
"language_model.model.layers.16.mlp.down_proj.biases": "model.safetensors",
|
| 264 |
+
"language_model.model.layers.16.mlp.down_proj.scales": "model.safetensors",
|
| 265 |
+
"language_model.model.layers.16.mlp.down_proj.weight": "model.safetensors",
|
| 266 |
+
"language_model.model.layers.16.mlp.gate_proj.biases": "model.safetensors",
|
| 267 |
+
"language_model.model.layers.16.mlp.gate_proj.scales": "model.safetensors",
|
| 268 |
+
"language_model.model.layers.16.mlp.gate_proj.weight": "model.safetensors",
|
| 269 |
+
"language_model.model.layers.16.mlp.up_proj.biases": "model.safetensors",
|
| 270 |
+
"language_model.model.layers.16.mlp.up_proj.scales": "model.safetensors",
|
| 271 |
+
"language_model.model.layers.16.mlp.up_proj.weight": "model.safetensors",
|
| 272 |
+
"language_model.model.layers.16.post_attention_layernorm.weight": "model.safetensors",
|
| 273 |
+
"language_model.model.layers.17.input_layernorm.weight": "model.safetensors",
|
| 274 |
+
"language_model.model.layers.17.linear_attn.A_log": "model.safetensors",
|
| 275 |
+
"language_model.model.layers.17.linear_attn.conv1d.weight": "model.safetensors",
|
| 276 |
+
"language_model.model.layers.17.linear_attn.dt_bias": "model.safetensors",
|
| 277 |
+
"language_model.model.layers.17.linear_attn.in_proj_a.biases": "model.safetensors",
|
| 278 |
+
"language_model.model.layers.17.linear_attn.in_proj_a.scales": "model.safetensors",
|
| 279 |
+
"language_model.model.layers.17.linear_attn.in_proj_a.weight": "model.safetensors",
|
| 280 |
+
"language_model.model.layers.17.linear_attn.in_proj_b.biases": "model.safetensors",
|
| 281 |
+
"language_model.model.layers.17.linear_attn.in_proj_b.scales": "model.safetensors",
|
| 282 |
+
"language_model.model.layers.17.linear_attn.in_proj_b.weight": "model.safetensors",
|
| 283 |
+
"language_model.model.layers.17.linear_attn.in_proj_qkv.biases": "model.safetensors",
|
| 284 |
+
"language_model.model.layers.17.linear_attn.in_proj_qkv.scales": "model.safetensors",
|
| 285 |
+
"language_model.model.layers.17.linear_attn.in_proj_qkv.weight": "model.safetensors",
|
| 286 |
+
"language_model.model.layers.17.linear_attn.in_proj_z.biases": "model.safetensors",
|
| 287 |
+
"language_model.model.layers.17.linear_attn.in_proj_z.scales": "model.safetensors",
|
| 288 |
+
"language_model.model.layers.17.linear_attn.in_proj_z.weight": "model.safetensors",
|
| 289 |
+
"language_model.model.layers.17.linear_attn.norm.weight": "model.safetensors",
|
| 290 |
+
"language_model.model.layers.17.linear_attn.out_proj.biases": "model.safetensors",
|
| 291 |
+
"language_model.model.layers.17.linear_attn.out_proj.scales": "model.safetensors",
|
| 292 |
+
"language_model.model.layers.17.linear_attn.out_proj.weight": "model.safetensors",
|
| 293 |
+
"language_model.model.layers.17.mlp.down_proj.biases": "model.safetensors",
|
| 294 |
+
"language_model.model.layers.17.mlp.down_proj.scales": "model.safetensors",
|
| 295 |
+
"language_model.model.layers.17.mlp.down_proj.weight": "model.safetensors",
|
| 296 |
+
"language_model.model.layers.17.mlp.gate_proj.biases": "model.safetensors",
|
| 297 |
+
"language_model.model.layers.17.mlp.gate_proj.scales": "model.safetensors",
|
| 298 |
+
"language_model.model.layers.17.mlp.gate_proj.weight": "model.safetensors",
|
| 299 |
+
"language_model.model.layers.17.mlp.up_proj.biases": "model.safetensors",
|
| 300 |
+
"language_model.model.layers.17.mlp.up_proj.scales": "model.safetensors",
|
| 301 |
+
"language_model.model.layers.17.mlp.up_proj.weight": "model.safetensors",
|
| 302 |
+
"language_model.model.layers.17.post_attention_layernorm.weight": "model.safetensors",
|
| 303 |
+
"language_model.model.layers.18.input_layernorm.weight": "model.safetensors",
|
| 304 |
+
"language_model.model.layers.18.linear_attn.A_log": "model.safetensors",
|
| 305 |
+
"language_model.model.layers.18.linear_attn.conv1d.weight": "model.safetensors",
|
| 306 |
+
"language_model.model.layers.18.linear_attn.dt_bias": "model.safetensors",
|
| 307 |
+
"language_model.model.layers.18.linear_attn.in_proj_a.biases": "model.safetensors",
|
| 308 |
+
"language_model.model.layers.18.linear_attn.in_proj_a.scales": "model.safetensors",
|
| 309 |
+
"language_model.model.layers.18.linear_attn.in_proj_a.weight": "model.safetensors",
|
| 310 |
+
"language_model.model.layers.18.linear_attn.in_proj_b.biases": "model.safetensors",
|
| 311 |
+
"language_model.model.layers.18.linear_attn.in_proj_b.scales": "model.safetensors",
|
| 312 |
+
"language_model.model.layers.18.linear_attn.in_proj_b.weight": "model.safetensors",
|
| 313 |
+
"language_model.model.layers.18.linear_attn.in_proj_qkv.biases": "model.safetensors",
|
| 314 |
+
"language_model.model.layers.18.linear_attn.in_proj_qkv.scales": "model.safetensors",
|
| 315 |
+
"language_model.model.layers.18.linear_attn.in_proj_qkv.weight": "model.safetensors",
|
| 316 |
+
"language_model.model.layers.18.linear_attn.in_proj_z.biases": "model.safetensors",
|
| 317 |
+
"language_model.model.layers.18.linear_attn.in_proj_z.scales": "model.safetensors",
|
| 318 |
+
"language_model.model.layers.18.linear_attn.in_proj_z.weight": "model.safetensors",
|
| 319 |
+
"language_model.model.layers.18.linear_attn.norm.weight": "model.safetensors",
|
| 320 |
+
"language_model.model.layers.18.linear_attn.out_proj.biases": "model.safetensors",
|
| 321 |
+
"language_model.model.layers.18.linear_attn.out_proj.scales": "model.safetensors",
|
| 322 |
+
"language_model.model.layers.18.linear_attn.out_proj.weight": "model.safetensors",
|
| 323 |
+
"language_model.model.layers.18.mlp.down_proj.biases": "model.safetensors",
|
| 324 |
+
"language_model.model.layers.18.mlp.down_proj.scales": "model.safetensors",
|
| 325 |
+
"language_model.model.layers.18.mlp.down_proj.weight": "model.safetensors",
|
| 326 |
+
"language_model.model.layers.18.mlp.gate_proj.biases": "model.safetensors",
|
| 327 |
+
"language_model.model.layers.18.mlp.gate_proj.scales": "model.safetensors",
|
| 328 |
+
"language_model.model.layers.18.mlp.gate_proj.weight": "model.safetensors",
|
| 329 |
+
"language_model.model.layers.18.mlp.up_proj.biases": "model.safetensors",
|
| 330 |
+
"language_model.model.layers.18.mlp.up_proj.scales": "model.safetensors",
|
| 331 |
+
"language_model.model.layers.18.mlp.up_proj.weight": "model.safetensors",
|
| 332 |
+
"language_model.model.layers.18.post_attention_layernorm.weight": "model.safetensors",
|
| 333 |
+
"language_model.model.layers.19.input_layernorm.weight": "model.safetensors",
|
| 334 |
+
"language_model.model.layers.19.mlp.down_proj.biases": "model.safetensors",
|
| 335 |
+
"language_model.model.layers.19.mlp.down_proj.scales": "model.safetensors",
|
| 336 |
+
"language_model.model.layers.19.mlp.down_proj.weight": "model.safetensors",
|
| 337 |
+
"language_model.model.layers.19.mlp.gate_proj.biases": "model.safetensors",
|
| 338 |
+
"language_model.model.layers.19.mlp.gate_proj.scales": "model.safetensors",
|
| 339 |
+
"language_model.model.layers.19.mlp.gate_proj.weight": "model.safetensors",
|
| 340 |
+
"language_model.model.layers.19.mlp.up_proj.biases": "model.safetensors",
|
| 341 |
+
"language_model.model.layers.19.mlp.up_proj.scales": "model.safetensors",
|
| 342 |
+
"language_model.model.layers.19.mlp.up_proj.weight": "model.safetensors",
|
| 343 |
+
"language_model.model.layers.19.post_attention_layernorm.weight": "model.safetensors",
|
| 344 |
+
"language_model.model.layers.19.self_attn.k_norm.weight": "model.safetensors",
|
| 345 |
+
"language_model.model.layers.19.self_attn.k_proj.biases": "model.safetensors",
|
| 346 |
+
"language_model.model.layers.19.self_attn.k_proj.scales": "model.safetensors",
|
| 347 |
+
"language_model.model.layers.19.self_attn.k_proj.weight": "model.safetensors",
|
| 348 |
+
"language_model.model.layers.19.self_attn.o_proj.biases": "model.safetensors",
|
| 349 |
+
"language_model.model.layers.19.self_attn.o_proj.scales": "model.safetensors",
|
| 350 |
+
"language_model.model.layers.19.self_attn.o_proj.weight": "model.safetensors",
|
| 351 |
+
"language_model.model.layers.19.self_attn.q_norm.weight": "model.safetensors",
|
| 352 |
+
"language_model.model.layers.19.self_attn.q_proj.biases": "model.safetensors",
|
| 353 |
+
"language_model.model.layers.19.self_attn.q_proj.scales": "model.safetensors",
|
| 354 |
+
"language_model.model.layers.19.self_attn.q_proj.weight": "model.safetensors",
|
| 355 |
+
"language_model.model.layers.19.self_attn.v_proj.biases": "model.safetensors",
|
| 356 |
+
"language_model.model.layers.19.self_attn.v_proj.scales": "model.safetensors",
|
| 357 |
+
"language_model.model.layers.19.self_attn.v_proj.weight": "model.safetensors",
|
| 358 |
+
"language_model.model.layers.2.input_layernorm.weight": "model.safetensors",
|
| 359 |
+
"language_model.model.layers.2.linear_attn.A_log": "model.safetensors",
|
| 360 |
+
"language_model.model.layers.2.linear_attn.conv1d.weight": "model.safetensors",
|
| 361 |
+
"language_model.model.layers.2.linear_attn.dt_bias": "model.safetensors",
|
| 362 |
+
"language_model.model.layers.2.linear_attn.in_proj_a.biases": "model.safetensors",
|
| 363 |
+
"language_model.model.layers.2.linear_attn.in_proj_a.scales": "model.safetensors",
|
| 364 |
+
"language_model.model.layers.2.linear_attn.in_proj_a.weight": "model.safetensors",
|
| 365 |
+
"language_model.model.layers.2.linear_attn.in_proj_b.biases": "model.safetensors",
|
| 366 |
+
"language_model.model.layers.2.linear_attn.in_proj_b.scales": "model.safetensors",
|
| 367 |
+
"language_model.model.layers.2.linear_attn.in_proj_b.weight": "model.safetensors",
|
| 368 |
+
"language_model.model.layers.2.linear_attn.in_proj_qkv.biases": "model.safetensors",
|
| 369 |
+
"language_model.model.layers.2.linear_attn.in_proj_qkv.scales": "model.safetensors",
|
| 370 |
+
"language_model.model.layers.2.linear_attn.in_proj_qkv.weight": "model.safetensors",
|
| 371 |
+
"language_model.model.layers.2.linear_attn.in_proj_z.biases": "model.safetensors",
|
| 372 |
+
"language_model.model.layers.2.linear_attn.in_proj_z.scales": "model.safetensors",
|
| 373 |
+
"language_model.model.layers.2.linear_attn.in_proj_z.weight": "model.safetensors",
|
| 374 |
+
"language_model.model.layers.2.linear_attn.norm.weight": "model.safetensors",
|
| 375 |
+
"language_model.model.layers.2.linear_attn.out_proj.biases": "model.safetensors",
|
| 376 |
+
"language_model.model.layers.2.linear_attn.out_proj.scales": "model.safetensors",
|
| 377 |
+
"language_model.model.layers.2.linear_attn.out_proj.weight": "model.safetensors",
|
| 378 |
+
"language_model.model.layers.2.mlp.down_proj.biases": "model.safetensors",
|
| 379 |
+
"language_model.model.layers.2.mlp.down_proj.scales": "model.safetensors",
|
| 380 |
+
"language_model.model.layers.2.mlp.down_proj.weight": "model.safetensors",
|
| 381 |
+
"language_model.model.layers.2.mlp.gate_proj.biases": "model.safetensors",
|
| 382 |
+
"language_model.model.layers.2.mlp.gate_proj.scales": "model.safetensors",
|
| 383 |
+
"language_model.model.layers.2.mlp.gate_proj.weight": "model.safetensors",
|
| 384 |
+
"language_model.model.layers.2.mlp.up_proj.biases": "model.safetensors",
|
| 385 |
+
"language_model.model.layers.2.mlp.up_proj.scales": "model.safetensors",
|
| 386 |
+
"language_model.model.layers.2.mlp.up_proj.weight": "model.safetensors",
|
| 387 |
+
"language_model.model.layers.2.post_attention_layernorm.weight": "model.safetensors",
|
| 388 |
+
"language_model.model.layers.20.input_layernorm.weight": "model.safetensors",
|
| 389 |
+
"language_model.model.layers.20.linear_attn.A_log": "model.safetensors",
|
| 390 |
+
"language_model.model.layers.20.linear_attn.conv1d.weight": "model.safetensors",
|
| 391 |
+
"language_model.model.layers.20.linear_attn.dt_bias": "model.safetensors",
|
| 392 |
+
"language_model.model.layers.20.linear_attn.in_proj_a.biases": "model.safetensors",
|
| 393 |
+
"language_model.model.layers.20.linear_attn.in_proj_a.scales": "model.safetensors",
|
| 394 |
+
"language_model.model.layers.20.linear_attn.in_proj_a.weight": "model.safetensors",
|
| 395 |
+
"language_model.model.layers.20.linear_attn.in_proj_b.biases": "model.safetensors",
|
| 396 |
+
"language_model.model.layers.20.linear_attn.in_proj_b.scales": "model.safetensors",
|
| 397 |
+
"language_model.model.layers.20.linear_attn.in_proj_b.weight": "model.safetensors",
|
| 398 |
+
"language_model.model.layers.20.linear_attn.in_proj_qkv.biases": "model.safetensors",
|
| 399 |
+
"language_model.model.layers.20.linear_attn.in_proj_qkv.scales": "model.safetensors",
|
| 400 |
+
"language_model.model.layers.20.linear_attn.in_proj_qkv.weight": "model.safetensors",
|
| 401 |
+
"language_model.model.layers.20.linear_attn.in_proj_z.biases": "model.safetensors",
|
| 402 |
+
"language_model.model.layers.20.linear_attn.in_proj_z.scales": "model.safetensors",
|
| 403 |
+
"language_model.model.layers.20.linear_attn.in_proj_z.weight": "model.safetensors",
|
| 404 |
+
"language_model.model.layers.20.linear_attn.norm.weight": "model.safetensors",
|
| 405 |
+
"language_model.model.layers.20.linear_attn.out_proj.biases": "model.safetensors",
|
| 406 |
+
"language_model.model.layers.20.linear_attn.out_proj.scales": "model.safetensors",
|
| 407 |
+
"language_model.model.layers.20.linear_attn.out_proj.weight": "model.safetensors",
|
| 408 |
+
"language_model.model.layers.20.mlp.down_proj.biases": "model.safetensors",
|
| 409 |
+
"language_model.model.layers.20.mlp.down_proj.scales": "model.safetensors",
|
| 410 |
+
"language_model.model.layers.20.mlp.down_proj.weight": "model.safetensors",
|
| 411 |
+
"language_model.model.layers.20.mlp.gate_proj.biases": "model.safetensors",
|
| 412 |
+
"language_model.model.layers.20.mlp.gate_proj.scales": "model.safetensors",
|
| 413 |
+
"language_model.model.layers.20.mlp.gate_proj.weight": "model.safetensors",
|
| 414 |
+
"language_model.model.layers.20.mlp.up_proj.biases": "model.safetensors",
|
| 415 |
+
"language_model.model.layers.20.mlp.up_proj.scales": "model.safetensors",
|
| 416 |
+
"language_model.model.layers.20.mlp.up_proj.weight": "model.safetensors",
|
| 417 |
+
"language_model.model.layers.20.post_attention_layernorm.weight": "model.safetensors",
|
| 418 |
+
"language_model.model.layers.21.input_layernorm.weight": "model.safetensors",
|
| 419 |
+
"language_model.model.layers.21.linear_attn.A_log": "model.safetensors",
|
| 420 |
+
"language_model.model.layers.21.linear_attn.conv1d.weight": "model.safetensors",
|
| 421 |
+
"language_model.model.layers.21.linear_attn.dt_bias": "model.safetensors",
|
| 422 |
+
"language_model.model.layers.21.linear_attn.in_proj_a.biases": "model.safetensors",
|
| 423 |
+
"language_model.model.layers.21.linear_attn.in_proj_a.scales": "model.safetensors",
|
| 424 |
+
"language_model.model.layers.21.linear_attn.in_proj_a.weight": "model.safetensors",
|
| 425 |
+
"language_model.model.layers.21.linear_attn.in_proj_b.biases": "model.safetensors",
|
| 426 |
+
"language_model.model.layers.21.linear_attn.in_proj_b.scales": "model.safetensors",
|
| 427 |
+
"language_model.model.layers.21.linear_attn.in_proj_b.weight": "model.safetensors",
|
| 428 |
+
"language_model.model.layers.21.linear_attn.in_proj_qkv.biases": "model.safetensors",
|
| 429 |
+
"language_model.model.layers.21.linear_attn.in_proj_qkv.scales": "model.safetensors",
|
| 430 |
+
"language_model.model.layers.21.linear_attn.in_proj_qkv.weight": "model.safetensors",
|
| 431 |
+
"language_model.model.layers.21.linear_attn.in_proj_z.biases": "model.safetensors",
|
| 432 |
+
"language_model.model.layers.21.linear_attn.in_proj_z.scales": "model.safetensors",
|
| 433 |
+
"language_model.model.layers.21.linear_attn.in_proj_z.weight": "model.safetensors",
|
| 434 |
+
"language_model.model.layers.21.linear_attn.norm.weight": "model.safetensors",
|
| 435 |
+
"language_model.model.layers.21.linear_attn.out_proj.biases": "model.safetensors",
|
| 436 |
+
"language_model.model.layers.21.linear_attn.out_proj.scales": "model.safetensors",
|
| 437 |
+
"language_model.model.layers.21.linear_attn.out_proj.weight": "model.safetensors",
|
| 438 |
+
"language_model.model.layers.21.mlp.down_proj.biases": "model.safetensors",
|
| 439 |
+
"language_model.model.layers.21.mlp.down_proj.scales": "model.safetensors",
|
| 440 |
+
"language_model.model.layers.21.mlp.down_proj.weight": "model.safetensors",
|
| 441 |
+
"language_model.model.layers.21.mlp.gate_proj.biases": "model.safetensors",
|
| 442 |
+
"language_model.model.layers.21.mlp.gate_proj.scales": "model.safetensors",
|
| 443 |
+
"language_model.model.layers.21.mlp.gate_proj.weight": "model.safetensors",
|
| 444 |
+
"language_model.model.layers.21.mlp.up_proj.biases": "model.safetensors",
|
| 445 |
+
"language_model.model.layers.21.mlp.up_proj.scales": "model.safetensors",
|
| 446 |
+
"language_model.model.layers.21.mlp.up_proj.weight": "model.safetensors",
|
| 447 |
+
"language_model.model.layers.21.post_attention_layernorm.weight": "model.safetensors",
|
| 448 |
+
"language_model.model.layers.22.input_layernorm.weight": "model.safetensors",
|
| 449 |
+
"language_model.model.layers.22.linear_attn.A_log": "model.safetensors",
|
| 450 |
+
"language_model.model.layers.22.linear_attn.conv1d.weight": "model.safetensors",
|
| 451 |
+
"language_model.model.layers.22.linear_attn.dt_bias": "model.safetensors",
|
| 452 |
+
"language_model.model.layers.22.linear_attn.in_proj_a.biases": "model.safetensors",
|
| 453 |
+
"language_model.model.layers.22.linear_attn.in_proj_a.scales": "model.safetensors",
|
| 454 |
+
"language_model.model.layers.22.linear_attn.in_proj_a.weight": "model.safetensors",
|
| 455 |
+
"language_model.model.layers.22.linear_attn.in_proj_b.biases": "model.safetensors",
|
| 456 |
+
"language_model.model.layers.22.linear_attn.in_proj_b.scales": "model.safetensors",
|
| 457 |
+
"language_model.model.layers.22.linear_attn.in_proj_b.weight": "model.safetensors",
|
| 458 |
+
"language_model.model.layers.22.linear_attn.in_proj_qkv.biases": "model.safetensors",
|
| 459 |
+
"language_model.model.layers.22.linear_attn.in_proj_qkv.scales": "model.safetensors",
|
| 460 |
+
"language_model.model.layers.22.linear_attn.in_proj_qkv.weight": "model.safetensors",
|
| 461 |
+
"language_model.model.layers.22.linear_attn.in_proj_z.biases": "model.safetensors",
|
| 462 |
+
"language_model.model.layers.22.linear_attn.in_proj_z.scales": "model.safetensors",
|
| 463 |
+
"language_model.model.layers.22.linear_attn.in_proj_z.weight": "model.safetensors",
|
| 464 |
+
"language_model.model.layers.22.linear_attn.norm.weight": "model.safetensors",
|
| 465 |
+
"language_model.model.layers.22.linear_attn.out_proj.biases": "model.safetensors",
|
| 466 |
+
"language_model.model.layers.22.linear_attn.out_proj.scales": "model.safetensors",
|
| 467 |
+
"language_model.model.layers.22.linear_attn.out_proj.weight": "model.safetensors",
|
| 468 |
+
"language_model.model.layers.22.mlp.down_proj.biases": "model.safetensors",
|
| 469 |
+
"language_model.model.layers.22.mlp.down_proj.scales": "model.safetensors",
|
| 470 |
+
"language_model.model.layers.22.mlp.down_proj.weight": "model.safetensors",
|
| 471 |
+
"language_model.model.layers.22.mlp.gate_proj.biases": "model.safetensors",
|
| 472 |
+
"language_model.model.layers.22.mlp.gate_proj.scales": "model.safetensors",
|
| 473 |
+
"language_model.model.layers.22.mlp.gate_proj.weight": "model.safetensors",
|
| 474 |
+
"language_model.model.layers.22.mlp.up_proj.biases": "model.safetensors",
|
| 475 |
+
"language_model.model.layers.22.mlp.up_proj.scales": "model.safetensors",
|
| 476 |
+
"language_model.model.layers.22.mlp.up_proj.weight": "model.safetensors",
|
| 477 |
+
"language_model.model.layers.22.post_attention_layernorm.weight": "model.safetensors",
|
| 478 |
+
"language_model.model.layers.23.input_layernorm.weight": "model.safetensors",
|
| 479 |
+
"language_model.model.layers.23.mlp.down_proj.biases": "model.safetensors",
|
| 480 |
+
"language_model.model.layers.23.mlp.down_proj.scales": "model.safetensors",
|
| 481 |
+
"language_model.model.layers.23.mlp.down_proj.weight": "model.safetensors",
|
| 482 |
+
"language_model.model.layers.23.mlp.gate_proj.biases": "model.safetensors",
|
| 483 |
+
"language_model.model.layers.23.mlp.gate_proj.scales": "model.safetensors",
|
| 484 |
+
"language_model.model.layers.23.mlp.gate_proj.weight": "model.safetensors",
|
| 485 |
+
"language_model.model.layers.23.mlp.up_proj.biases": "model.safetensors",
|
| 486 |
+
"language_model.model.layers.23.mlp.up_proj.scales": "model.safetensors",
|
| 487 |
+
"language_model.model.layers.23.mlp.up_proj.weight": "model.safetensors",
|
| 488 |
+
"language_model.model.layers.23.post_attention_layernorm.weight": "model.safetensors",
|
| 489 |
+
"language_model.model.layers.23.self_attn.k_norm.weight": "model.safetensors",
|
| 490 |
+
"language_model.model.layers.23.self_attn.k_proj.biases": "model.safetensors",
|
| 491 |
+
"language_model.model.layers.23.self_attn.k_proj.scales": "model.safetensors",
|
| 492 |
+
"language_model.model.layers.23.self_attn.k_proj.weight": "model.safetensors",
|
| 493 |
+
"language_model.model.layers.23.self_attn.o_proj.biases": "model.safetensors",
|
| 494 |
+
"language_model.model.layers.23.self_attn.o_proj.scales": "model.safetensors",
|
| 495 |
+
"language_model.model.layers.23.self_attn.o_proj.weight": "model.safetensors",
|
| 496 |
+
"language_model.model.layers.23.self_attn.q_norm.weight": "model.safetensors",
|
| 497 |
+
"language_model.model.layers.23.self_attn.q_proj.biases": "model.safetensors",
|
| 498 |
+
"language_model.model.layers.23.self_attn.q_proj.scales": "model.safetensors",
|
| 499 |
+
"language_model.model.layers.23.self_attn.q_proj.weight": "model.safetensors",
|
| 500 |
+
"language_model.model.layers.23.self_attn.v_proj.biases": "model.safetensors",
|
| 501 |
+
"language_model.model.layers.23.self_attn.v_proj.scales": "model.safetensors",
|
| 502 |
+
"language_model.model.layers.23.self_attn.v_proj.weight": "model.safetensors",
|
| 503 |
+
"language_model.model.layers.24.input_layernorm.weight": "model.safetensors",
|
| 504 |
+
"language_model.model.layers.24.linear_attn.A_log": "model.safetensors",
|
| 505 |
+
"language_model.model.layers.24.linear_attn.conv1d.weight": "model.safetensors",
|
| 506 |
+
"language_model.model.layers.24.linear_attn.dt_bias": "model.safetensors",
|
| 507 |
+
"language_model.model.layers.24.linear_attn.in_proj_a.biases": "model.safetensors",
|
| 508 |
+
"language_model.model.layers.24.linear_attn.in_proj_a.scales": "model.safetensors",
|
| 509 |
+
"language_model.model.layers.24.linear_attn.in_proj_a.weight": "model.safetensors",
|
| 510 |
+
"language_model.model.layers.24.linear_attn.in_proj_b.biases": "model.safetensors",
|
| 511 |
+
"language_model.model.layers.24.linear_attn.in_proj_b.scales": "model.safetensors",
|
| 512 |
+
"language_model.model.layers.24.linear_attn.in_proj_b.weight": "model.safetensors",
|
| 513 |
+
"language_model.model.layers.24.linear_attn.in_proj_qkv.biases": "model.safetensors",
|
| 514 |
+
"language_model.model.layers.24.linear_attn.in_proj_qkv.scales": "model.safetensors",
|
| 515 |
+
"language_model.model.layers.24.linear_attn.in_proj_qkv.weight": "model.safetensors",
|
| 516 |
+
"language_model.model.layers.24.linear_attn.in_proj_z.biases": "model.safetensors",
|
| 517 |
+
"language_model.model.layers.24.linear_attn.in_proj_z.scales": "model.safetensors",
|
| 518 |
+
"language_model.model.layers.24.linear_attn.in_proj_z.weight": "model.safetensors",
|
| 519 |
+
"language_model.model.layers.24.linear_attn.norm.weight": "model.safetensors",
|
| 520 |
+
"language_model.model.layers.24.linear_attn.out_proj.biases": "model.safetensors",
|
| 521 |
+
"language_model.model.layers.24.linear_attn.out_proj.scales": "model.safetensors",
|
| 522 |
+
"language_model.model.layers.24.linear_attn.out_proj.weight": "model.safetensors",
|
| 523 |
+
"language_model.model.layers.24.mlp.down_proj.biases": "model.safetensors",
|
| 524 |
+
"language_model.model.layers.24.mlp.down_proj.scales": "model.safetensors",
|
| 525 |
+
"language_model.model.layers.24.mlp.down_proj.weight": "model.safetensors",
|
| 526 |
+
"language_model.model.layers.24.mlp.gate_proj.biases": "model.safetensors",
|
| 527 |
+
"language_model.model.layers.24.mlp.gate_proj.scales": "model.safetensors",
|
| 528 |
+
"language_model.model.layers.24.mlp.gate_proj.weight": "model.safetensors",
|
| 529 |
+
"language_model.model.layers.24.mlp.up_proj.biases": "model.safetensors",
|
| 530 |
+
"language_model.model.layers.24.mlp.up_proj.scales": "model.safetensors",
|
| 531 |
+
"language_model.model.layers.24.mlp.up_proj.weight": "model.safetensors",
|
| 532 |
+
"language_model.model.layers.24.post_attention_layernorm.weight": "model.safetensors",
|
| 533 |
+
"language_model.model.layers.25.input_layernorm.weight": "model.safetensors",
|
| 534 |
+
"language_model.model.layers.25.linear_attn.A_log": "model.safetensors",
|
| 535 |
+
"language_model.model.layers.25.linear_attn.conv1d.weight": "model.safetensors",
|
| 536 |
+
"language_model.model.layers.25.linear_attn.dt_bias": "model.safetensors",
|
| 537 |
+
"language_model.model.layers.25.linear_attn.in_proj_a.biases": "model.safetensors",
|
| 538 |
+
"language_model.model.layers.25.linear_attn.in_proj_a.scales": "model.safetensors",
|
| 539 |
+
"language_model.model.layers.25.linear_attn.in_proj_a.weight": "model.safetensors",
|
| 540 |
+
"language_model.model.layers.25.linear_attn.in_proj_b.biases": "model.safetensors",
|
| 541 |
+
"language_model.model.layers.25.linear_attn.in_proj_b.scales": "model.safetensors",
|
| 542 |
+
"language_model.model.layers.25.linear_attn.in_proj_b.weight": "model.safetensors",
|
| 543 |
+
"language_model.model.layers.25.linear_attn.in_proj_qkv.biases": "model.safetensors",
|
| 544 |
+
"language_model.model.layers.25.linear_attn.in_proj_qkv.scales": "model.safetensors",
|
| 545 |
+
"language_model.model.layers.25.linear_attn.in_proj_qkv.weight": "model.safetensors",
|
| 546 |
+
"language_model.model.layers.25.linear_attn.in_proj_z.biases": "model.safetensors",
|
| 547 |
+
"language_model.model.layers.25.linear_attn.in_proj_z.scales": "model.safetensors",
|
| 548 |
+
"language_model.model.layers.25.linear_attn.in_proj_z.weight": "model.safetensors",
|
| 549 |
+
"language_model.model.layers.25.linear_attn.norm.weight": "model.safetensors",
|
| 550 |
+
"language_model.model.layers.25.linear_attn.out_proj.biases": "model.safetensors",
|
| 551 |
+
"language_model.model.layers.25.linear_attn.out_proj.scales": "model.safetensors",
|
| 552 |
+
"language_model.model.layers.25.linear_attn.out_proj.weight": "model.safetensors",
|
| 553 |
+
"language_model.model.layers.25.mlp.down_proj.biases": "model.safetensors",
|
| 554 |
+
"language_model.model.layers.25.mlp.down_proj.scales": "model.safetensors",
|
| 555 |
+
"language_model.model.layers.25.mlp.down_proj.weight": "model.safetensors",
|
| 556 |
+
"language_model.model.layers.25.mlp.gate_proj.biases": "model.safetensors",
|
| 557 |
+
"language_model.model.layers.25.mlp.gate_proj.scales": "model.safetensors",
|
| 558 |
+
"language_model.model.layers.25.mlp.gate_proj.weight": "model.safetensors",
|
| 559 |
+
"language_model.model.layers.25.mlp.up_proj.biases": "model.safetensors",
|
| 560 |
+
"language_model.model.layers.25.mlp.up_proj.scales": "model.safetensors",
|
| 561 |
+
"language_model.model.layers.25.mlp.up_proj.weight": "model.safetensors",
|
| 562 |
+
"language_model.model.layers.25.post_attention_layernorm.weight": "model.safetensors",
|
| 563 |
+
"language_model.model.layers.26.input_layernorm.weight": "model.safetensors",
|
| 564 |
+
"language_model.model.layers.26.linear_attn.A_log": "model.safetensors",
|
| 565 |
+
"language_model.model.layers.26.linear_attn.conv1d.weight": "model.safetensors",
|
| 566 |
+
"language_model.model.layers.26.linear_attn.dt_bias": "model.safetensors",
|
| 567 |
+
"language_model.model.layers.26.linear_attn.in_proj_a.biases": "model.safetensors",
|
| 568 |
+
"language_model.model.layers.26.linear_attn.in_proj_a.scales": "model.safetensors",
|
| 569 |
+
"language_model.model.layers.26.linear_attn.in_proj_a.weight": "model.safetensors",
|
| 570 |
+
"language_model.model.layers.26.linear_attn.in_proj_b.biases": "model.safetensors",
|
| 571 |
+
"language_model.model.layers.26.linear_attn.in_proj_b.scales": "model.safetensors",
|
| 572 |
+
"language_model.model.layers.26.linear_attn.in_proj_b.weight": "model.safetensors",
|
| 573 |
+
"language_model.model.layers.26.linear_attn.in_proj_qkv.biases": "model.safetensors",
|
| 574 |
+
"language_model.model.layers.26.linear_attn.in_proj_qkv.scales": "model.safetensors",
|
| 575 |
+
"language_model.model.layers.26.linear_attn.in_proj_qkv.weight": "model.safetensors",
|
| 576 |
+
"language_model.model.layers.26.linear_attn.in_proj_z.biases": "model.safetensors",
|
| 577 |
+
"language_model.model.layers.26.linear_attn.in_proj_z.scales": "model.safetensors",
|
| 578 |
+
"language_model.model.layers.26.linear_attn.in_proj_z.weight": "model.safetensors",
|
| 579 |
+
"language_model.model.layers.26.linear_attn.norm.weight": "model.safetensors",
|
| 580 |
+
"language_model.model.layers.26.linear_attn.out_proj.biases": "model.safetensors",
|
| 581 |
+
"language_model.model.layers.26.linear_attn.out_proj.scales": "model.safetensors",
|
| 582 |
+
"language_model.model.layers.26.linear_attn.out_proj.weight": "model.safetensors",
|
| 583 |
+
"language_model.model.layers.26.mlp.down_proj.biases": "model.safetensors",
|
| 584 |
+
"language_model.model.layers.26.mlp.down_proj.scales": "model.safetensors",
|
| 585 |
+
"language_model.model.layers.26.mlp.down_proj.weight": "model.safetensors",
|
| 586 |
+
"language_model.model.layers.26.mlp.gate_proj.biases": "model.safetensors",
|
| 587 |
+
"language_model.model.layers.26.mlp.gate_proj.scales": "model.safetensors",
|
| 588 |
+
"language_model.model.layers.26.mlp.gate_proj.weight": "model.safetensors",
|
| 589 |
+
"language_model.model.layers.26.mlp.up_proj.biases": "model.safetensors",
|
| 590 |
+
"language_model.model.layers.26.mlp.up_proj.scales": "model.safetensors",
|
| 591 |
+
"language_model.model.layers.26.mlp.up_proj.weight": "model.safetensors",
|
| 592 |
+
"language_model.model.layers.26.post_attention_layernorm.weight": "model.safetensors",
|
| 593 |
+
"language_model.model.layers.27.input_layernorm.weight": "model.safetensors",
|
| 594 |
+
"language_model.model.layers.27.mlp.down_proj.biases": "model.safetensors",
|
| 595 |
+
"language_model.model.layers.27.mlp.down_proj.scales": "model.safetensors",
|
| 596 |
+
"language_model.model.layers.27.mlp.down_proj.weight": "model.safetensors",
|
| 597 |
+
"language_model.model.layers.27.mlp.gate_proj.biases": "model.safetensors",
|
| 598 |
+
"language_model.model.layers.27.mlp.gate_proj.scales": "model.safetensors",
|
| 599 |
+
"language_model.model.layers.27.mlp.gate_proj.weight": "model.safetensors",
|
| 600 |
+
"language_model.model.layers.27.mlp.up_proj.biases": "model.safetensors",
|
| 601 |
+
"language_model.model.layers.27.mlp.up_proj.scales": "model.safetensors",
|
| 602 |
+
"language_model.model.layers.27.mlp.up_proj.weight": "model.safetensors",
|
| 603 |
+
"language_model.model.layers.27.post_attention_layernorm.weight": "model.safetensors",
|
| 604 |
+
"language_model.model.layers.27.self_attn.k_norm.weight": "model.safetensors",
|
| 605 |
+
"language_model.model.layers.27.self_attn.k_proj.biases": "model.safetensors",
|
| 606 |
+
"language_model.model.layers.27.self_attn.k_proj.scales": "model.safetensors",
|
| 607 |
+
"language_model.model.layers.27.self_attn.k_proj.weight": "model.safetensors",
|
| 608 |
+
"language_model.model.layers.27.self_attn.o_proj.biases": "model.safetensors",
|
| 609 |
+
"language_model.model.layers.27.self_attn.o_proj.scales": "model.safetensors",
|
| 610 |
+
"language_model.model.layers.27.self_attn.o_proj.weight": "model.safetensors",
|
| 611 |
+
"language_model.model.layers.27.self_attn.q_norm.weight": "model.safetensors",
|
| 612 |
+
"language_model.model.layers.27.self_attn.q_proj.biases": "model.safetensors",
|
| 613 |
+
"language_model.model.layers.27.self_attn.q_proj.scales": "model.safetensors",
|
| 614 |
+
"language_model.model.layers.27.self_attn.q_proj.weight": "model.safetensors",
|
| 615 |
+
"language_model.model.layers.27.self_attn.v_proj.biases": "model.safetensors",
|
| 616 |
+
"language_model.model.layers.27.self_attn.v_proj.scales": "model.safetensors",
|
| 617 |
+
"language_model.model.layers.27.self_attn.v_proj.weight": "model.safetensors",
|
| 618 |
+
"language_model.model.layers.28.input_layernorm.weight": "model.safetensors",
|
| 619 |
+
"language_model.model.layers.28.linear_attn.A_log": "model.safetensors",
|
| 620 |
+
"language_model.model.layers.28.linear_attn.conv1d.weight": "model.safetensors",
|
| 621 |
+
"language_model.model.layers.28.linear_attn.dt_bias": "model.safetensors",
|
| 622 |
+
"language_model.model.layers.28.linear_attn.in_proj_a.biases": "model.safetensors",
|
| 623 |
+
"language_model.model.layers.28.linear_attn.in_proj_a.scales": "model.safetensors",
|
| 624 |
+
"language_model.model.layers.28.linear_attn.in_proj_a.weight": "model.safetensors",
|
| 625 |
+
"language_model.model.layers.28.linear_attn.in_proj_b.biases": "model.safetensors",
|
| 626 |
+
"language_model.model.layers.28.linear_attn.in_proj_b.scales": "model.safetensors",
|
| 627 |
+
"language_model.model.layers.28.linear_attn.in_proj_b.weight": "model.safetensors",
|
| 628 |
+
"language_model.model.layers.28.linear_attn.in_proj_qkv.biases": "model.safetensors",
|
| 629 |
+
"language_model.model.layers.28.linear_attn.in_proj_qkv.scales": "model.safetensors",
|
| 630 |
+
"language_model.model.layers.28.linear_attn.in_proj_qkv.weight": "model.safetensors",
|
| 631 |
+
"language_model.model.layers.28.linear_attn.in_proj_z.biases": "model.safetensors",
|
| 632 |
+
"language_model.model.layers.28.linear_attn.in_proj_z.scales": "model.safetensors",
|
| 633 |
+
"language_model.model.layers.28.linear_attn.in_proj_z.weight": "model.safetensors",
|
| 634 |
+
"language_model.model.layers.28.linear_attn.norm.weight": "model.safetensors",
|
| 635 |
+
"language_model.model.layers.28.linear_attn.out_proj.biases": "model.safetensors",
|
| 636 |
+
"language_model.model.layers.28.linear_attn.out_proj.scales": "model.safetensors",
|
| 637 |
+
"language_model.model.layers.28.linear_attn.out_proj.weight": "model.safetensors",
|
| 638 |
+
"language_model.model.layers.28.mlp.down_proj.biases": "model.safetensors",
|
| 639 |
+
"language_model.model.layers.28.mlp.down_proj.scales": "model.safetensors",
|
| 640 |
+
"language_model.model.layers.28.mlp.down_proj.weight": "model.safetensors",
|
| 641 |
+
"language_model.model.layers.28.mlp.gate_proj.biases": "model.safetensors",
|
| 642 |
+
"language_model.model.layers.28.mlp.gate_proj.scales": "model.safetensors",
|
| 643 |
+
"language_model.model.layers.28.mlp.gate_proj.weight": "model.safetensors",
|
| 644 |
+
"language_model.model.layers.28.mlp.up_proj.biases": "model.safetensors",
|
| 645 |
+
"language_model.model.layers.28.mlp.up_proj.scales": "model.safetensors",
|
| 646 |
+
"language_model.model.layers.28.mlp.up_proj.weight": "model.safetensors",
|
| 647 |
+
"language_model.model.layers.28.post_attention_layernorm.weight": "model.safetensors",
|
| 648 |
+
"language_model.model.layers.29.input_layernorm.weight": "model.safetensors",
|
| 649 |
+
"language_model.model.layers.29.linear_attn.A_log": "model.safetensors",
|
| 650 |
+
"language_model.model.layers.29.linear_attn.conv1d.weight": "model.safetensors",
|
| 651 |
+
"language_model.model.layers.29.linear_attn.dt_bias": "model.safetensors",
|
| 652 |
+
"language_model.model.layers.29.linear_attn.in_proj_a.biases": "model.safetensors",
|
| 653 |
+
"language_model.model.layers.29.linear_attn.in_proj_a.scales": "model.safetensors",
|
| 654 |
+
"language_model.model.layers.29.linear_attn.in_proj_a.weight": "model.safetensors",
|
| 655 |
+
"language_model.model.layers.29.linear_attn.in_proj_b.biases": "model.safetensors",
|
| 656 |
+
"language_model.model.layers.29.linear_attn.in_proj_b.scales": "model.safetensors",
|
| 657 |
+
"language_model.model.layers.29.linear_attn.in_proj_b.weight": "model.safetensors",
|
| 658 |
+
"language_model.model.layers.29.linear_attn.in_proj_qkv.biases": "model.safetensors",
|
| 659 |
+
"language_model.model.layers.29.linear_attn.in_proj_qkv.scales": "model.safetensors",
|
| 660 |
+
"language_model.model.layers.29.linear_attn.in_proj_qkv.weight": "model.safetensors",
|
| 661 |
+
"language_model.model.layers.29.linear_attn.in_proj_z.biases": "model.safetensors",
|
| 662 |
+
"language_model.model.layers.29.linear_attn.in_proj_z.scales": "model.safetensors",
|
| 663 |
+
"language_model.model.layers.29.linear_attn.in_proj_z.weight": "model.safetensors",
|
| 664 |
+
"language_model.model.layers.29.linear_attn.norm.weight": "model.safetensors",
|
| 665 |
+
"language_model.model.layers.29.linear_attn.out_proj.biases": "model.safetensors",
|
| 666 |
+
"language_model.model.layers.29.linear_attn.out_proj.scales": "model.safetensors",
|
| 667 |
+
"language_model.model.layers.29.linear_attn.out_proj.weight": "model.safetensors",
|
| 668 |
+
"language_model.model.layers.29.mlp.down_proj.biases": "model.safetensors",
|
| 669 |
+
"language_model.model.layers.29.mlp.down_proj.scales": "model.safetensors",
|
| 670 |
+
"language_model.model.layers.29.mlp.down_proj.weight": "model.safetensors",
|
| 671 |
+
"language_model.model.layers.29.mlp.gate_proj.biases": "model.safetensors",
|
| 672 |
+
"language_model.model.layers.29.mlp.gate_proj.scales": "model.safetensors",
|
| 673 |
+
"language_model.model.layers.29.mlp.gate_proj.weight": "model.safetensors",
|
| 674 |
+
"language_model.model.layers.29.mlp.up_proj.biases": "model.safetensors",
|
| 675 |
+
"language_model.model.layers.29.mlp.up_proj.scales": "model.safetensors",
|
| 676 |
+
"language_model.model.layers.29.mlp.up_proj.weight": "model.safetensors",
|
| 677 |
+
"language_model.model.layers.29.post_attention_layernorm.weight": "model.safetensors",
|
| 678 |
+
"language_model.model.layers.3.input_layernorm.weight": "model.safetensors",
|
| 679 |
+
"language_model.model.layers.3.mlp.down_proj.biases": "model.safetensors",
|
| 680 |
+
"language_model.model.layers.3.mlp.down_proj.scales": "model.safetensors",
|
| 681 |
+
"language_model.model.layers.3.mlp.down_proj.weight": "model.safetensors",
|
| 682 |
+
"language_model.model.layers.3.mlp.gate_proj.biases": "model.safetensors",
|
| 683 |
+
"language_model.model.layers.3.mlp.gate_proj.scales": "model.safetensors",
|
| 684 |
+
"language_model.model.layers.3.mlp.gate_proj.weight": "model.safetensors",
|
| 685 |
+
"language_model.model.layers.3.mlp.up_proj.biases": "model.safetensors",
|
| 686 |
+
"language_model.model.layers.3.mlp.up_proj.scales": "model.safetensors",
|
| 687 |
+
"language_model.model.layers.3.mlp.up_proj.weight": "model.safetensors",
|
| 688 |
+
"language_model.model.layers.3.post_attention_layernorm.weight": "model.safetensors",
|
| 689 |
+
"language_model.model.layers.3.self_attn.k_norm.weight": "model.safetensors",
|
| 690 |
+
"language_model.model.layers.3.self_attn.k_proj.biases": "model.safetensors",
|
| 691 |
+
"language_model.model.layers.3.self_attn.k_proj.scales": "model.safetensors",
|
| 692 |
+
"language_model.model.layers.3.self_attn.k_proj.weight": "model.safetensors",
|
| 693 |
+
"language_model.model.layers.3.self_attn.o_proj.biases": "model.safetensors",
|
| 694 |
+
"language_model.model.layers.3.self_attn.o_proj.scales": "model.safetensors",
|
| 695 |
+
"language_model.model.layers.3.self_attn.o_proj.weight": "model.safetensors",
|
| 696 |
+
"language_model.model.layers.3.self_attn.q_norm.weight": "model.safetensors",
|
| 697 |
+
"language_model.model.layers.3.self_attn.q_proj.biases": "model.safetensors",
|
| 698 |
+
"language_model.model.layers.3.self_attn.q_proj.scales": "model.safetensors",
|
| 699 |
+
"language_model.model.layers.3.self_attn.q_proj.weight": "model.safetensors",
|
| 700 |
+
"language_model.model.layers.3.self_attn.v_proj.biases": "model.safetensors",
|
| 701 |
+
"language_model.model.layers.3.self_attn.v_proj.scales": "model.safetensors",
|
| 702 |
+
"language_model.model.layers.3.self_attn.v_proj.weight": "model.safetensors",
|
| 703 |
+
"language_model.model.layers.30.input_layernorm.weight": "model.safetensors",
|
| 704 |
+
"language_model.model.layers.30.linear_attn.A_log": "model.safetensors",
|
| 705 |
+
"language_model.model.layers.30.linear_attn.conv1d.weight": "model.safetensors",
|
| 706 |
+
"language_model.model.layers.30.linear_attn.dt_bias": "model.safetensors",
|
| 707 |
+
"language_model.model.layers.30.linear_attn.in_proj_a.biases": "model.safetensors",
|
| 708 |
+
"language_model.model.layers.30.linear_attn.in_proj_a.scales": "model.safetensors",
|
| 709 |
+
"language_model.model.layers.30.linear_attn.in_proj_a.weight": "model.safetensors",
|
| 710 |
+
"language_model.model.layers.30.linear_attn.in_proj_b.biases": "model.safetensors",
|
| 711 |
+
"language_model.model.layers.30.linear_attn.in_proj_b.scales": "model.safetensors",
|
| 712 |
+
"language_model.model.layers.30.linear_attn.in_proj_b.weight": "model.safetensors",
|
| 713 |
+
"language_model.model.layers.30.linear_attn.in_proj_qkv.biases": "model.safetensors",
|
| 714 |
+
"language_model.model.layers.30.linear_attn.in_proj_qkv.scales": "model.safetensors",
|
| 715 |
+
"language_model.model.layers.30.linear_attn.in_proj_qkv.weight": "model.safetensors",
|
| 716 |
+
"language_model.model.layers.30.linear_attn.in_proj_z.biases": "model.safetensors",
|
| 717 |
+
"language_model.model.layers.30.linear_attn.in_proj_z.scales": "model.safetensors",
|
| 718 |
+
"language_model.model.layers.30.linear_attn.in_proj_z.weight": "model.safetensors",
|
| 719 |
+
"language_model.model.layers.30.linear_attn.norm.weight": "model.safetensors",
|
| 720 |
+
"language_model.model.layers.30.linear_attn.out_proj.biases": "model.safetensors",
|
| 721 |
+
"language_model.model.layers.30.linear_attn.out_proj.scales": "model.safetensors",
|
| 722 |
+
"language_model.model.layers.30.linear_attn.out_proj.weight": "model.safetensors",
|
| 723 |
+
"language_model.model.layers.30.mlp.down_proj.biases": "model.safetensors",
|
| 724 |
+
"language_model.model.layers.30.mlp.down_proj.scales": "model.safetensors",
|
| 725 |
+
"language_model.model.layers.30.mlp.down_proj.weight": "model.safetensors",
|
| 726 |
+
"language_model.model.layers.30.mlp.gate_proj.biases": "model.safetensors",
|
| 727 |
+
"language_model.model.layers.30.mlp.gate_proj.scales": "model.safetensors",
|
| 728 |
+
"language_model.model.layers.30.mlp.gate_proj.weight": "model.safetensors",
|
| 729 |
+
"language_model.model.layers.30.mlp.up_proj.biases": "model.safetensors",
|
| 730 |
+
"language_model.model.layers.30.mlp.up_proj.scales": "model.safetensors",
|
| 731 |
+
"language_model.model.layers.30.mlp.up_proj.weight": "model.safetensors",
|
| 732 |
+
"language_model.model.layers.30.post_attention_layernorm.weight": "model.safetensors",
|
| 733 |
+
"language_model.model.layers.31.input_layernorm.weight": "model.safetensors",
|
| 734 |
+
"language_model.model.layers.31.mlp.down_proj.biases": "model.safetensors",
|
| 735 |
+
"language_model.model.layers.31.mlp.down_proj.scales": "model.safetensors",
|
| 736 |
+
"language_model.model.layers.31.mlp.down_proj.weight": "model.safetensors",
|
| 737 |
+
"language_model.model.layers.31.mlp.gate_proj.biases": "model.safetensors",
|
| 738 |
+
"language_model.model.layers.31.mlp.gate_proj.scales": "model.safetensors",
|
| 739 |
+
"language_model.model.layers.31.mlp.gate_proj.weight": "model.safetensors",
|
| 740 |
+
"language_model.model.layers.31.mlp.up_proj.biases": "model.safetensors",
|
| 741 |
+
"language_model.model.layers.31.mlp.up_proj.scales": "model.safetensors",
|
| 742 |
+
"language_model.model.layers.31.mlp.up_proj.weight": "model.safetensors",
|
| 743 |
+
"language_model.model.layers.31.post_attention_layernorm.weight": "model.safetensors",
|
| 744 |
+
"language_model.model.layers.31.self_attn.k_norm.weight": "model.safetensors",
|
| 745 |
+
"language_model.model.layers.31.self_attn.k_proj.biases": "model.safetensors",
|
| 746 |
+
"language_model.model.layers.31.self_attn.k_proj.scales": "model.safetensors",
|
| 747 |
+
"language_model.model.layers.31.self_attn.k_proj.weight": "model.safetensors",
|
| 748 |
+
"language_model.model.layers.31.self_attn.o_proj.biases": "model.safetensors",
|
| 749 |
+
"language_model.model.layers.31.self_attn.o_proj.scales": "model.safetensors",
|
| 750 |
+
"language_model.model.layers.31.self_attn.o_proj.weight": "model.safetensors",
|
| 751 |
+
"language_model.model.layers.31.self_attn.q_norm.weight": "model.safetensors",
|
| 752 |
+
"language_model.model.layers.31.self_attn.q_proj.biases": "model.safetensors",
|
| 753 |
+
"language_model.model.layers.31.self_attn.q_proj.scales": "model.safetensors",
|
| 754 |
+
"language_model.model.layers.31.self_attn.q_proj.weight": "model.safetensors",
|
| 755 |
+
"language_model.model.layers.31.self_attn.v_proj.biases": "model.safetensors",
|
| 756 |
+
"language_model.model.layers.31.self_attn.v_proj.scales": "model.safetensors",
|
| 757 |
+
"language_model.model.layers.31.self_attn.v_proj.weight": "model.safetensors",
|
| 758 |
+
"language_model.model.layers.4.input_layernorm.weight": "model.safetensors",
|
| 759 |
+
"language_model.model.layers.4.linear_attn.A_log": "model.safetensors",
|
| 760 |
+
"language_model.model.layers.4.linear_attn.conv1d.weight": "model.safetensors",
|
| 761 |
+
"language_model.model.layers.4.linear_attn.dt_bias": "model.safetensors",
|
| 762 |
+
"language_model.model.layers.4.linear_attn.in_proj_a.biases": "model.safetensors",
|
| 763 |
+
"language_model.model.layers.4.linear_attn.in_proj_a.scales": "model.safetensors",
|
| 764 |
+
"language_model.model.layers.4.linear_attn.in_proj_a.weight": "model.safetensors",
|
| 765 |
+
"language_model.model.layers.4.linear_attn.in_proj_b.biases": "model.safetensors",
|
| 766 |
+
"language_model.model.layers.4.linear_attn.in_proj_b.scales": "model.safetensors",
|
| 767 |
+
"language_model.model.layers.4.linear_attn.in_proj_b.weight": "model.safetensors",
|
| 768 |
+
"language_model.model.layers.4.linear_attn.in_proj_qkv.biases": "model.safetensors",
|
| 769 |
+
"language_model.model.layers.4.linear_attn.in_proj_qkv.scales": "model.safetensors",
|
| 770 |
+
"language_model.model.layers.4.linear_attn.in_proj_qkv.weight": "model.safetensors",
|
| 771 |
+
"language_model.model.layers.4.linear_attn.in_proj_z.biases": "model.safetensors",
|
| 772 |
+
"language_model.model.layers.4.linear_attn.in_proj_z.scales": "model.safetensors",
|
| 773 |
+
"language_model.model.layers.4.linear_attn.in_proj_z.weight": "model.safetensors",
|
| 774 |
+
"language_model.model.layers.4.linear_attn.norm.weight": "model.safetensors",
|
| 775 |
+
"language_model.model.layers.4.linear_attn.out_proj.biases": "model.safetensors",
|
| 776 |
+
"language_model.model.layers.4.linear_attn.out_proj.scales": "model.safetensors",
|
| 777 |
+
"language_model.model.layers.4.linear_attn.out_proj.weight": "model.safetensors",
|
| 778 |
+
"language_model.model.layers.4.mlp.down_proj.biases": "model.safetensors",
|
| 779 |
+
"language_model.model.layers.4.mlp.down_proj.scales": "model.safetensors",
|
| 780 |
+
"language_model.model.layers.4.mlp.down_proj.weight": "model.safetensors",
|
| 781 |
+
"language_model.model.layers.4.mlp.gate_proj.biases": "model.safetensors",
|
| 782 |
+
"language_model.model.layers.4.mlp.gate_proj.scales": "model.safetensors",
|
| 783 |
+
"language_model.model.layers.4.mlp.gate_proj.weight": "model.safetensors",
|
| 784 |
+
"language_model.model.layers.4.mlp.up_proj.biases": "model.safetensors",
|
| 785 |
+
"language_model.model.layers.4.mlp.up_proj.scales": "model.safetensors",
|
| 786 |
+
"language_model.model.layers.4.mlp.up_proj.weight": "model.safetensors",
|
| 787 |
+
"language_model.model.layers.4.post_attention_layernorm.weight": "model.safetensors",
|
| 788 |
+
"language_model.model.layers.5.input_layernorm.weight": "model.safetensors",
|
| 789 |
+
"language_model.model.layers.5.linear_attn.A_log": "model.safetensors",
|
| 790 |
+
"language_model.model.layers.5.linear_attn.conv1d.weight": "model.safetensors",
|
| 791 |
+
"language_model.model.layers.5.linear_attn.dt_bias": "model.safetensors",
|
| 792 |
+
"language_model.model.layers.5.linear_attn.in_proj_a.biases": "model.safetensors",
|
| 793 |
+
"language_model.model.layers.5.linear_attn.in_proj_a.scales": "model.safetensors",
|
| 794 |
+
"language_model.model.layers.5.linear_attn.in_proj_a.weight": "model.safetensors",
|
| 795 |
+
"language_model.model.layers.5.linear_attn.in_proj_b.biases": "model.safetensors",
|
| 796 |
+
"language_model.model.layers.5.linear_attn.in_proj_b.scales": "model.safetensors",
|
| 797 |
+
"language_model.model.layers.5.linear_attn.in_proj_b.weight": "model.safetensors",
|
| 798 |
+
"language_model.model.layers.5.linear_attn.in_proj_qkv.biases": "model.safetensors",
|
| 799 |
+
"language_model.model.layers.5.linear_attn.in_proj_qkv.scales": "model.safetensors",
|
| 800 |
+
"language_model.model.layers.5.linear_attn.in_proj_qkv.weight": "model.safetensors",
|
| 801 |
+
"language_model.model.layers.5.linear_attn.in_proj_z.biases": "model.safetensors",
|
| 802 |
+
"language_model.model.layers.5.linear_attn.in_proj_z.scales": "model.safetensors",
|
| 803 |
+
"language_model.model.layers.5.linear_attn.in_proj_z.weight": "model.safetensors",
|
| 804 |
+
"language_model.model.layers.5.linear_attn.norm.weight": "model.safetensors",
|
| 805 |
+
"language_model.model.layers.5.linear_attn.out_proj.biases": "model.safetensors",
|
| 806 |
+
"language_model.model.layers.5.linear_attn.out_proj.scales": "model.safetensors",
|
| 807 |
+
"language_model.model.layers.5.linear_attn.out_proj.weight": "model.safetensors",
|
| 808 |
+
"language_model.model.layers.5.mlp.down_proj.biases": "model.safetensors",
|
| 809 |
+
"language_model.model.layers.5.mlp.down_proj.scales": "model.safetensors",
|
| 810 |
+
"language_model.model.layers.5.mlp.down_proj.weight": "model.safetensors",
|
| 811 |
+
"language_model.model.layers.5.mlp.gate_proj.biases": "model.safetensors",
|
| 812 |
+
"language_model.model.layers.5.mlp.gate_proj.scales": "model.safetensors",
|
| 813 |
+
"language_model.model.layers.5.mlp.gate_proj.weight": "model.safetensors",
|
| 814 |
+
"language_model.model.layers.5.mlp.up_proj.biases": "model.safetensors",
|
| 815 |
+
"language_model.model.layers.5.mlp.up_proj.scales": "model.safetensors",
|
| 816 |
+
"language_model.model.layers.5.mlp.up_proj.weight": "model.safetensors",
|
| 817 |
+
"language_model.model.layers.5.post_attention_layernorm.weight": "model.safetensors",
|
| 818 |
+
"language_model.model.layers.6.input_layernorm.weight": "model.safetensors",
|
| 819 |
+
"language_model.model.layers.6.linear_attn.A_log": "model.safetensors",
|
| 820 |
+
"language_model.model.layers.6.linear_attn.conv1d.weight": "model.safetensors",
|
| 821 |
+
"language_model.model.layers.6.linear_attn.dt_bias": "model.safetensors",
|
| 822 |
+
"language_model.model.layers.6.linear_attn.in_proj_a.biases": "model.safetensors",
|
| 823 |
+
"language_model.model.layers.6.linear_attn.in_proj_a.scales": "model.safetensors",
|
| 824 |
+
"language_model.model.layers.6.linear_attn.in_proj_a.weight": "model.safetensors",
|
| 825 |
+
"language_model.model.layers.6.linear_attn.in_proj_b.biases": "model.safetensors",
|
| 826 |
+
"language_model.model.layers.6.linear_attn.in_proj_b.scales": "model.safetensors",
|
| 827 |
+
"language_model.model.layers.6.linear_attn.in_proj_b.weight": "model.safetensors",
|
| 828 |
+
"language_model.model.layers.6.linear_attn.in_proj_qkv.biases": "model.safetensors",
|
| 829 |
+
"language_model.model.layers.6.linear_attn.in_proj_qkv.scales": "model.safetensors",
|
| 830 |
+
"language_model.model.layers.6.linear_attn.in_proj_qkv.weight": "model.safetensors",
|
| 831 |
+
"language_model.model.layers.6.linear_attn.in_proj_z.biases": "model.safetensors",
|
| 832 |
+
"language_model.model.layers.6.linear_attn.in_proj_z.scales": "model.safetensors",
|
| 833 |
+
"language_model.model.layers.6.linear_attn.in_proj_z.weight": "model.safetensors",
|
| 834 |
+
"language_model.model.layers.6.linear_attn.norm.weight": "model.safetensors",
|
| 835 |
+
"language_model.model.layers.6.linear_attn.out_proj.biases": "model.safetensors",
|
| 836 |
+
"language_model.model.layers.6.linear_attn.out_proj.scales": "model.safetensors",
|
| 837 |
+
"language_model.model.layers.6.linear_attn.out_proj.weight": "model.safetensors",
|
| 838 |
+
"language_model.model.layers.6.mlp.down_proj.biases": "model.safetensors",
|
| 839 |
+
"language_model.model.layers.6.mlp.down_proj.scales": "model.safetensors",
|
| 840 |
+
"language_model.model.layers.6.mlp.down_proj.weight": "model.safetensors",
|
| 841 |
+
"language_model.model.layers.6.mlp.gate_proj.biases": "model.safetensors",
|
| 842 |
+
"language_model.model.layers.6.mlp.gate_proj.scales": "model.safetensors",
|
| 843 |
+
"language_model.model.layers.6.mlp.gate_proj.weight": "model.safetensors",
|
| 844 |
+
"language_model.model.layers.6.mlp.up_proj.biases": "model.safetensors",
|
| 845 |
+
"language_model.model.layers.6.mlp.up_proj.scales": "model.safetensors",
|
| 846 |
+
"language_model.model.layers.6.mlp.up_proj.weight": "model.safetensors",
|
| 847 |
+
"language_model.model.layers.6.post_attention_layernorm.weight": "model.safetensors",
|
| 848 |
+
"language_model.model.layers.7.input_layernorm.weight": "model.safetensors",
|
| 849 |
+
"language_model.model.layers.7.mlp.down_proj.biases": "model.safetensors",
|
| 850 |
+
"language_model.model.layers.7.mlp.down_proj.scales": "model.safetensors",
|
| 851 |
+
"language_model.model.layers.7.mlp.down_proj.weight": "model.safetensors",
|
| 852 |
+
"language_model.model.layers.7.mlp.gate_proj.biases": "model.safetensors",
|
| 853 |
+
"language_model.model.layers.7.mlp.gate_proj.scales": "model.safetensors",
|
| 854 |
+
"language_model.model.layers.7.mlp.gate_proj.weight": "model.safetensors",
|
| 855 |
+
"language_model.model.layers.7.mlp.up_proj.biases": "model.safetensors",
|
| 856 |
+
"language_model.model.layers.7.mlp.up_proj.scales": "model.safetensors",
|
| 857 |
+
"language_model.model.layers.7.mlp.up_proj.weight": "model.safetensors",
|
| 858 |
+
"language_model.model.layers.7.post_attention_layernorm.weight": "model.safetensors",
|
| 859 |
+
"language_model.model.layers.7.self_attn.k_norm.weight": "model.safetensors",
|
| 860 |
+
"language_model.model.layers.7.self_attn.k_proj.biases": "model.safetensors",
|
| 861 |
+
"language_model.model.layers.7.self_attn.k_proj.scales": "model.safetensors",
|
| 862 |
+
"language_model.model.layers.7.self_attn.k_proj.weight": "model.safetensors",
|
| 863 |
+
"language_model.model.layers.7.self_attn.o_proj.biases": "model.safetensors",
|
| 864 |
+
"language_model.model.layers.7.self_attn.o_proj.scales": "model.safetensors",
|
| 865 |
+
"language_model.model.layers.7.self_attn.o_proj.weight": "model.safetensors",
|
| 866 |
+
"language_model.model.layers.7.self_attn.q_norm.weight": "model.safetensors",
|
| 867 |
+
"language_model.model.layers.7.self_attn.q_proj.biases": "model.safetensors",
|
| 868 |
+
"language_model.model.layers.7.self_attn.q_proj.scales": "model.safetensors",
|
| 869 |
+
"language_model.model.layers.7.self_attn.q_proj.weight": "model.safetensors",
|
| 870 |
+
"language_model.model.layers.7.self_attn.v_proj.biases": "model.safetensors",
|
| 871 |
+
"language_model.model.layers.7.self_attn.v_proj.scales": "model.safetensors",
|
| 872 |
+
"language_model.model.layers.7.self_attn.v_proj.weight": "model.safetensors",
|
| 873 |
+
"language_model.model.layers.8.input_layernorm.weight": "model.safetensors",
|
| 874 |
+
"language_model.model.layers.8.linear_attn.A_log": "model.safetensors",
|
| 875 |
+
"language_model.model.layers.8.linear_attn.conv1d.weight": "model.safetensors",
|
| 876 |
+
"language_model.model.layers.8.linear_attn.dt_bias": "model.safetensors",
|
| 877 |
+
"language_model.model.layers.8.linear_attn.in_proj_a.biases": "model.safetensors",
|
| 878 |
+
"language_model.model.layers.8.linear_attn.in_proj_a.scales": "model.safetensors",
|
| 879 |
+
"language_model.model.layers.8.linear_attn.in_proj_a.weight": "model.safetensors",
|
| 880 |
+
"language_model.model.layers.8.linear_attn.in_proj_b.biases": "model.safetensors",
|
| 881 |
+
"language_model.model.layers.8.linear_attn.in_proj_b.scales": "model.safetensors",
|
| 882 |
+
"language_model.model.layers.8.linear_attn.in_proj_b.weight": "model.safetensors",
|
| 883 |
+
"language_model.model.layers.8.linear_attn.in_proj_qkv.biases": "model.safetensors",
|
| 884 |
+
"language_model.model.layers.8.linear_attn.in_proj_qkv.scales": "model.safetensors",
|
| 885 |
+
"language_model.model.layers.8.linear_attn.in_proj_qkv.weight": "model.safetensors",
|
| 886 |
+
"language_model.model.layers.8.linear_attn.in_proj_z.biases": "model.safetensors",
|
| 887 |
+
"language_model.model.layers.8.linear_attn.in_proj_z.scales": "model.safetensors",
|
| 888 |
+
"language_model.model.layers.8.linear_attn.in_proj_z.weight": "model.safetensors",
|
| 889 |
+
"language_model.model.layers.8.linear_attn.norm.weight": "model.safetensors",
|
| 890 |
+
"language_model.model.layers.8.linear_attn.out_proj.biases": "model.safetensors",
|
| 891 |
+
"language_model.model.layers.8.linear_attn.out_proj.scales": "model.safetensors",
|
| 892 |
+
"language_model.model.layers.8.linear_attn.out_proj.weight": "model.safetensors",
|
| 893 |
+
"language_model.model.layers.8.mlp.down_proj.biases": "model.safetensors",
|
| 894 |
+
"language_model.model.layers.8.mlp.down_proj.scales": "model.safetensors",
|
| 895 |
+
"language_model.model.layers.8.mlp.down_proj.weight": "model.safetensors",
|
| 896 |
+
"language_model.model.layers.8.mlp.gate_proj.biases": "model.safetensors",
|
| 897 |
+
"language_model.model.layers.8.mlp.gate_proj.scales": "model.safetensors",
|
| 898 |
+
"language_model.model.layers.8.mlp.gate_proj.weight": "model.safetensors",
|
| 899 |
+
"language_model.model.layers.8.mlp.up_proj.biases": "model.safetensors",
|
| 900 |
+
"language_model.model.layers.8.mlp.up_proj.scales": "model.safetensors",
|
| 901 |
+
"language_model.model.layers.8.mlp.up_proj.weight": "model.safetensors",
|
| 902 |
+
"language_model.model.layers.8.post_attention_layernorm.weight": "model.safetensors",
|
| 903 |
+
"language_model.model.layers.9.input_layernorm.weight": "model.safetensors",
|
| 904 |
+
"language_model.model.layers.9.linear_attn.A_log": "model.safetensors",
|
| 905 |
+
"language_model.model.layers.9.linear_attn.conv1d.weight": "model.safetensors",
|
| 906 |
+
"language_model.model.layers.9.linear_attn.dt_bias": "model.safetensors",
|
| 907 |
+
"language_model.model.layers.9.linear_attn.in_proj_a.biases": "model.safetensors",
|
| 908 |
+
"language_model.model.layers.9.linear_attn.in_proj_a.scales": "model.safetensors",
|
| 909 |
+
"language_model.model.layers.9.linear_attn.in_proj_a.weight": "model.safetensors",
|
| 910 |
+
"language_model.model.layers.9.linear_attn.in_proj_b.biases": "model.safetensors",
|
| 911 |
+
"language_model.model.layers.9.linear_attn.in_proj_b.scales": "model.safetensors",
|
| 912 |
+
"language_model.model.layers.9.linear_attn.in_proj_b.weight": "model.safetensors",
|
| 913 |
+
"language_model.model.layers.9.linear_attn.in_proj_qkv.biases": "model.safetensors",
|
| 914 |
+
"language_model.model.layers.9.linear_attn.in_proj_qkv.scales": "model.safetensors",
|
| 915 |
+
"language_model.model.layers.9.linear_attn.in_proj_qkv.weight": "model.safetensors",
|
| 916 |
+
"language_model.model.layers.9.linear_attn.in_proj_z.biases": "model.safetensors",
|
| 917 |
+
"language_model.model.layers.9.linear_attn.in_proj_z.scales": "model.safetensors",
|
| 918 |
+
"language_model.model.layers.9.linear_attn.in_proj_z.weight": "model.safetensors",
|
| 919 |
+
"language_model.model.layers.9.linear_attn.norm.weight": "model.safetensors",
|
| 920 |
+
"language_model.model.layers.9.linear_attn.out_proj.biases": "model.safetensors",
|
| 921 |
+
"language_model.model.layers.9.linear_attn.out_proj.scales": "model.safetensors",
|
| 922 |
+
"language_model.model.layers.9.linear_attn.out_proj.weight": "model.safetensors",
|
| 923 |
+
"language_model.model.layers.9.mlp.down_proj.biases": "model.safetensors",
|
| 924 |
+
"language_model.model.layers.9.mlp.down_proj.scales": "model.safetensors",
|
| 925 |
+
"language_model.model.layers.9.mlp.down_proj.weight": "model.safetensors",
|
| 926 |
+
"language_model.model.layers.9.mlp.gate_proj.biases": "model.safetensors",
|
| 927 |
+
"language_model.model.layers.9.mlp.gate_proj.scales": "model.safetensors",
|
| 928 |
+
"language_model.model.layers.9.mlp.gate_proj.weight": "model.safetensors",
|
| 929 |
+
"language_model.model.layers.9.mlp.up_proj.biases": "model.safetensors",
|
| 930 |
+
"language_model.model.layers.9.mlp.up_proj.scales": "model.safetensors",
|
| 931 |
+
"language_model.model.layers.9.mlp.up_proj.weight": "model.safetensors",
|
| 932 |
+
"language_model.model.layers.9.post_attention_layernorm.weight": "model.safetensors",
|
| 933 |
+
"language_model.model.norm.weight": "model.safetensors"
|
| 934 |
+
}
|
| 935 |
+
}
|
provenance/bf16_weight_audit.json
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"status": "passed",
|
| 3 |
+
"tensors_shape_checked": 427,
|
| 4 |
+
"scope": "All tensor names/shapes; full norm and convolution tensors; first 2 rows x 64 columns of other tensors. Not all-element equality."
|
| 5 |
+
}
|
provenance/conversion_run_lock.json
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"request": {
|
| 3 |
+
"schema": "jeeves-mlx-cpu-v1",
|
| 4 |
+
"repo_id": "PostHog/jeeves",
|
| 5 |
+
"hf_revision": "8622b7d1652a9dcb8629486b84dce9e8d690c5cd",
|
| 6 |
+
"jeeves_code_ref": "HEAD",
|
| 7 |
+
"mlx_lm_code_ref": "refs/heads/main",
|
| 8 |
+
"mlx_requirement": "mlx[cpu]==0.32.3",
|
| 9 |
+
"quant_bits": [
|
| 10 |
+
4,
|
| 11 |
+
8
|
| 12 |
+
],
|
| 13 |
+
"q_group_size": 64,
|
| 14 |
+
"run_torch_reference": true,
|
| 15 |
+
"run_cpu_smoke": true,
|
| 16 |
+
"smoke_cases": 1,
|
| 17 |
+
"smoke_max_tokens": 256,
|
| 18 |
+
"prefill_chunk_size": 16,
|
| 19 |
+
"greedy_smoke_tokens": 0,
|
| 20 |
+
"min_ram_gib": 24,
|
| 21 |
+
"bf16_probability_atol": 0.02,
|
| 22 |
+
"bf16_min_cosine": 0.995,
|
| 23 |
+
"helper_sha256": {
|
| 24 |
+
"jeeves_support.py": "26ca899ee62b13ef3a93ff7075bf4fcfd097e1c1e15589b667c22be71205beb6",
|
| 25 |
+
"run_jeeves.py": "5e381f42611ee195f4579eb3d3433abf7c292aecb26e52b6ccd94ecd4e13c654",
|
| 26 |
+
"convert_worker.py": "538444544ae39fdbe5031b0a75dcff88615b33e1127d7eb42fefde325c36afd7"
|
| 27 |
+
}
|
| 28 |
+
},
|
| 29 |
+
"jeeves_code_sha": "f04ec5567301450dcaae0210dd54deeb4f647f87",
|
| 30 |
+
"mlx_lm_sha": "94cdcae13b266c337bcaca09b97b9c5a9c0e2cde",
|
| 31 |
+
"identity": "c4d0ea30e584dbf0d1e672c59c2e00036cb6a1a7025833ef49c01c63432b18fa"
|
| 32 |
+
}
|
provenance/format_head_checks.json
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"status": "passed",
|
| 3 |
+
"format_cases": 4,
|
| 4 |
+
"original_head_dtypes": {
|
| 5 |
+
"q.weight": "torch.float32",
|
| 6 |
+
"q.bias": "torch.float32",
|
| 7 |
+
"k.weight": "torch.float32",
|
| 8 |
+
"k.bias": "torch.float32"
|
| 9 |
+
},
|
| 10 |
+
"exported_head_dtype": "float32",
|
| 11 |
+
"temperature": 1.8589280843734741,
|
| 12 |
+
"max_head_probability_error": 0.0,
|
| 13 |
+
"scope": "Original encoder token/readout parity, safe head serialization, and original PyTorch head vs MLX head on synthetic hidden states. Not backbone parity."
|
| 14 |
+
}
|
provenance/jeeves-mlx-4bit.npz
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:b23046076e0105c29e487312856067b9e4c0a4d53ced30a543b5543911551ba7
|
| 3 |
+
size 49972
|
provenance/jeeves-mlx-4bit_smoke.json
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"status": "passed",
|
| 3 |
+
"identity": "c4d0ea30e584dbf0d1e672c59c2e00036cb6a1a7025833ef49c01c63432b18fa",
|
| 4 |
+
"device": "cpu",
|
| 5 |
+
"cases": [
|
| 6 |
+
{
|
| 7 |
+
"id": "case0",
|
| 8 |
+
"probabilities": [
|
| 9 |
+
0.016998127102851868,
|
| 10 |
+
0.9830018877983093
|
| 11 |
+
],
|
| 12 |
+
"elapsed_seconds": 4345.674271831
|
| 13 |
+
}
|
| 14 |
+
],
|
| 15 |
+
"fixture_sha256": "2887c941fd5a497ae51343a9e2382ea1d198ab5eb140f4e8c8fd37c54be4ebf0",
|
| 16 |
+
"scope": "Small no-thinking execution smoke test; not a benchmark."
|
| 17 |
+
}
|
provenance/jeeves-mlx-bf16.npz
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:20f08bc1b539c2b7321c666c73faba142141641db0c27757958a1f463e92f52c
|
| 3 |
+
size 49972
|
provenance/jeeves-mlx-bf16_smoke.json
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"status": "passed",
|
| 3 |
+
"identity": "c4d0ea30e584dbf0d1e672c59c2e00036cb6a1a7025833ef49c01c63432b18fa",
|
| 4 |
+
"device": "cpu",
|
| 5 |
+
"cases": [
|
| 6 |
+
{
|
| 7 |
+
"id": "case0",
|
| 8 |
+
"probabilities": [
|
| 9 |
+
0.03329608216881752,
|
| 10 |
+
0.9667038917541504
|
| 11 |
+
],
|
| 12 |
+
"elapsed_seconds": 268.5726169540003
|
| 13 |
+
}
|
| 14 |
+
],
|
| 15 |
+
"fixture_sha256": "2887c941fd5a497ae51343a9e2382ea1d198ab5eb140f4e8c8fd37c54be4ebf0",
|
| 16 |
+
"scope": "Small no-thinking execution smoke test; not a benchmark."
|
| 17 |
+
}
|
provenance/original_package_README.md
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Jeeves-9B MLX — jeeves-mlx-4bit
|
| 2 |
+
|
| 3 |
+
Converted from `PostHog/jeeves` revision `8622b7d1652a9dcb8629486b84dce9e8d690c5cd` on CPU.
|
| 4 |
+
This is an unofficial MLX port, not a release by PostHog or Apple.
|
| 5 |
+
|
| 6 |
+
## Contents
|
| 7 |
+
|
| 8 |
+
`model*.safetensors` and `config.json` are the MLX backbone. `head.safetensors` contains the original pointer-head values in FP32. `head.pt` is also retained. `export.json` retains the released temperature and training metadata. `jeeves_format.py` is extracted from the pinned upstream encoder; `dataformat.py` retains the original state/question rendering. Original licenses and source hashes are preserved.
|
| 9 |
+
|
| 10 |
+
## Apple Silicon
|
| 11 |
+
|
| 12 |
+
```bash
|
| 13 |
+
python3 -m venv .venv
|
| 14 |
+
source .venv/bin/activate
|
| 15 |
+
python -m pip install -r requirements-mac.txt
|
| 16 |
+
python run_jeeves.py --request example_request.json --device gpu
|
| 17 |
+
```
|
| 18 |
+
|
| 19 |
+
Ordinary, non-speculative greedy reasoning is optional:
|
| 20 |
+
|
| 21 |
+
```bash
|
| 22 |
+
python run_jeeves.py --request example_request.json --device gpu --think-tokens 128
|
| 23 |
+
```
|
| 24 |
+
|
| 25 |
+
The runner accepts `state` and a `questions` mapping with `noul`, `choice`, or `score` question types. It returns one probability per option. It is **not** a wire-compatible replacement for the original `/v1/systemone` server. Use `run_jeeves.py`, not `mlx_lm.generate`, for decisions.
|
| 26 |
+
|
| 27 |
+
## Scope and validation
|
| 28 |
+
|
| 29 |
+
The default path is no-thinking, batch size one, with an independent cache per question. The optional reasoning path uses ordinary greedy decoding, suppresses the upstream control tokens, stops at the thinking end marker, and re-prefills for decision readout. It does not reproduce the original speculative drafters, CUDA graphs, FP8 serving, or adaptive no-thinking threshold.
|
| 30 |
+
|
| 31 |
+
Read `validation.json` for this package's actual status. A file conversion, head check, or tiny smoke-test pass is not an accuracy/calibration benchmark. An unchanged temperature does not establish calibration after quantization. Apple Metal execution and latency must be tested on a Mac. No advertised Jeeves benchmark score or speed is claimed for this port.
|
| 32 |
+
|
| 33 |
+
The source checkpoint license is in `LICENSE`; the upstream code license is in `LICENSE_JEEVES_CODE`. The new glue code is supplied for use and modification without warranty.
|
provenance/preflight.json
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"status": "passed",
|
| 3 |
+
"device": "cpu",
|
| 4 |
+
"versions": {
|
| 5 |
+
"mlx": "0.32.3",
|
| 6 |
+
"mlx-lm": "0.31.4.dev132+g94cdcae13",
|
| 7 |
+
"torch": "2.14.0+cpu",
|
| 8 |
+
"numpy": "2.5.3",
|
| 9 |
+
"transformers": "5.17.0",
|
| 10 |
+
"huggingface-hub": "1.33.0",
|
| 11 |
+
"safetensors": "0.8.0"
|
| 12 |
+
},
|
| 13 |
+
"scope": "Tiny synthetic architecture; not the Jeeves checkpoint."
|
| 14 |
+
}
|
provenance/requirements-cpu-lock.txt
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
annotated-doc==0.0.5
|
| 2 |
+
anyio==4.15.1
|
| 3 |
+
certifi==2026.7.22
|
| 4 |
+
click==8.5.0
|
| 5 |
+
filelock==3.32.3
|
| 6 |
+
fsspec==2026.7.0
|
| 7 |
+
h11==0.16.0
|
| 8 |
+
hf-xet==1.6.0
|
| 9 |
+
httpcore==1.0.9
|
| 10 |
+
httpx==0.28.1
|
| 11 |
+
huggingface_hub==1.33.0
|
| 12 |
+
idna==3.20
|
| 13 |
+
Jinja2==3.1.6
|
| 14 |
+
markdown-it-py==4.2.0
|
| 15 |
+
MarkupSafe==3.0.3
|
| 16 |
+
mdurl==0.1.2
|
| 17 |
+
mlx==0.32.3
|
| 18 |
+
mlx-cpu==0.32.3
|
| 19 |
+
mlx-lm @ git+https://github.com/ml-explore/mlx-lm.git@94cdcae13b266c337bcaca09b97b9c5a9c0e2cde
|
| 20 |
+
mpmath==1.3.0
|
| 21 |
+
networkx==3.6.1
|
| 22 |
+
numpy==2.5.3
|
| 23 |
+
packaging==26.3
|
| 24 |
+
protobuf==7.36.2
|
| 25 |
+
psutil==7.2.2
|
| 26 |
+
Pygments==2.21.0
|
| 27 |
+
PyYAML==6.0.3
|
| 28 |
+
regex==2026.9.29
|
| 29 |
+
rich==15.0.0
|
| 30 |
+
safetensors==0.8.0
|
| 31 |
+
sentencepiece==0.2.2
|
| 32 |
+
setuptools==84.0.0
|
| 33 |
+
shellingham==1.5.4
|
| 34 |
+
sympy==1.14.0
|
| 35 |
+
tokenizers==0.23.2
|
| 36 |
+
torch==2.14.0+cpu
|
| 37 |
+
tqdm==4.70.1
|
| 38 |
+
transformers==5.17.0
|
| 39 |
+
typer==0.27.2
|
| 40 |
+
typing_extensions==4.16.0
|
| 41 |
+
wheel==0.48.0
|
provenance/source_PACKAGE_MANIFEST.json
ADDED
|
@@ -0,0 +1,154 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"schema": "jeeves-mlx-cpu-v1",
|
| 3 |
+
"identity": "c4d0ea30e584dbf0d1e672c59c2e00036cb6a1a7025833ef49c01c63432b18fa",
|
| 4 |
+
"files": {
|
| 5 |
+
"CONVERSION_COMPLETE.json": {
|
| 6 |
+
"bytes": 269,
|
| 7 |
+
"sha256": "cb7ff21cfa818a070dc01cb79829ceca9e293e5c9dfc400ab8c8a81a4699b383"
|
| 8 |
+
},
|
| 9 |
+
"LICENSE": {
|
| 10 |
+
"bytes": 11544,
|
| 11 |
+
"sha256": "bbedc3fda3305820b977265f01b8619d87570a6739de3a5582c3464840f1e57a"
|
| 12 |
+
},
|
| 13 |
+
"LICENSE_JEEVES_CODE": {
|
| 14 |
+
"bytes": 1074,
|
| 15 |
+
"sha256": "823f556c20700f9a2f5e520c7d4eb3089f083fb19cf618cdbe08c08982f41b8e"
|
| 16 |
+
},
|
| 17 |
+
"README.md": {
|
| 18 |
+
"bytes": 2192,
|
| 19 |
+
"sha256": "fc5140a87a684cb672186d46c739e8482174854632dbcb929985ffda6eced3a9"
|
| 20 |
+
},
|
| 21 |
+
"chat_template.jinja": {
|
| 22 |
+
"bytes": 7756,
|
| 23 |
+
"sha256": "a4aee8afcf2e0711942cf848899be66016f8d14a889ff9ede07bca099c28f715"
|
| 24 |
+
},
|
| 25 |
+
"config.json": {
|
| 26 |
+
"bytes": 2080,
|
| 27 |
+
"sha256": "6cc3a4bc9bd804159d7849476564026451ace6009b7fc51cdf14908aaacf333a"
|
| 28 |
+
},
|
| 29 |
+
"dataformat.py": {
|
| 30 |
+
"bytes": 6058,
|
| 31 |
+
"sha256": "1c421b0e2ba879f5799842b3a44350d1f1db117ead23c47c7b01a27e2139c664"
|
| 32 |
+
},
|
| 33 |
+
"example_request.json": {
|
| 34 |
+
"bytes": 179,
|
| 35 |
+
"sha256": "7cec13b2283352be787736c7bb47fb783b61814f9ed25fb9ac2742d521435145"
|
| 36 |
+
},
|
| 37 |
+
"export.json": {
|
| 38 |
+
"bytes": 2582,
|
| 39 |
+
"sha256": "608d8aa594bc9cc6cd37e691eb3b5ec0e661866be0ae38f21659f6d70531e8a1"
|
| 40 |
+
},
|
| 41 |
+
"fixtures.json": {
|
| 42 |
+
"bytes": 4863,
|
| 43 |
+
"sha256": "2887c941fd5a497ae51343a9e2382ea1d198ab5eb140f4e8c8fd37c54be4ebf0"
|
| 44 |
+
},
|
| 45 |
+
"head.pt": {
|
| 46 |
+
"bytes": 8392767,
|
| 47 |
+
"sha256": "2ab935dea9eecf263086d9ed6dfe97fd5558193663ecae102fd3c50ae6878d60"
|
| 48 |
+
},
|
| 49 |
+
"head.safetensors": {
|
| 50 |
+
"bytes": 8391016,
|
| 51 |
+
"sha256": "ceac931470abafbc62723a297291f2c3d96627679794433585e658981798343e"
|
| 52 |
+
},
|
| 53 |
+
"jeeves_format.py": {
|
| 54 |
+
"bytes": 4244,
|
| 55 |
+
"sha256": "6bb9599483ce4328024bf2c8473959996b3c55a226ae2a31c739ec87b0f215ca"
|
| 56 |
+
},
|
| 57 |
+
"jeeves_support.py": {
|
| 58 |
+
"bytes": 7920,
|
| 59 |
+
"sha256": "26ca899ee62b13ef3a93ff7075bf4fcfd097e1c1e15589b667c22be71205beb6"
|
| 60 |
+
},
|
| 61 |
+
"model.safetensors": {
|
| 62 |
+
"bytes": 5038161163,
|
| 63 |
+
"sha256": "a7f3c503106f38d7bff3a55cb16b82bb5085fd8247893ade8a1de6ed1750e1f1"
|
| 64 |
+
},
|
| 65 |
+
"model.safetensors.index.json": {
|
| 66 |
+
"bytes": 81194,
|
| 67 |
+
"sha256": "215f9abadc1cea4d465b01c036dffcac5a84c2fb2386777863eff6928b91ed0b"
|
| 68 |
+
},
|
| 69 |
+
"provenance/bf16_weight_audit.json": {
|
| 70 |
+
"bytes": 201,
|
| 71 |
+
"sha256": "a4668cfbcf61c2946e870e552776d876f8cfd1cd021b4bda5f30795bfa545ee4"
|
| 72 |
+
},
|
| 73 |
+
"provenance/format_head_checks.json": {
|
| 74 |
+
"bytes": 481,
|
| 75 |
+
"sha256": "fb3c9913a7d9200186d9b4ec7e79701e1b9fb0e9513636e7b84db716584140ce"
|
| 76 |
+
},
|
| 77 |
+
"provenance/jeeves-mlx-4bit.npz": {
|
| 78 |
+
"bytes": 49972,
|
| 79 |
+
"sha256": "b23046076e0105c29e487312856067b9e4c0a4d53ced30a543b5543911551ba7"
|
| 80 |
+
},
|
| 81 |
+
"provenance/jeeves-mlx-4bit_smoke.json": {
|
| 82 |
+
"bytes": 467,
|
| 83 |
+
"sha256": "4f76a693cf949f7cdd3eac7b573b8e15083e5a3f0b7614a06ec449a525c05baf"
|
| 84 |
+
},
|
| 85 |
+
"provenance/jeeves-mlx-bf16.npz": {
|
| 86 |
+
"bytes": 49972,
|
| 87 |
+
"sha256": "20f08bc1b539c2b7321c666c73faba142141641db0c27757958a1f463e92f52c"
|
| 88 |
+
},
|
| 89 |
+
"provenance/jeeves-mlx-bf16_smoke.json": {
|
| 90 |
+
"bytes": 469,
|
| 91 |
+
"sha256": "09b6e75e09a1b51d571e0309e9de7f566b33a5aa86fa039a5669577717dade0d"
|
| 92 |
+
},
|
| 93 |
+
"provenance/preflight.json": {
|
| 94 |
+
"bytes": 337,
|
| 95 |
+
"sha256": "6cc3ab0b1b759f6751f68ca3867f9648573a69e9632840feb42cb2b60daf27c6"
|
| 96 |
+
},
|
| 97 |
+
"provenance/source_config.json": {
|
| 98 |
+
"bytes": 1471,
|
| 99 |
+
"sha256": "b0ca5d0cb2056e4c1a4eb9a0616c114773cbd8b7428c1927259b28b3938b4191"
|
| 100 |
+
},
|
| 101 |
+
"provenance/source_lock.json": {
|
| 102 |
+
"bytes": 302,
|
| 103 |
+
"sha256": "d96f01e2558461e3c3daa874755a8212af64591840f6e6c8415f73ad8328e446"
|
| 104 |
+
},
|
| 105 |
+
"provenance/source_shards.json": {
|
| 106 |
+
"bytes": 913,
|
| 107 |
+
"sha256": "8f7b5da3ef9b11a19ff1976b382fc5908989beab726c68ad8ef70b6db7c57f8e"
|
| 108 |
+
},
|
| 109 |
+
"provenance/torch_reference.json": {
|
| 110 |
+
"bytes": 504,
|
| 111 |
+
"sha256": "1ff8eed755e0c8d4febb490a8be902c4b21a33802e428ff23047a31109d41c8c"
|
| 112 |
+
},
|
| 113 |
+
"provenance/torch_reference.npz": {
|
| 114 |
+
"bytes": 49972,
|
| 115 |
+
"sha256": "852fadb6c779fbbb45073590aa5f08f6385f903dad22c8a6ab27d6613de5ebba"
|
| 116 |
+
},
|
| 117 |
+
"provenance/upstream_code.json": {
|
| 118 |
+
"bytes": 799,
|
| 119 |
+
"sha256": "d50143f13dac140feb845dfef53380e370371f6c95412bee6b212d5387bb7987"
|
| 120 |
+
},
|
| 121 |
+
"provenance/upstream_dataloader.py": {
|
| 122 |
+
"bytes": 11424,
|
| 123 |
+
"sha256": "7d8a43ddcac427125bbe6b8aca9cfb3306aa1dbef6d7509bfed1a65a2d93b4d1"
|
| 124 |
+
},
|
| 125 |
+
"provenance/upstream_head.py": {
|
| 126 |
+
"bytes": 714,
|
| 127 |
+
"sha256": "4c4f503c0ecef50d58b7a789f79f9336324c1548d9832e9ce75a675fd2ba302f"
|
| 128 |
+
},
|
| 129 |
+
"provenance/upstream_model_card.md": {
|
| 130 |
+
"bytes": 5234,
|
| 131 |
+
"sha256": "8f18acc423edf4c7db50d877f8f826ff6e019e6395092b800b6673db3e00cae2"
|
| 132 |
+
},
|
| 133 |
+
"requirements-mac.txt": {
|
| 134 |
+
"bytes": 184,
|
| 135 |
+
"sha256": "01b04c2acde4835455b18b65e8e3567c1a8d607f23692afb01f4a842487dd147"
|
| 136 |
+
},
|
| 137 |
+
"run_jeeves.py": {
|
| 138 |
+
"bytes": 9594,
|
| 139 |
+
"sha256": "5e381f42611ee195f4579eb3d3433abf7c292aecb26e52b6ccd94ecd4e13c654"
|
| 140 |
+
},
|
| 141 |
+
"tokenizer.json": {
|
| 142 |
+
"bytes": 19989325,
|
| 143 |
+
"sha256": "06b9509352d2af50381ab2247e083b80d32d5c0aba91c272ca9ff729b6a0e523"
|
| 144 |
+
},
|
| 145 |
+
"tokenizer_config.json": {
|
| 146 |
+
"bytes": 1161,
|
| 147 |
+
"sha256": "95c557768e6b88a7128befc7bfd3c7de50e5d51af9b8b33a9f4dee0e04f99679"
|
| 148 |
+
},
|
| 149 |
+
"validation.json": {
|
| 150 |
+
"bytes": 2250,
|
| 151 |
+
"sha256": "36d3a8cf620c7db74476f8f4f6d0c8ab77b225bb0d6b5c8859eb0d5bf57f5061"
|
| 152 |
+
}
|
| 153 |
+
}
|
| 154 |
+
}
|
provenance/source_config.json
ADDED
|
@@ -0,0 +1,61 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"vocab_size": 248320,
|
| 3 |
+
"hidden_size": 4096,
|
| 4 |
+
"intermediate_size": 12288,
|
| 5 |
+
"num_hidden_layers": 32,
|
| 6 |
+
"layer_types": [
|
| 7 |
+
"linear_attention",
|
| 8 |
+
"linear_attention",
|
| 9 |
+
"linear_attention",
|
| 10 |
+
"full_attention",
|
| 11 |
+
"linear_attention",
|
| 12 |
+
"linear_attention",
|
| 13 |
+
"linear_attention",
|
| 14 |
+
"full_attention",
|
| 15 |
+
"linear_attention",
|
| 16 |
+
"linear_attention",
|
| 17 |
+
"linear_attention",
|
| 18 |
+
"full_attention",
|
| 19 |
+
"linear_attention",
|
| 20 |
+
"linear_attention",
|
| 21 |
+
"linear_attention",
|
| 22 |
+
"full_attention",
|
| 23 |
+
"linear_attention",
|
| 24 |
+
"linear_attention",
|
| 25 |
+
"linear_attention",
|
| 26 |
+
"full_attention",
|
| 27 |
+
"linear_attention",
|
| 28 |
+
"linear_attention",
|
| 29 |
+
"linear_attention",
|
| 30 |
+
"full_attention",
|
| 31 |
+
"linear_attention",
|
| 32 |
+
"linear_attention",
|
| 33 |
+
"linear_attention",
|
| 34 |
+
"full_attention",
|
| 35 |
+
"linear_attention",
|
| 36 |
+
"linear_attention",
|
| 37 |
+
"linear_attention",
|
| 38 |
+
"full_attention"
|
| 39 |
+
],
|
| 40 |
+
"tie_word_embeddings": false,
|
| 41 |
+
"num_attention_heads": 16,
|
| 42 |
+
"num_key_value_heads": 4,
|
| 43 |
+
"head_dim": 256,
|
| 44 |
+
"attention_bias": false,
|
| 45 |
+
"attention_dropout": 0.0,
|
| 46 |
+
"linear_num_key_heads": 16,
|
| 47 |
+
"linear_num_value_heads": 32,
|
| 48 |
+
"linear_key_head_dim": 128,
|
| 49 |
+
"linear_value_head_dim": 128,
|
| 50 |
+
"linear_conv_kernel_dim": 4,
|
| 51 |
+
"rms_norm_eps": 1e-06,
|
| 52 |
+
"hidden_act": "silu",
|
| 53 |
+
"rope_theta": 10000000,
|
| 54 |
+
"partial_rotary_factor": 0.25,
|
| 55 |
+
"max_position_embeddings": 262144,
|
| 56 |
+
"pad_token_id": null,
|
| 57 |
+
"eos_token_id": 248044,
|
| 58 |
+
"bos_token_id": null,
|
| 59 |
+
"dtype": "bfloat16",
|
| 60 |
+
"initializer_range": 0.02
|
| 61 |
+
}
|
provenance/source_lock.json
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"repo_id": "PostHog/jeeves",
|
| 3 |
+
"hf_revision": "8622b7d1652a9dcb8629486b84dce9e8d690c5cd",
|
| 4 |
+
"jeeves_code_sha": "f04ec5567301450dcaae0210dd54deeb4f647f87",
|
| 5 |
+
"mlx_lm_sha": "94cdcae13b266c337bcaca09b97b9c5a9c0e2cde",
|
| 6 |
+
"identity": "c4d0ea30e584dbf0d1e672c59c2e00036cb6a1a7025833ef49c01c63432b18fa"
|
| 7 |
+
}
|
provenance/source_shards.json
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"model-00001-of-00005.safetensors": {
|
| 3 |
+
"bytes": 4268059288,
|
| 4 |
+
"sha256": "c8d38178b51c845d6befca9e2c8a579889055cecf510fdbc85dbdf7bb867a0d6",
|
| 5 |
+
"hub_hash_verified": true
|
| 6 |
+
},
|
| 7 |
+
"model-00002-of-00005.safetensors": {
|
| 8 |
+
"bytes": 4266315424,
|
| 9 |
+
"sha256": "a25e1a608a5be9cadef95e3f40fdca5c17b6c21e86481186adfd7a8a1f5b8f40",
|
| 10 |
+
"hub_hash_verified": true
|
| 11 |
+
},
|
| 12 |
+
"model-00003-of-00005.safetensors": {
|
| 13 |
+
"bytes": 4215378072,
|
| 14 |
+
"sha256": "ab693e0b5940052ad04450fccfd12c87a49ce9ad23984bdfc07ee20d3ab654fe",
|
| 15 |
+
"hub_hash_verified": true
|
| 16 |
+
},
|
| 17 |
+
"model-00004-of-00005.safetensors": {
|
| 18 |
+
"bytes": 3123665648,
|
| 19 |
+
"sha256": "9942b7369222a4403809a05f1da21f53b006f2d5cf72651483dda48c4931ed9a",
|
| 20 |
+
"hub_hash_verified": true
|
| 21 |
+
},
|
| 22 |
+
"model-00005-of-00005.safetensors": {
|
| 23 |
+
"bytes": 2034237568,
|
| 24 |
+
"sha256": "dd63614f1dc80dce2d83be3f3e69af1f8a0ebc8add9b8e0abf3910f563e44344",
|
| 25 |
+
"hub_hash_verified": true
|
| 26 |
+
}
|
| 27 |
+
}
|
provenance/torch_reference.json
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"status": "passed",
|
| 3 |
+
"identity": "c4d0ea30e584dbf0d1e672c59c2e00036cb6a1a7025833ef49c01c63432b18fa",
|
| 4 |
+
"device": "cpu",
|
| 5 |
+
"dtype": "bfloat16",
|
| 6 |
+
"fixture_sha256": "2887c941fd5a497ae51343a9e2382ea1d198ab5eb140f4e8c8fd37c54be4ebf0",
|
| 7 |
+
"cases": [
|
| 8 |
+
{
|
| 9 |
+
"id": "case0",
|
| 10 |
+
"probabilities": [
|
| 11 |
+
0.03340453281998634,
|
| 12 |
+
0.9665954113006592
|
| 13 |
+
],
|
| 14 |
+
"elapsed_seconds": 22.900140517999716
|
| 15 |
+
}
|
| 16 |
+
],
|
| 17 |
+
"scope": "No-thinking reference outputs; diagnostic timings, not a benchmark."
|
| 18 |
+
}
|
provenance/torch_reference.npz
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:852fadb6c779fbbb45073590aa5f08f6385f903dad22c8a6ab27d6613de5ebba
|
| 3 |
+
size 49972
|
provenance/upstream_code.json
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"revision": "f04ec5567301450dcaae0210dd54deeb4f647f87",
|
| 3 |
+
"files": {
|
| 4 |
+
"model/__init__.py": "2792fa98fe4e980059445bc85755dcf830377427208ce6751fa7a2129e163897",
|
| 5 |
+
"model/model.py": "e827e20b3552e0c4632a6f413ff4e1cd4046adf0de12aaa92827095f625ec5ac",
|
| 6 |
+
"model/config.py": "a1732320888e15ff93bb612aa716e3fd2652dc5f09c9abcd2e6f5e43f34685c9",
|
| 7 |
+
"model/lora.py": "02602dfac5f2cddbbee53a5b9e558871a42c56f00c5c959f20ab17eb3317ad52",
|
| 8 |
+
"model/head.py": "4c4f503c0ecef50d58b7a789f79f9336324c1548d9832e9ce75a675fd2ba302f",
|
| 9 |
+
"prep/format.py": "1c421b0e2ba879f5799842b3a44350d1f1db117ead23c47c7b01a27e2139c664",
|
| 10 |
+
"loader/dataloader.py": "7d8a43ddcac427125bbe6b8aca9cfb3306aa1dbef6d7509bfed1a65a2d93b4d1",
|
| 11 |
+
"LICENSE": "823f556c20700f9a2f5e520c7d4eb3089f083fb19cf618cdbe08c08982f41b8e"
|
| 12 |
+
}
|
| 13 |
+
}
|
provenance/upstream_dataloader.py
ADDED
|
@@ -0,0 +1,268 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from __future__ import annotations
|
| 2 |
+
|
| 3 |
+
import random
|
| 4 |
+
import re
|
| 5 |
+
from dataclasses import dataclass
|
| 6 |
+
from functools import partial
|
| 7 |
+
from typing import Sequence
|
| 8 |
+
|
| 9 |
+
import torch
|
| 10 |
+
from torch.utils.data import DataLoader, DistributedSampler
|
| 11 |
+
from transformers import AutoTokenizer
|
| 12 |
+
|
| 13 |
+
from prep.format import DataFormat, Question, read_jsonl
|
| 14 |
+
|
| 15 |
+
STATE, Q, OPT, OPT_END, DECIDE = "<|fim_prefix|>", "<|fim_middle|>", "<|box_start|>", "<|box_end|>", "<|fim_suffix|>"
|
| 16 |
+
THINK, THINK_END = "<think>", "</think>"
|
| 17 |
+
CONTROL_RE = re.compile(r"<\|([A-Za-z0-9_]+)\|>")
|
| 18 |
+
|
| 19 |
+
|
| 20 |
+
def sanitize(text: str) -> str:
|
| 21 |
+
return CONTROL_RE.sub(r"<¦\1¦>", text)
|
| 22 |
+
|
| 23 |
+
|
| 24 |
+
@dataclass
|
| 25 |
+
class Example:
|
| 26 |
+
prompt: list[int]
|
| 27 |
+
remainder: list[int]
|
| 28 |
+
label: int
|
| 29 |
+
target: list[float] | None
|
| 30 |
+
n_options: int
|
| 31 |
+
source: str
|
| 32 |
+
source_id: int
|
| 33 |
+
record_id: str
|
| 34 |
+
question_id: str
|
| 35 |
+
think: list[int] | None = None
|
| 36 |
+
plain_prompt: list[int] | None = None
|
| 37 |
+
|
| 38 |
+
@property
|
| 39 |
+
def full(self) -> list[int]:
|
| 40 |
+
return self.prompt + self.remainder
|
| 41 |
+
|
| 42 |
+
|
| 43 |
+
@dataclass
|
| 44 |
+
class Batch:
|
| 45 |
+
input_ids: torch.Tensor
|
| 46 |
+
attention_mask: torch.Tensor
|
| 47 |
+
opt_index: torch.Tensor
|
| 48 |
+
opt_mask: torch.Tensor
|
| 49 |
+
decide_index: torch.Tensor
|
| 50 |
+
labels: torch.Tensor
|
| 51 |
+
targets: torch.Tensor
|
| 52 |
+
source_ids: torch.Tensor
|
| 53 |
+
chain_mask: torch.Tensor
|
| 54 |
+
valid: torch.Tensor
|
| 55 |
+
group_ids: torch.Tensor
|
| 56 |
+
think_start: torch.Tensor
|
| 57 |
+
suffix_len: torch.Tensor
|
| 58 |
+
old_logp: torch.Tensor
|
| 59 |
+
|
| 60 |
+
def to(self, device, non_blocking: bool = True) -> "Batch":
|
| 61 |
+
return Batch(**{k: v.to(device, non_blocking=non_blocking) for k, v in self.__dict__.items()})
|
| 62 |
+
|
| 63 |
+
def pin_memory(self) -> "Batch":
|
| 64 |
+
return Batch(**{k: v.pin_memory() for k, v in self.__dict__.items()})
|
| 65 |
+
|
| 66 |
+
def __len__(self) -> int:
|
| 67 |
+
return self.input_ids.shape[0]
|
| 68 |
+
|
| 69 |
+
|
| 70 |
+
@dataclass(frozen=True)
|
| 71 |
+
class Markers:
|
| 72 |
+
pad_id: int
|
| 73 |
+
opt_end_id: int
|
| 74 |
+
think_end_id: int
|
| 75 |
+
empty_think: tuple[int, ...]
|
| 76 |
+
pad_multiple: int
|
| 77 |
+
|
| 78 |
+
|
| 79 |
+
class Encoder:
|
| 80 |
+
FORMAT = "markers-v3-plainchains"
|
| 81 |
+
|
| 82 |
+
def __init__(self, tokenizer_repo: str = "Qwen/Qwen3.5-9B", pad_multiple: int = 128):
|
| 83 |
+
self.tok = AutoTokenizer.from_pretrained(tokenizer_repo)
|
| 84 |
+
self.pad_multiple = pad_multiple
|
| 85 |
+
ids = self.tok.convert_tokens_to_ids([STATE, Q, OPT, OPT_END, DECIDE, THINK, THINK_END])
|
| 86 |
+
if any(i is None or i == self.tok.unk_token_id for i in ids):
|
| 87 |
+
raise ValueError("marker tokens missing from tokenizer")
|
| 88 |
+
self.state_id, self.q_id, self.opt_id, self.opt_end_id, self.decide_id, self.think_id, self.think_end_id = ids
|
| 89 |
+
self.pad_id = self.tok.pad_token_id
|
| 90 |
+
special = set(self.tok.all_special_ids) | set(self.tok.get_added_vocab().values())
|
| 91 |
+
self.banned_ids = sorted(special - {self.think_end_id})
|
| 92 |
+
self.empty_think = self.encode("\n")
|
| 93 |
+
|
| 94 |
+
@property
|
| 95 |
+
def markers(self) -> Markers:
|
| 96 |
+
return Markers(self.pad_id, self.opt_end_id, self.think_end_id, tuple(self.empty_think), self.pad_multiple)
|
| 97 |
+
|
| 98 |
+
def encode(self, text: str) -> list[int]:
|
| 99 |
+
return self.tok(text, add_special_tokens=False).input_ids
|
| 100 |
+
|
| 101 |
+
@staticmethod
|
| 102 |
+
def option_block(q: Question) -> str:
|
| 103 |
+
return "".join(f"{OPT}{sanitize(o)}{OPT_END}\n" for o in q.options())
|
| 104 |
+
|
| 105 |
+
def chat(self, content: str) -> str:
|
| 106 |
+
return self.tok.apply_chat_template([{"role": "user", "content": content}], tokenize=False,
|
| 107 |
+
add_generation_prompt=True, enable_thinking=True)
|
| 108 |
+
|
| 109 |
+
def prompt_text(self, record: DataFormat, q: Question) -> str:
|
| 110 |
+
return self.chat(f"{STATE}{sanitize(record.state_text())}\n{Q}{sanitize(q.instruction_text())}\n{self.option_block(q)}")
|
| 111 |
+
|
| 112 |
+
def plain_prompt_text(self, record: DataFormat, q: Question) -> str:
|
| 113 |
+
options = "\n".join(sanitize(o) for o in q.options())
|
| 114 |
+
return self.chat(f"Context:\n{sanitize(record.state_text())}\n\nQuestion: {sanitize(q.instruction_text())}\n\nOptions:\n{options}")
|
| 115 |
+
|
| 116 |
+
def remainder_text(self, q: Question) -> str:
|
| 117 |
+
return f"{THINK_END}\n\n{self.option_block(q)}{DECIDE}"
|
| 118 |
+
|
| 119 |
+
def example(self, record: DataFormat, q: Question, source_id: int) -> Example:
|
| 120 |
+
prompt = self.encode(self.prompt_text(record, q))
|
| 121 |
+
remainder = self.encode(self.remainder_text(q))
|
| 122 |
+
if prompt[-2:] != self.encode(f"{THINK}\n") or remainder[0] != self.think_end_id or remainder[-1] != self.decide_id:
|
| 123 |
+
raise ValueError(f"unexpected layout for {record.id}/{q.id}")
|
| 124 |
+
if remainder.count(self.opt_end_id) != len(q.options()):
|
| 125 |
+
raise ValueError(f"option boundary count mismatch for {record.id}/{q.id}")
|
| 126 |
+
return Example(prompt=prompt, remainder=remainder, label=q.label_index(), target=q.target_vector(),
|
| 127 |
+
n_options=len(q.options()), source=record.source, source_id=source_id, record_id=record.id,
|
| 128 |
+
question_id=q.id, plain_prompt=self.encode(self.plain_prompt_text(record, q)))
|
| 129 |
+
|
| 130 |
+
|
| 131 |
+
def build_examples(records: Sequence[DataFormat], encoder: Encoder, sources: dict[str, int], max_len: int,
|
| 132 |
+
extra_len: int = 0) -> tuple[list[Example], int]:
|
| 133 |
+
out, dropped = [], 0
|
| 134 |
+
for r in records:
|
| 135 |
+
sid = sources.setdefault(r.source, len(sources))
|
| 136 |
+
for q in r.questions:
|
| 137 |
+
ex = encoder.example(r, q, sid)
|
| 138 |
+
if len(ex.prompt) + len(ex.remainder) + extra_len > max_len:
|
| 139 |
+
dropped += 1
|
| 140 |
+
continue
|
| 141 |
+
out.append(ex)
|
| 142 |
+
return out, dropped
|
| 143 |
+
|
| 144 |
+
|
| 145 |
+
def load_examples(path: str, encoder: Encoder, sources: dict[str, int], max_len: int, extra_len: int = 0,
|
| 146 |
+
limit: int = 0, seed: int = 0) -> tuple[list[Example], int]:
|
| 147 |
+
records = read_jsonl(path)
|
| 148 |
+
if limit and limit < len(records):
|
| 149 |
+
records = random.Random(seed).sample(records, limit)
|
| 150 |
+
return build_examples(records, encoder, sources, max_len, extra_len)
|
| 151 |
+
|
| 152 |
+
|
| 153 |
+
def readout_positions(ids: list[int], m: Markers) -> tuple[list[int], int]:
|
| 154 |
+
start = len(ids) - 1 - ids[::-1].index(m.think_end_id)
|
| 155 |
+
opts = [i for i in range(start, len(ids)) if ids[i] == m.opt_end_id]
|
| 156 |
+
return opts, len(ids) - 1
|
| 157 |
+
|
| 158 |
+
|
| 159 |
+
def padded_length(n: int, multiple: int) -> int:
|
| 160 |
+
return -(-n // multiple) * multiple if multiple > 1 else n
|
| 161 |
+
|
| 162 |
+
|
| 163 |
+
@dataclass
|
| 164 |
+
class CollateRow:
|
| 165 |
+
example: Example
|
| 166 |
+
input_ids: list[int]
|
| 167 |
+
group_id: int
|
| 168 |
+
closed: bool = True
|
| 169 |
+
chain_span: tuple[int, int] | None = None
|
| 170 |
+
logprobs: list[float] | None = None
|
| 171 |
+
|
| 172 |
+
|
| 173 |
+
def collate(rows: list[CollateRow], m: Markers) -> Batch:
|
| 174 |
+
B = len(rows)
|
| 175 |
+
T = padded_length(max(len(row.input_ids) for row in rows), m.pad_multiple)
|
| 176 |
+
K = max(row.example.n_options for row in rows)
|
| 177 |
+
input_ids = torch.full((B, T), m.pad_id, dtype=torch.long)
|
| 178 |
+
attention_mask = torch.zeros(B, T, dtype=torch.long)
|
| 179 |
+
opt_index = torch.zeros(B, K, dtype=torch.long)
|
| 180 |
+
opt_mask = torch.zeros(B, K, dtype=torch.bool)
|
| 181 |
+
decide_index = torch.zeros(B, dtype=torch.long)
|
| 182 |
+
labels = torch.zeros(B, dtype=torch.long)
|
| 183 |
+
targets = torch.zeros(B, K, dtype=torch.float32)
|
| 184 |
+
source_ids = torch.zeros(B, dtype=torch.long)
|
| 185 |
+
chain_mask = torch.zeros(B, T, dtype=torch.bool)
|
| 186 |
+
valid = torch.zeros(B, dtype=torch.bool)
|
| 187 |
+
group_ids = torch.zeros(B, dtype=torch.long)
|
| 188 |
+
think_start = torch.zeros(B, dtype=torch.long)
|
| 189 |
+
suffix_len = torch.zeros(B, dtype=torch.long)
|
| 190 |
+
old_logp = torch.zeros(B, T, dtype=torch.float32)
|
| 191 |
+
for b, row in enumerate(rows):
|
| 192 |
+
ex, ids, chain = row.example, row.input_ids, row.chain_span
|
| 193 |
+
n = len(ids)
|
| 194 |
+
input_ids[b, :n] = torch.tensor(ids, dtype=torch.long)
|
| 195 |
+
attention_mask[b, :n] = 1
|
| 196 |
+
opts, decide = readout_positions(ids, m)
|
| 197 |
+
if len(opts) != ex.n_options:
|
| 198 |
+
raise ValueError(f"expected {ex.n_options} option boundaries, found {len(opts)} for {ex.record_id}")
|
| 199 |
+
opt_index[b, :ex.n_options] = torch.tensor(opts, dtype=torch.long) + b * T
|
| 200 |
+
opt_mask[b, :ex.n_options] = True
|
| 201 |
+
decide_index[b] = decide + b * T
|
| 202 |
+
labels[b] = ex.label
|
| 203 |
+
if ex.target is not None:
|
| 204 |
+
targets[b, :ex.n_options] = torch.tensor(ex.target, dtype=torch.float32)
|
| 205 |
+
else:
|
| 206 |
+
targets[b, ex.label] = 1.0
|
| 207 |
+
source_ids[b] = ex.source_id
|
| 208 |
+
if chain is not None:
|
| 209 |
+
chain_mask[b, chain[0]:chain[1]] = True
|
| 210 |
+
valid[b] = row.closed
|
| 211 |
+
group_ids[b] = row.group_id
|
| 212 |
+
think_start[b] = len(ex.prompt)
|
| 213 |
+
suffix_len[b] = len(ex.remainder)
|
| 214 |
+
if row.logprobs is not None and chain is not None:
|
| 215 |
+
span = chain[1] - chain[0]
|
| 216 |
+
old_logp[b, chain[0]:chain[1]] = torch.tensor(row.logprobs[:span], dtype=torch.float32)
|
| 217 |
+
return Batch(input_ids, attention_mask, opt_index, opt_mask, decide_index, labels, targets, source_ids,
|
| 218 |
+
chain_mask, valid, group_ids, think_start, suffix_len, old_logp)
|
| 219 |
+
|
| 220 |
+
|
| 221 |
+
def collate_sft(examples: list[Example], m: Markers) -> Batch:
|
| 222 |
+
rows = []
|
| 223 |
+
for i, ex in enumerate(examples):
|
| 224 |
+
if ex.think is None:
|
| 225 |
+
rows.append(CollateRow(example=ex, input_ids=ex.prompt + list(m.empty_think) + ex.remainder, group_id=i))
|
| 226 |
+
else:
|
| 227 |
+
chain, ok = split_chain(ex.think, m)
|
| 228 |
+
rows.append(CollateRow(example=ex, input_ids=ex.prompt + chain + ex.remainder, group_id=i, closed=ok))
|
| 229 |
+
return collate(rows, m)
|
| 230 |
+
|
| 231 |
+
|
| 232 |
+
def collate_prompts(examples: list[Example], m: Markers, plain: bool = False) -> tuple[torch.Tensor, torch.Tensor]:
|
| 233 |
+
prompts = [ex.plain_prompt if plain else ex.prompt for ex in examples]
|
| 234 |
+
B, T = len(examples), padded_length(max(len(p) for p in prompts), m.pad_multiple)
|
| 235 |
+
input_ids = torch.full((B, T), m.pad_id, dtype=torch.long)
|
| 236 |
+
attention_mask = torch.zeros(B, T, dtype=torch.long)
|
| 237 |
+
for b, p in enumerate(prompts):
|
| 238 |
+
n = len(p)
|
| 239 |
+
input_ids[b, T - n:] = torch.tensor(p, dtype=torch.long)
|
| 240 |
+
attention_mask[b, T - n:] = 1
|
| 241 |
+
return input_ids, attention_mask
|
| 242 |
+
|
| 243 |
+
|
| 244 |
+
def split_chain(generated: list[int], m: Markers) -> tuple[list[int], bool]:
|
| 245 |
+
if m.think_end_id in generated:
|
| 246 |
+
return generated[:generated.index(m.think_end_id)], True
|
| 247 |
+
return generated, False
|
| 248 |
+
|
| 249 |
+
|
| 250 |
+
def collate_rollouts(examples: list[Example], generated: list[list[int]], group_ids: list[int], m: Markers,
|
| 251 |
+
logprobs: list[list[float] | None] | None = None) -> Batch:
|
| 252 |
+
rows = []
|
| 253 |
+
for i, (ex, gen, group) in enumerate(zip(examples, generated, group_ids)):
|
| 254 |
+
chain, ok = split_chain(gen, m)
|
| 255 |
+
ids = ex.prompt + chain + ex.remainder
|
| 256 |
+
span = (len(ex.prompt), len(ex.prompt) + len(chain) + int(ok))
|
| 257 |
+
rows.append(CollateRow(example=ex, input_ids=ids, group_id=group, closed=ok, chain_span=span,
|
| 258 |
+
logprobs=logprobs[i] if logprobs is not None else None))
|
| 259 |
+
return collate(rows, m)
|
| 260 |
+
|
| 261 |
+
|
| 262 |
+
def make_loader(examples: list[Example], batch_size: int, m: Markers, shuffle: bool, rank: int = 0, world_size: int = 1,
|
| 263 |
+
seed: int = 0, drop_last: bool = True, num_workers: int = 2) -> DataLoader:
|
| 264 |
+
sampler = DistributedSampler(examples, num_replicas=world_size, rank=rank, shuffle=shuffle, seed=seed,
|
| 265 |
+
drop_last=drop_last) if world_size > 1 else None
|
| 266 |
+
return DataLoader(examples, batch_size=batch_size, shuffle=shuffle and sampler is None, sampler=sampler,
|
| 267 |
+
collate_fn=partial(collate_sft, m=m), num_workers=num_workers, pin_memory=True, drop_last=drop_last,
|
| 268 |
+
persistent_workers=num_workers > 0, generator=torch.Generator().manual_seed(seed))
|
provenance/upstream_head.py
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from torch import Tensor, nn
|
| 2 |
+
|
| 3 |
+
|
| 4 |
+
class PointerHead(nn.Module):
|
| 5 |
+
def __init__(self, d_embed: int, d_latent: int = 256):
|
| 6 |
+
super().__init__()
|
| 7 |
+
self.q = nn.Linear(d_embed, d_latent)
|
| 8 |
+
self.k = nn.Linear(d_embed, d_latent)
|
| 9 |
+
self.scale = d_latent**-0.5
|
| 10 |
+
self.temperature = 1.0
|
| 11 |
+
|
| 12 |
+
def forward(
|
| 13 |
+
self,
|
| 14 |
+
questions: Tensor, # (B, K, D)
|
| 15 |
+
decide: Tensor # (B, D)
|
| 16 |
+
) -> Tensor:
|
| 17 |
+
options = self.k(questions.to(self.k.weight.dtype))
|
| 18 |
+
query = self.q(decide.to(self.q.weight.dtype))
|
| 19 |
+
logits = (options @ query.unsqueeze(-1)).squeeze(-1) * self.scale
|
| 20 |
+
return logits if self.training or self.temperature == 1.0 else logits / self.temperature
|
provenance/upstream_model_card.md
ADDED
|
@@ -0,0 +1,106 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
license: apache-2.0
|
| 3 |
+
base_model: Qwen/Qwen3.5-9B
|
| 4 |
+
language:
|
| 5 |
+
- en
|
| 6 |
+
pipeline_tag: text-classification
|
| 7 |
+
tags:
|
| 8 |
+
- decision
|
| 9 |
+
- calibration
|
| 10 |
+
- reasoning
|
| 11 |
+
- speculative-decoding
|
| 12 |
+
- qwen3.5
|
| 13 |
+
---
|
| 14 |
+
|
| 15 |
+
# Jeeves-9B
|
| 16 |
+
|
| 17 |
+
A Jev-like decision model that reasons before it decides. Give it a state (text or JSON) and yes/no, multiple-choice or rating questions; it writes a reasoning chain per question and returns a calibrated probability for every option.
|
| 18 |
+
|
| 19 |
+
This repository holds the fused weights (Qwen3.5-9B with the LoRA merged), the pointer head, the fitted temperature, and two speculative-decoding drafters. It loads with the Jeeves code, not with `transformers`: the pointer head and the prompt format are part of the model.
|
| 20 |
+
|
| 21 |
+
## Files
|
| 22 |
+
|
| 23 |
+
| file | contents |
|
| 24 |
+
|---|---|
|
| 25 |
+
| `model-*.safetensors`, `config.json` | fused Qwen3.5-9B weights, bf16 |
|
| 26 |
+
| `head.pt` | pointer head (query and key projections, 256-dim) |
|
| 27 |
+
| `export.json` | temperature (1.859), prompt format, training step and config |
|
| 28 |
+
| `tokenizer.json`, `vocab.json`, `merges.txt`, `tokenizer_config.json`, `chat_template.jinja` | Qwen3.5 tokenizer |
|
| 29 |
+
| `drafter_k4.safetensors` | block-4 drafter, the serving default, bf16 |
|
| 30 |
+
| `drafter_k8.safetensors` | block-8 drafter, faster for single-question requests, bf16 |
|
| 31 |
+
| `drafter_k4.config.json`, `drafter_k8.config.json` | drafter training settings |
|
| 32 |
+
| `LICENSE` | Apache-2.0, inherited from Qwen3.5-9B |
|
| 33 |
+
|
| 34 |
+
## Usage
|
| 35 |
+
|
| 36 |
+
```bash
|
| 37 |
+
hf download PostHog/jeeves --local-dir jeeves-weights
|
| 38 |
+
git clone https://github.com/PostHog/jeeves && cd jeeves
|
| 39 |
+
python -m inference.serve --model ../jeeves-weights --drafter ../jeeves-weights/drafter_k4.safetensors --port 8009
|
| 40 |
+
```
|
| 41 |
+
|
| 42 |
+
```bash
|
| 43 |
+
curl -s localhost:8009/v1/systemone -H 'content-type: application/json' -d '{
|
| 44 |
+
"state": "I was charged twice for one order.",
|
| 45 |
+
"questions": {
|
| 46 |
+
"billing": {"type": "noul", "instructions": "Is this about billing?"},
|
| 47 |
+
"tone": {"type": "choice", "instructions": "What is the customer'"'"'s tone?", "criteria": {"calm": null, "frustrated": null, "angry": null}}
|
| 48 |
+
}}'
|
| 49 |
+
```
|
| 50 |
+
|
| 51 |
+
The request and response follow Jev's `/v1/systemone` format. An optional `options` object sets `think`, `max_think` (truncate chains), `nothink_threshold` (skip thinking when the no-think answer is already confident) and `return_reasoning`. Serving needs a CUDA GPU; the FP8 kernel needs Hopper, and `--no-fp8` serves in bf16.
|
| 52 |
+
|
| 53 |
+
## Results
|
| 54 |
+
|
| 55 |
+
Accuracy with thinking, greedy, 2,560-token cap. Kev-9B and Jev numbers are the ones Kev publishes. JevBench uses the same 231 public items for every model (the sealed judge tier is not included); the other rows use the same sources with different items.
|
| 56 |
+
|
| 57 |
+
| | Kev-9B | Jev | Jeeves-9B |
|
| 58 |
+
|---|---|---|---|
|
| 59 |
+
| Test overall (out-of-domain and held-out) | 0.822 | 0.857 | **0.889** |
|
| 60 |
+
| MMLU-Pro and buried state | 0.579 | **0.800** | 0.746 |
|
| 61 |
+
| JevBench, public tiers | 0.715* | 0.866 | **0.935** |
|
| 62 |
+
| JevBench hard | 0.451* | 0.730 | **0.865** |
|
| 63 |
+
|
| 64 |
+
\* Kev-8B (Qwen3); no Kev-9B JevBench result is published.
|
| 65 |
+
|
| 66 |
+
Without thinking the model scores 0.804 on the Jeeves test split, against 0.840 with it. With the fitted temperature the no-think path has a top-label calibration error of 0.021 and 1.3% confident errors (wrong at p ≥ 0.9).
|
| 67 |
+
|
| 68 |
+
Serving on one H100, 325 dev questions:
|
| 69 |
+
|
| 70 |
+
| setting | accuracy | median / p90 latency |
|
| 71 |
+
|---|---|---|
|
| 72 |
+
| full thinking | 0.825 | 3.3 s / 17.1 s |
|
| 73 |
+
| `max_think` 768, `nothink_threshold` 0.9 | 0.806 | 2.0 s / 5.6 s |
|
| 74 |
+
| no thinking | 0.775 | about 0.3 s |
|
| 75 |
+
|
| 76 |
+
## Training
|
| 77 |
+
|
| 78 |
+
- **SFT.** LoRA r=16 on every projection plus the pointer head, 2 epochs on 19,126 questions from 12 public datasets and synthetic policy data; half the questions carry a reasoning chain sampled from the base model.
|
| 79 |
+
- **CISPO.** 9,992 RL questions, 8 rollouts each, up to 2,560 thinking tokens. Reward is the probability of the correct option, discounted by up to 10% for long chains. The released checkpoint is step 402 of a 624-step schedule.
|
| 80 |
+
- **Calibration.** One softmax temperature fitted on the dev set.
|
| 81 |
+
- **Drafters.** Diffusion views of the frozen model, inspired by Orthrus, distilled by KL divergence on chains sampled from this model. At one question the block-4 drafter decodes 1.6× faster than graphed greedy decoding and the block-8 drafter 1.76×.
|
| 82 |
+
|
| 83 |
+
A from-scratch reproduction with the released code matched this checkpoint within noise. The training code, dataset build scripts and pinned dataset revisions are in the GitHub repository.
|
| 84 |
+
|
| 85 |
+
## Limitations
|
| 86 |
+
|
| 87 |
+
- Knowledge questions trail Jev (MMLU 0.793 vs 0.900, MMLU-Pro 0.739 vs 0.840).
|
| 88 |
+
- Thinking is slow at the tail (17 s at p90 with full chains); use `max_think` and `nothink_threshold` when latency matters.
|
| 89 |
+
- About a third of full-length chains hit the token cap without closing; accuracy on those items is lower.
|
| 90 |
+
- Evaluated on English inputs only.
|
| 91 |
+
|
| 92 |
+
## License
|
| 93 |
+
|
| 94 |
+
The weights are derived from Qwen3.5-9B and are released under its Apache-2.0 license (`LICENSE`). The Jeeves code is MIT licensed.
|
| 95 |
+
|
| 96 |
+
## Citation
|
| 97 |
+
|
| 98 |
+
```bibtex
|
| 99 |
+
@software{waltz2026jeeves,
|
| 100 |
+
author = {Waltz, Nicholas P.},
|
| 101 |
+
title = {Jeeves: Reasoning Improves Jev-like Decisions},
|
| 102 |
+
year = {2026},
|
| 103 |
+
url = {https://github.com/PostHog/jeeves},
|
| 104 |
+
note = {Qwen3.5-9B decision model trained with SFT and CISPO, with a block-4 diffusion drafter}
|
| 105 |
+
}
|
| 106 |
+
```
|
requirements-mac.txt
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
mlx==0.32.3
|
| 2 |
+
mlx-lm @ git+https://github.com/ml-explore/mlx-lm.git@94cdcae13b266c337bcaca09b97b9c5a9c0e2cde
|
| 3 |
+
transformers==5.17.0
|
| 4 |
+
huggingface-hub==1.33.0
|
| 5 |
+
numpy==2.5.3
|
| 6 |
+
safetensors==0.8.0
|
run_jeeves.py
ADDED
|
@@ -0,0 +1,180 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
"""MLX Jeeves runner: no-thinking decisions and optional ordinary greedy reasoning.
|
| 2 |
+
|
| 3 |
+
This is a correctness-oriented runner, not a port of the CUDA speculative server.
|
| 4 |
+
The pointer head stays FP32. Each question gets its own recurrent/KV cache.
|
| 5 |
+
"""
|
| 6 |
+
from __future__ import annotations
|
| 7 |
+
import argparse
|
| 8 |
+
import json
|
| 9 |
+
import platform
|
| 10 |
+
import sys
|
| 11 |
+
import time
|
| 12 |
+
from pathlib import Path
|
| 13 |
+
import numpy as np
|
| 14 |
+
import mlx.core as mx
|
| 15 |
+
from mlx_lm import load
|
| 16 |
+
|
| 17 |
+
# Keep the vendored, torch-free format modules next to this runner.
|
| 18 |
+
sys.path.insert(0, str(Path(__file__).resolve().parent))
|
| 19 |
+
from dataformat import DataFormat
|
| 20 |
+
from jeeves_format import Encoder, readout_positions
|
| 21 |
+
|
| 22 |
+
|
| 23 |
+
def head_scores(weights, hidden, temperature):
|
| 24 |
+
if not np.isfinite(temperature) or temperature <= 0:
|
| 25 |
+
raise ValueError("The exported calibration temperature must be finite and positive.")
|
| 26 |
+
h = mx.array(hidden, dtype=mx.float32)
|
| 27 |
+
options = h[:-1] @ weights["k.weight"].T + weights["k.bias"]
|
| 28 |
+
query = h[-1] @ weights["q.weight"].T + weights["q.bias"]
|
| 29 |
+
raw = (options @ query) * (weights["q.weight"].shape[0] ** -0.5)
|
| 30 |
+
calibrated = raw / temperature
|
| 31 |
+
probabilities = mx.softmax(calibrated, axis=-1)
|
| 32 |
+
mx.eval(raw, calibrated, probabilities)
|
| 33 |
+
result = tuple(np.asarray(x, dtype=np.float32) for x in (raw, calibrated, probabilities))
|
| 34 |
+
if not all(np.isfinite(x).all() for x in result) or not np.isclose(result[2].sum(), 1.0, atol=1e-5):
|
| 35 |
+
raise FloatingPointError("Non-finite or invalid decision probabilities.")
|
| 36 |
+
return result
|
| 37 |
+
|
| 38 |
+
|
| 39 |
+
class JeevesMLX:
|
| 40 |
+
def __init__(self, model_dir, *, device="auto", chunk_size=16, max_context=4096):
|
| 41 |
+
self.path = Path(model_dir).expanduser().resolve()
|
| 42 |
+
if device == "auto":
|
| 43 |
+
device = "gpu" if platform.system() == "Darwin" and mx.metal.is_available() else "cpu"
|
| 44 |
+
if device not in {"cpu", "gpu"}:
|
| 45 |
+
raise ValueError("device must be auto, cpu, or gpu")
|
| 46 |
+
if device == "gpu" and not mx.metal.is_available():
|
| 47 |
+
raise RuntimeError("This runner's GPU mode requires Apple Metal. Use --device cpu on Colab.")
|
| 48 |
+
mx.set_default_device(mx.cpu if device == "cpu" else mx.gpu)
|
| 49 |
+
self.device = device
|
| 50 |
+
self.chunk_size = int(chunk_size)
|
| 51 |
+
self.max_context = int(max_context)
|
| 52 |
+
if self.chunk_size < 1 or self.max_context < 1:
|
| 53 |
+
raise ValueError("chunk_size and max_context must be positive")
|
| 54 |
+
self.export = json.loads((self.path / "export.json").read_text())
|
| 55 |
+
self.temperature = float(self.export["temperature"])
|
| 56 |
+
self.encoder = Encoder(str(self.path), pad_multiple=1)
|
| 57 |
+
if self.encoder.FORMAT != self.export["format"]:
|
| 58 |
+
raise ValueError("The exported prompt format does not match the bundled encoder.")
|
| 59 |
+
self.model, _ = load(str(self.path), tokenizer_config={"trust_remote_code": False}, lazy=False)
|
| 60 |
+
self.lm = self.model.language_model
|
| 61 |
+
self.core = self.lm.model
|
| 62 |
+
self.model.eval()
|
| 63 |
+
self.head = {k: v.astype(mx.float32) for k, v in mx.load(str(self.path / "head.safetensors")).items()}
|
| 64 |
+
mx.eval(self.head)
|
| 65 |
+
if set(self.head) != {"q.weight", "q.bias", "k.weight", "k.bias"}:
|
| 66 |
+
raise ValueError("Unexpected pointer-head tensors")
|
| 67 |
+
self.max_context = min(self.max_context, self.lm.args.max_position_embeddings)
|
| 68 |
+
|
| 69 |
+
def _evaluate(self, tokens, cache):
|
| 70 |
+
h = self.core(mx.array(tokens, dtype=mx.int32)[None], cache=cache)
|
| 71 |
+
mx.eval(h, [entry.state for entry in cache])
|
| 72 |
+
return h
|
| 73 |
+
|
| 74 |
+
def score_tokens(self, ids, n_options, *, progress=False):
|
| 75 |
+
"""Return selected final-normalized hidden states plus head probabilities."""
|
| 76 |
+
if not ids or len(ids) > self.max_context:
|
| 77 |
+
raise ValueError(f"Input length {len(ids)} exceeds cap {self.max_context}; no silent truncation.")
|
| 78 |
+
if ids[-1] != self.encoder.decide_id:
|
| 79 |
+
raise ValueError("The last token is not the Jeeves decision marker.")
|
| 80 |
+
opts, decide = readout_positions(ids, self.encoder.markers)
|
| 81 |
+
if len(opts) != n_options:
|
| 82 |
+
raise ValueError("Suffix option marker count mismatch")
|
| 83 |
+
positions = opts + [decide]
|
| 84 |
+
selected = {}
|
| 85 |
+
cache = self.lm.make_cache()
|
| 86 |
+
for start in range(0, len(ids), self.chunk_size):
|
| 87 |
+
end = min(start + self.chunk_size, len(ids))
|
| 88 |
+
h = self._evaluate(ids[start:end], cache)
|
| 89 |
+
for pos in positions:
|
| 90 |
+
if start <= pos < end:
|
| 91 |
+
selected[pos] = np.asarray(h[0, pos - start].astype(mx.float32)).copy()
|
| 92 |
+
if progress:
|
| 93 |
+
print(f" CPU prefill {end}/{len(ids)} tokens", flush=True)
|
| 94 |
+
hidden = np.stack([selected[pos] for pos in positions])
|
| 95 |
+
if not np.isfinite(hidden).all():
|
| 96 |
+
raise FloatingPointError("Non-finite hidden states")
|
| 97 |
+
raw, logits, probabilities = head_scores(self.head, hidden, self.temperature)
|
| 98 |
+
return {"hidden": hidden, "raw_logits": raw, "logits": logits, "probabilities": probabilities,
|
| 99 |
+
"option_positions": opts, "decide_position": decide}
|
| 100 |
+
|
| 101 |
+
def greedy_chain(self, prompt, budget):
|
| 102 |
+
"""No speculative drafting. Stop before </think>; caller adds the suffix."""
|
| 103 |
+
if budget < 1 or len(prompt) + budget > self.max_context:
|
| 104 |
+
raise ValueError("Invalid reasoning budget or context overflow")
|
| 105 |
+
cache = self.lm.make_cache()
|
| 106 |
+
for start in range(0, len(prompt), self.chunk_size):
|
| 107 |
+
h = self._evaluate(prompt[start:start + self.chunk_size], cache)
|
| 108 |
+
banned = mx.array(self.encoder.banned_ids, dtype=mx.int32)
|
| 109 |
+
bias = mx.zeros((self.lm.args.vocab_size,), dtype=mx.float32)
|
| 110 |
+
bias[banned] = -1e4 # Same suppression magnitude as the upstream predictor.
|
| 111 |
+
chain = []
|
| 112 |
+
for _ in range(budget):
|
| 113 |
+
logits = (self.lm.model.embed_tokens.as_linear(h[:, -1]) if self.lm.args.tie_word_embeddings
|
| 114 |
+
else self.lm.lm_head(h[:, -1]))
|
| 115 |
+
logits = logits.astype(mx.float32) + bias
|
| 116 |
+
token = int(mx.argmax(logits[0]).item())
|
| 117 |
+
if token == self.encoder.think_end_id:
|
| 118 |
+
return chain, True
|
| 119 |
+
chain.append(token)
|
| 120 |
+
h = self._evaluate([token], cache)
|
| 121 |
+
return chain, False
|
| 122 |
+
|
| 123 |
+
def predict(self, request, *, think_tokens=0):
|
| 124 |
+
if not isinstance(think_tokens, int) or isinstance(think_tokens, bool) or think_tokens < 0:
|
| 125 |
+
raise ValueError("think_tokens must be a nonnegative integer")
|
| 126 |
+
record = DataFormat.from_dict(request)
|
| 127 |
+
if len(record.questions) > 64:
|
| 128 |
+
raise ValueError("At most 64 questions per request in this reference runner")
|
| 129 |
+
results = {}
|
| 130 |
+
for question in record.questions:
|
| 131 |
+
keys = question.keys()
|
| 132 |
+
if not keys:
|
| 133 |
+
raise ValueError(f"Question {question.id} has no options")
|
| 134 |
+
prompt = self.encoder.encode(self.encoder.prompt_text(record, question))
|
| 135 |
+
suffix = self.encoder.encode(self.encoder.remainder_text(question))
|
| 136 |
+
if len(prompt) + max(think_tokens, len(self.encoder.empty_think)) + len(suffix) > self.max_context:
|
| 137 |
+
raise ValueError("Request plus reasoning/suffix exceeds max_context; shorten the request.")
|
| 138 |
+
started = time.perf_counter()
|
| 139 |
+
if think_tokens:
|
| 140 |
+
chain, closed = self.greedy_chain(prompt, think_tokens)
|
| 141 |
+
else:
|
| 142 |
+
chain, closed = list(self.encoder.empty_think), True
|
| 143 |
+
# Re-prefill the exact complete sequence for readout. Safe, but not latency-optimized.
|
| 144 |
+
scored = self.score_tokens(prompt + chain + suffix, len(keys))
|
| 145 |
+
p = scored["probabilities"]
|
| 146 |
+
results[question.id] = {
|
| 147 |
+
"type": question.type, "selected": keys[int(p.argmax())],
|
| 148 |
+
"probabilities": {key: float(value) for key, value in zip(keys, p)},
|
| 149 |
+
"input_tokens": len(prompt) + len(chain) + len(suffix),
|
| 150 |
+
"reasoning_tokens": len(chain) if think_tokens else 0,
|
| 151 |
+
"reasoning_closed": closed if think_tokens else None,
|
| 152 |
+
"reasoning": self.encoder.tok.decode(chain, skip_special_tokens=False) if think_tokens else None,
|
| 153 |
+
"elapsed_seconds": time.perf_counter() - started,
|
| 154 |
+
}
|
| 155 |
+
return {"model": "PostHog/jeeves (MLX port)", "device": self.device,
|
| 156 |
+
"mode": "greedy-thinking" if think_tokens else "no-thinking",
|
| 157 |
+
"temperature": self.temperature, "results": results}
|
| 158 |
+
|
| 159 |
+
|
| 160 |
+
def main():
|
| 161 |
+
parser = argparse.ArgumentParser(description=__doc__)
|
| 162 |
+
parser.add_argument("--model", default=str(Path(__file__).resolve().parent))
|
| 163 |
+
parser.add_argument("--request", required=True, help="Path to a JSON state/questions object")
|
| 164 |
+
parser.add_argument("--output", default="")
|
| 165 |
+
parser.add_argument("--device", choices=["auto", "cpu", "gpu"], default="auto")
|
| 166 |
+
parser.add_argument("--chunk-size", type=int, default=16)
|
| 167 |
+
parser.add_argument("--max-context", type=int, default=4096)
|
| 168 |
+
parser.add_argument("--think-tokens", type=int, default=0)
|
| 169 |
+
args = parser.parse_args()
|
| 170 |
+
model = JeevesMLX(args.model, device=args.device, chunk_size=args.chunk_size, max_context=args.max_context)
|
| 171 |
+
request = json.loads(Path(args.request).read_text(encoding="utf-8"))
|
| 172 |
+
result = model.predict(request, think_tokens=args.think_tokens)
|
| 173 |
+
text = json.dumps(result, indent=2, ensure_ascii=False, allow_nan=False)
|
| 174 |
+
if args.output:
|
| 175 |
+
Path(args.output).write_text(text + "\n", encoding="utf-8")
|
| 176 |
+
print(text)
|
| 177 |
+
|
| 178 |
+
|
| 179 |
+
if __name__ == "__main__":
|
| 180 |
+
main()
|
tokenizer.json
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:06b9509352d2af50381ab2247e083b80d32d5c0aba91c272ca9ff729b6a0e523
|
| 3 |
+
size 19989325
|
tokenizer_config.json
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"add_prefix_space": false,
|
| 3 |
+
"audio_bos_token": "<|audio_start|>",
|
| 4 |
+
"audio_eos_token": "<|audio_end|>",
|
| 5 |
+
"audio_token": "<|audio_pad|>",
|
| 6 |
+
"backend": "tokenizers",
|
| 7 |
+
"bos_token": null,
|
| 8 |
+
"clean_up_tokenization_spaces": false,
|
| 9 |
+
"eos_token": "<|im_end|>",
|
| 10 |
+
"errors": "replace",
|
| 11 |
+
"image_token": "<|image_pad|>",
|
| 12 |
+
"is_local": true,
|
| 13 |
+
"local_files_only": false,
|
| 14 |
+
"model_max_length": 262144,
|
| 15 |
+
"model_specific_special_tokens": {
|
| 16 |
+
"audio_bos_token": "<|audio_start|>",
|
| 17 |
+
"audio_eos_token": "<|audio_end|>",
|
| 18 |
+
"audio_token": "<|audio_pad|>",
|
| 19 |
+
"image_token": "<|image_pad|>",
|
| 20 |
+
"video_token": "<|video_pad|>",
|
| 21 |
+
"vision_bos_token": "<|vision_start|>",
|
| 22 |
+
"vision_eos_token": "<|vision_end|>"
|
| 23 |
+
},
|
| 24 |
+
"pad_token": "<|endoftext|>",
|
| 25 |
+
"pretokenize_regex": "(?i:'s|'t|'re|'ve|'m|'ll|'d)|[^\\r\\n\\p{L}\\p{N}]?[\\p{L}\\p{M}]+|\\p{N}| ?[^\\s\\p{L}\\p{M}\\p{N}]+[\\r\\n]*|\\s*[\\r\\n]+|\\s+(?!\\S)|\\s+",
|
| 26 |
+
"split_special_tokens": false,
|
| 27 |
+
"tokenizer_class": "Qwen2Tokenizer",
|
| 28 |
+
"tool_parser_type": "qwen3_coder",
|
| 29 |
+
"unk_token": null,
|
| 30 |
+
"video_token": "<|video_pad|>",
|
| 31 |
+
"vision_bos_token": "<|vision_start|>",
|
| 32 |
+
"vision_eos_token": "<|vision_end|>"
|
| 33 |
+
}
|
validation.json
ADDED
|
@@ -0,0 +1,67 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"variant": "jeeves-mlx-4bit",
|
| 3 |
+
"identity": "c4d0ea30e584dbf0d1e672c59c2e00036cb6a1a7025833ef49c01c63432b18fa",
|
| 4 |
+
"conversion": "weights_converted_and_structurally_checked",
|
| 5 |
+
"format_head_checks": {
|
| 6 |
+
"status": "passed",
|
| 7 |
+
"format_cases": 4,
|
| 8 |
+
"original_head_dtypes": {
|
| 9 |
+
"q.weight": "torch.float32",
|
| 10 |
+
"q.bias": "torch.float32",
|
| 11 |
+
"k.weight": "torch.float32",
|
| 12 |
+
"k.bias": "torch.float32"
|
| 13 |
+
},
|
| 14 |
+
"exported_head_dtype": "float32",
|
| 15 |
+
"temperature": 1.8589280843734741,
|
| 16 |
+
"max_head_probability_error": 0.0,
|
| 17 |
+
"scope": "Original encoder token/readout parity, safe head serialization, and original PyTorch head vs MLX head on synthetic hidden states. Not backbone parity."
|
| 18 |
+
},
|
| 19 |
+
"cpu_smoke": {
|
| 20 |
+
"status": "passed",
|
| 21 |
+
"identity": "c4d0ea30e584dbf0d1e672c59c2e00036cb6a1a7025833ef49c01c63432b18fa",
|
| 22 |
+
"device": "cpu",
|
| 23 |
+
"cases": [
|
| 24 |
+
{
|
| 25 |
+
"id": "case0",
|
| 26 |
+
"probabilities": [
|
| 27 |
+
0.016998127102851868,
|
| 28 |
+
0.9830018877983093
|
| 29 |
+
],
|
| 30 |
+
"elapsed_seconds": 4345.674271831
|
| 31 |
+
}
|
| 32 |
+
],
|
| 33 |
+
"fixture_sha256": "2887c941fd5a497ae51343a9e2382ea1d198ab5eb140f4e8c8fd37c54be4ebf0",
|
| 34 |
+
"scope": "Small no-thinking execution smoke test; not a benchmark."
|
| 35 |
+
},
|
| 36 |
+
"bf16_backbone_parity": {
|
| 37 |
+
"status": "small_fixture_check_passed",
|
| 38 |
+
"cases": [
|
| 39 |
+
{
|
| 40 |
+
"id": "case0",
|
| 41 |
+
"maximum_probability_delta": 0.00010848045349121094,
|
| 42 |
+
"minimum_hidden_cosine": 0.9999632468948669,
|
| 43 |
+
"top_option_agreement": true,
|
| 44 |
+
"within_diagnostic_tolerances": true
|
| 45 |
+
}
|
| 46 |
+
],
|
| 47 |
+
"probability_atol": 0.02,
|
| 48 |
+
"minimum_cosine": 0.995,
|
| 49 |
+
"scope": "Heuristic diagnostic tolerances, not bitwise equivalence or general accuracy evidence."
|
| 50 |
+
},
|
| 51 |
+
"apple_metal_validation": "not_run",
|
| 52 |
+
"task_accuracy_calibration_benchmark": "not_run",
|
| 53 |
+
"speculative_drafters": "not_ported",
|
| 54 |
+
"greedy_generation_validation": "not_run",
|
| 55 |
+
"quantization_vs_mlx_bf16": {
|
| 56 |
+
"cases": [
|
| 57 |
+
{
|
| 58 |
+
"id": "case0",
|
| 59 |
+
"maximum_probability_delta": 0.016297996044158936,
|
| 60 |
+
"top_option_agreement": true
|
| 61 |
+
}
|
| 62 |
+
],
|
| 63 |
+
"status": "measured_not_quality_certified"
|
| 64 |
+
},
|
| 65 |
+
"overall_status": "converted_and_small_cpu_diagnostics_passed_not_benchmarked",
|
| 66 |
+
"diagnostic_failures": []
|
| 67 |
+
}
|