Agnes-AI commited on
Commit
edebd87
·
verified ·
1 Parent(s): e896edf

Upload folder using huggingface_hub

Browse files
LICENSE ADDED
@@ -0,0 +1,195 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Apache License
2
+ Version 2.0, January 2004
3
+ http://www.apache.org/licenses/
4
+
5
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
6
+
7
+ 1. Definitions.
8
+
9
+ "License" shall mean the terms and conditions for use, reproduction,
10
+ and distribution as defined by Sections 1 through 9 of this document.
11
+
12
+ "Licensor" shall mean the copyright owner or entity authorized by
13
+ the copyright owner that is granting the License.
14
+
15
+ "Legal Entity" shall mean the union of the acting entity and all
16
+ other entities that control, are controlled by, or are under common
17
+ control with that entity. For the purposes of this definition,
18
+ "control" means (i) the power, direct or indirect, to cause the
19
+ direction or management of such entity, whether by contract or
20
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
21
+ outstanding shares, or (iii) beneficial ownership of such entity.
22
+ "You" (or "Your") shall mean an individual or Legal Entity
23
+ exercising permissions granted by this License.
24
+
25
+ "Source" form shall mean the preferred form for making modifications,
26
+ including but not limited to software source code, documentation
27
+ source, and configuration files.
28
+ "Object" form shall mean any form resulting from mechanical
29
+ transformation or translation of a Source form, including but
30
+ not limited to compiled object code, generated documentation,
31
+ and conversions to other media types.
32
+
33
+ "Work" shall mean the work of authorship, whether in Source or
34
+ Object form, made available under the License, as indicated by a
35
+ copyright notice that is included in or attached to the work
36
+ (an example is provided in the Appendix below).
37
+ "Derivative Works" shall mean any work, whether in Source or Object
38
+ form, that is based on (or derived from) the Work and for which the
39
+ editorial revisions, annotations, elaborations, or other modifications
40
+ represent, as a whole, an original work of authorship. For the purposes
41
+ of this License, Derivative Works shall not include works that remain
42
+ separable from, or merely link (or bind by name) to the interfaces of,
43
+ the Work and Derivative Works thereof.
44
+ "Contribution" shall mean any work of authorship, including
45
+ the original version of the Work and any modifications or additions
46
+ to that Work or Derivative Works thereof, that is intentionally
47
+ submitted to Licensor for inclusion in the Work by the copyright owner
48
+ or by an individual or Legal Entity authorized to submit on behalf
49
+ of the copyright owner. For the purposes of this definition, "submitted"
50
+ means any form of electronic, verbal, or written communication sent
51
+ to the Licensor or its representatives, including but not limited to
52
+ communication on electronic mailing lists, source code control systems,
53
+ and issue tracking systems that are managed by, or on behalf of
54
+ the Licensor for the purpose of discussing and improving the Work, but
55
+ excluding communication that is conspicuously marked or otherwise
56
+ designated in writing by the copyright owner as "Not a Contribution."
57
+ "Contributor" shall mean Licensor and any individual or Legal Entity
58
+ on behalf of whom a Contribution has been received by Licensor and
59
+ subsequently incorporated within the Work.
60
+
61
+ 2. Grant of Copyright License. Subject to the terms and conditions of
62
+ this License, each Contributor hereby grants to You a perpetual,
63
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
64
+ copyright license to reproduce, prepare Derivative Works of,
65
+ publicly display, publicly perform, sublicense, and distribute the
66
+ Work and such Derivative Works in Source or Object form.
67
+
68
+ 3. Grant of Patent License. Subject to the terms and conditions of
69
+ this License, each Contributor hereby grants to You a perpetual,
70
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
71
+ (except as stated in this section) patent license to make, have made,
72
+ use, offer to sell, sell, import, and otherwise transfer the Work,
73
+ where such license applies only to those patent claims licensable
74
+ by such Contributor that are necessarily infringed by their
75
+ Contribution(s) alone or by combination of their Contribution(s)
76
+ with the Work to which such Contribution(s) was submitted. If You
77
+ institute patent litigation against any entity (including a
78
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
79
+ or a Contribution incorporated within the Work constitutes direct
80
+ or contributory patent infringement, then any patent licenses
81
+ granted to You under this License for that Work shall terminate
82
+ as of the date such litigation is filed.
83
+
84
+ 4. Redistribution. You may reproduce and distribute copies of the
85
+ Work or Derivative Works thereof in any medium, with or without
86
+ modifications, and in Source or Object form, provided that You
87
+ meet the following conditions:
88
+
89
+ (a) You must give any other recipients of the Work or
90
+ Derivative Works a copy of this License; and
91
+
92
+ (b) You must cause any modified files to carry prominent notices
93
+ stating that You changed the files; and
94
+
95
+ (c) You must retain, in the Source form of any Derivative Works
96
+ that You distribute, all copyright, patent, trademark, and
97
+ attribution notices from the Source form of the Work,
98
+ excluding those notices that do not pertain to any part of
99
+ the Derivative Works; and
100
+
101
+ (d) If the Work includes a "NOTICE" text file as part of its
102
+ distribution, then any Derivative Works that You distribute must
103
+ include a readable copy of the attribution notices contained
104
+ within such NOTICE file, excluding those notices that do not
105
+ pertain to any part of the Derivative Works, in at least one
106
+ of the following places: within a NOTICE text file distributed
107
+ as part of the Derivative Works; within the Source form or
108
+ documentation, if provided along with the Derivative Works; or,
109
+ within a display generated by the Derivative Works, if and
110
+ wherever such third-party notices normally appear. The contents
111
+ of the NOTICE file are for informational purposes only and
112
+ do not modify the License. You may add Your own attribution
113
+ notices within Derivative Works that You distribute, alongside
114
+ or as an addendum to the NOTICE text from the Work, provided
115
+ that such additional attribution notices cannot be construed
116
+ as modifying the License.
117
+ You may add Your own copyright statement to Your modifications and
118
+ may provide additional or different license terms and conditions
119
+ for use, reproduction, or distribution of Your modifications, or
120
+ for any such Derivative Works as a whole, provided Your use,
121
+ reproduction, and distribution of the Work otherwise complies with
122
+ the conditions stated in this License.
123
+
124
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
125
+ any Contribution intentionally submitted for inclusion in the Work
126
+ by You to the Licensor shall be under the terms and conditions of
127
+ this License, without any additional terms or conditions.
128
+ Notwithstanding the above, nothing herein shall supersede or modify
129
+ the terms of any separate license agreement you may have executed
130
+ with Licensor regarding such Contributions.
131
+
132
+ 6. Trademarks. This License does not grant permission to use the trade
133
+ names, trademarks, service marks, or product names of the Licensor,
134
+ except as required for reasonable and customary use in describing
135
+ the origin of the Work and reproducing the content of the NOTICE file.
136
+
137
+ 7. Disclaimer of Warranty. Unless required by applicable law or
138
+ agreed to in writing, Licensor provides the Work (and each
139
+ Contributor provides its Contributions) on an "AS IS" BASIS,
140
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
141
+ implied, including, without limitation, any warranties or conditions
142
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
143
+ PARTICULAR PURPOSE. You are solely responsible for determining the
144
+ appropriateness of using or redistributing the Work and assume any
145
+ risks associated with Your exercise of permissions under this License.
146
+
147
+ 8. Limitation of Liability. In no event and under no legal theory,
148
+ whether in tort (including negligence), contract, or otherwise,
149
+ unless required by applicable law (such as deliberate and grossly
150
+ negligent acts) or agreed to in writing, shall any Contributor
151
+ be liable to You for damages, including any direct, indirect, special,
152
+ incidental, or consequential damages of any character arising as a
153
+ result of this License or out of the use or inability to use the
154
+ Work (including but not limited to damages for loss of goodwill,
155
+ work stoppage, computer failure or malfunction, or any and all
156
+ other commercial damages or losses), even if such Contributor
157
+ has been advised of the possibility of such damages.
158
+
159
+ 9. Accepting Warranty or Additional Liability. While redistributing
160
+ the Work or Derivative Works thereof, You may choose to offer,
161
+ and charge a fee for, acceptance of support, warranty, indemnity,
162
+ or other liability obligations and/or rights consistent with this
163
+ License. However, in accepting such obligations, You may act only
164
+ on Your own behalf and on Your sole responsibility, not on behalf
165
+ of any other Contributor, and only if You agree to indemnify,
166
+ defend, and hold each Contributor harmless for any liability
167
+ incurred by, or claims asserted against, such Contributor by reason
168
+ of your accepting any such warranty or additional liability.
169
+
170
+ END OF TERMS AND CONDITIONS
171
+
172
+ APPENDIX: How to apply the Apache License to your work.
173
+
174
+ To apply the Apache License to your work, attach the following
175
+ boilerplate notice, with the fields enclosed by brackets "[]"
176
+ replaced with your own identifying information. (Don't include
177
+ the brackets!) The text should be enclosed in the appropriate
178
+ comment syntax for the file format. We also recommend that a
179
+ file or class name and description of purpose be included on the
180
+ same "printed page" as the copyright notice for easier
181
+ identification within third-party archives.
182
+
183
+ Copyright [yyyy] [name of copyright owner]
184
+
185
+ Licensed under the Apache License, Version 2.0 (the "License");
186
+ you may not use this file except in compliance with the License.
187
+ You may obtain a copy of the License at
188
+
189
+ http://www.apache.org/licenses/LICENSE-2.0
190
+
191
+ Unless required by applicable law or agreed to in writing, software
192
+ distributed under the License is distributed on an "AS IS" BASIS,
193
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
194
+ See the License for the specific language governing permissions and
195
+ limitations under the License.
README.md ADDED
@@ -0,0 +1,233 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ license: apache-2.0
3
+ pipeline_tag: text-generation
4
+ library_name: transformers
5
+ ---
6
+
7
+ # Agnes 2.5 flash base: An Efficient Sparse Mixture-of-Experts Foundation Model
8
+
9
+ **Agnes 2.5 flash base** is a **202B-parameter sparse Mixture-of-Experts (MoE) base model** with roughly **16B active parameters per token**. It is designed for long-context, high-throughput inference and is released here as an **FP8 checkpoint** that can be served out-of-the-box with `sglang`.
10
+
11
+ ## Introduction
12
+
13
+ Agnes 2.5 flash base is a decoder-only Transformer that combines several efficiency-oriented components:
14
+
15
+ 1. **Sparse MoE feed-forward layers.** Each of the 48 layers routes every token to **6 of 160 experts** (plus one always-on shared expert). The first 3 layers use deterministic hash routing; the remaining 45 layers use a learned top-k router with auxiliary-loss-free load balancing (`noaux_tc`).
16
+ 2. **Parallel dense FFN branch.** Layers 3–47 additionally carry a lightweight dense FFN branch (intermediate size 2048) in parallel with the MoE block, increasing per-token capacity at negligible latency cost.
17
+ 3. **Multi-head Latent Attention (MLA) with KV compression.** Attention uses low-rank query/output projections and a per-layer compressor (compression ratios alternate between 4 and 128 across layers), together with a sparse top-512 token indexer, keeping the KV cache small at very long context.
18
+ 4. **Hyper-connections.** Residual streams use multi-stream hyper-connections (`hc_mult = 4`) with Sinkhorn-normalized mixing in place of a single residual path.
19
+ 5. **1M-token context.** YaRN rotary scaling (factor 16 over a 64K base window) extends the usable context to **1,048,576 tokens**.
20
+
21
+ This repository contains the **base (pre-trained, non-instruction-tuned)** model. It is intended for continued pre-training, fine-tuning, and research; it has not undergone SFT or RLHF, so it should not be expected to follow chat-style instructions reliably.
22
+
23
+ ## Model Zoo
24
+
25
+
26
+ | Model | Precision | Layers | Experts (active / total) | Params (active / total) | Context | Hugging Face Model Card |
27
+ | ---------------- | --------- | ------ | ------------------------ | ----------------------- | --------- | ----------------------- |
28
+ | Agnes 2.5 flash base | FP8 | 48 | 6 + 1 shared / 160 | ~16B / 202B | 1,048,576 | ✅ this repository |
29
+
30
+
31
+
32
+
33
+ ### Architecture at a glance
34
+
35
+
36
+ | Hyper-parameter | Value |
37
+ | -------------------------------- | -------------------------------- |
38
+ | `hidden_size` | 4096 |
39
+ | `num_hidden_layers` | 48 |
40
+ | `num_attention_heads` | 64 (`head_dim` 512, RoPE dim 64) |
41
+ | `q_lora_rank` / `o_lora_rank` | 1024 / 1024 |
42
+ | `n_routed_experts` | 160 |
43
+ | `num_experts_per_tok` | 6 |
44
+ | `n_shared_experts` | 1 |
45
+ | `moe_intermediate_size` | 2048 |
46
+ | `parallel_ffn_intermediate_size` | 2048 (layers 3–47) |
47
+ | `num_hash_layers` | 3 |
48
+ | `index_topk` | 512 |
49
+ | `hc_mult` | 4 |
50
+ | `vocab_size` | 129,292 |
51
+ | `max_position_embeddings` | 1,048,576 |
52
+
53
+
54
+
55
+
56
+ ## Quantization
57
+
58
+ Weights are stored in **FP8 (e4m3)** with **128×128 block-wise UE8M0 scales** and **dynamic activation quantization**:
59
+
60
+ ```json
61
+ "quantization_config": {
62
+ "quant_method": "fp8",
63
+ "fmt": "e4m3",
64
+ "scale_fmt": "ue8m0",
65
+ "weight_block_size": [128, 128],
66
+ "activation_scheme": "dynamic"
67
+ }
68
+ ```
69
+
70
+ Embeddings, the LM head, normalization layers, router weights and hyper-connection parameters are kept in BF16. Every FP8 linear weight `<name>.weight` is accompanied by a sibling `<name>.scale` tensor (fp32). The checkpoint is ~190 GB across 37 `safetensors` shards.
71
+
72
+ ## Getting Started: Serving with sglang
73
+
74
+ The recommended way to run Agnes 2.5 flash base is with the **stock** `lmsysorg/sglang:v0.5.16` **Docker image**. Because Agnes support is not yet upstream in sglang, this repository ships the required support files under `[sglang_patch/](./sglang_patch)` together with a launcher script `[serve.sh](./serve.sh)` that overlays them onto the container's sglang package at start-up. **No custom image is needed, and the model directory itself is never modified.**
75
+
76
+ **Hardware note:** the FP8 checkpoint needs ~190 GB of GPU memory for weights alone. The default configuration uses tensor parallelism over 8 GPUs (e.g. 8× H100/H200 80 GB+).
77
+
78
+ ### 1. Download the model
79
+
80
+ ```shell
81
+ pip install -U "huggingface_hub[cli]"
82
+ huggingface-cli download <org>/Agnes 2.5 flash base --local-dir ./Agnes 2.5 flash base
83
+ ```
84
+
85
+
86
+
87
+ ### 2. Launch the server
88
+
89
+ ```shell
90
+ docker run --gpus all --shm-size 64g -p 30001:30002 \
91
+ -v $(pwd)/Agnes 2.5 flash base:/model \
92
+ lmsysorg/sglang:v0.5.16 bash /model/serve.sh
93
+ ```
94
+
95
+ `serve.sh` copies `sglang_patch/srt` and `sglang_patch/kernels` into the container's `sglang` package and then execs:
96
+
97
+ ```shell
98
+ sglang serve --model-path /model --trust-remote-code --tp 8 \
99
+ --context-length 1048576 --mem-fraction-static 0.90 \
100
+ --host 0.0.0.0 --port 30002
101
+ ```
102
+
103
+ Any extra sglang flags can be appended after `serve.sh` and are passed straight through, e.g. a shorter context window to leave more room for the KV cache:
104
+
105
+ ```shell
106
+ ... lmsysorg/sglang:v0.5.16 bash /model/serve.sh --context-length 262144
107
+ ```
108
+
109
+ Model loading takes roughly 10–15 minutes on 8 GPUs. The server is ready once `/health` returns `200`:
110
+
111
+ ```shell
112
+ curl http://localhost:30001/health
113
+ curl http://localhost:30001/get_model_info
114
+ ```
115
+
116
+
117
+
118
+ ### 3. Query the model
119
+
120
+ Native `/generate` endpoint:
121
+
122
+ ```shell
123
+ curl http://localhost:30001/generate \
124
+ -H "Content-Type: application/json" \
125
+ -d '{
126
+ "text": "The three laws of thermodynamics are",
127
+ "sampling_params": {"max_new_tokens": 128, "temperature": 0.7, "top_p": 0.95}
128
+ }'
129
+ ```
130
+
131
+ OpenAI-compatible completions endpoint (this is a base model, so prefer `/v1/completions` over `/v1/chat/completions`):
132
+
133
+ ```python
134
+ from openai import OpenAI
135
+
136
+ client = OpenAI(base_url="http://localhost:30001/v1", api_key="EMPTY")
137
+ resp = client.completions.create(
138
+ model="default",
139
+ prompt="The three laws of thermodynamics are",
140
+ max_tokens=128,
141
+ temperature=0.7,
142
+ top_p=0.95,
143
+ )
144
+ print(resp.choices[0].text)
145
+ ```
146
+
147
+
148
+
149
+ ### Manual variant (what `serve.sh` does)
150
+
151
+ If you prefer not to use the launcher script:
152
+
153
+ ```shell
154
+ docker run --gpus all --shm-size 64g -p 30001:30002 \
155
+ -v $(pwd)/Agnes 2.5 flash base:/model \
156
+ lmsysorg/sglang:v0.5.16 \
157
+ sh -c "cp -r /model/sglang_patch/srt /model/sglang_patch/kernels \
158
+ /sgl-workspace/sglang/python/sglang/ && \
159
+ exec sglang serve --model-path /model --trust-remote-code --tp 8 \
160
+ --context-length 1048576 --mem-fraction-static 0.90 \
161
+ --host 0.0.0.0 --port 30002"
162
+ ```
163
+
164
+ **Important:** the image version must be **exactly** `lmsysorg/sglang:v0.5.16`. The overlay replaces a small set of version-specific files inside sglang; applying it to a different release is not supported.
165
+
166
+ ## Loading with transformers
167
+
168
+ The repository ships `configuration_agnes.py` and `modeling_agnes.py`, so the model can also be loaded directly with 🤗 transformers using `trust_remote_code=True` (no sglang patch required). Note that the reference PyTorch implementation is intended for inspection, fine-tuning and research rather than high-throughput serving.
169
+
170
+ ```python
171
+ import torch
172
+ from transformers import AutoModelForCausalLM, AutoTokenizer
173
+
174
+ model_id = "<org>/Agnes 2.5 flash base"
175
+ tokenizer = AutoTokenizer.from_pretrained(model_id, trust_remote_code=True)
176
+ model = AutoModelForCausalLM.from_pretrained(
177
+ model_id,
178
+ trust_remote_code=True,
179
+ torch_dtype=torch.bfloat16,
180
+ device_map="auto",
181
+ )
182
+
183
+ inputs = tokenizer("The three laws of thermodynamics are", return_tensors="pt").to(model.device)
184
+ out = model.generate(**inputs, max_new_tokens=64, do_sample=True, temperature=0.7, top_p=0.95)
185
+ print(tokenizer.decode(out[0], skip_special_tokens=True))
186
+ ```
187
+
188
+
189
+
190
+ ## Repository layout
191
+
192
+ ```
193
+ Agnes 2.5 flash base/
194
+ ├── config.json # architecture + FP8 quantization_config
195
+ ├── generation_config.json
196
+ ├── configuration_agnes.py # transformers remote code
197
+ ├── modeling_agnes.py
198
+ ├── tokenizer.json / tokenizer_config.json
199
+ ├── model-000xx-of-00037.safetensors
200
+ ├── model.safetensors.index.json
201
+ ├── serve.sh # one-command sglang launcher
202
+ └── sglang_patch/ # Agnes support overlay for sglang v0.5.16
203
+ ├── srt/...
204
+ └── kernels/...
205
+ ```
206
+
207
+
208
+
209
+ ## Limitations
210
+
211
+ - **Base model.** No instruction tuning or safety alignment has been applied. Outputs may be incoherent, biased or unsafe; apply your own alignment and filtering before deployment.
212
+ - **Memory.** The full FP8 checkpoint requires multi-GPU tensor parallelism; single-GPU inference is not supported.
213
+ - **sglang version pin.** The bundled overlay targets sglang `v0.5.16` only.
214
+
215
+ ## License
216
+ Both the code repository and the model weights are released under the [Apache License 2.0](LICENSE).
217
+
218
+
219
+ ## Citation
220
+
221
+ If you use Agnes 2.5 flash base in your research, please cite:
222
+
223
+ ```bibtex
224
+ @misc{agnes2026flash,
225
+ title={Agnes 2.5 flash base: An Efficient Sparse Mixture-of-Experts Foundation Model},
226
+ author={Agnes AI Team},
227
+ year={2026},
228
+ url={https://huggingface.co/<org>/Agnes 2.5 flash base},
229
+ }
230
+ ```
231
+
232
+
233
+
config.json ADDED
@@ -0,0 +1,122 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "model_type": "agnes",
3
+ "architectures": [
4
+ "AgnesForCausalLM"
5
+ ],
6
+ "auto_map": {
7
+ "AutoConfig": "configuration_agnes.AgnesConfig",
8
+ "AutoModel": "modeling_agnes.AgnesModel",
9
+ "AutoModelForCausalLM": "modeling_agnes.AgnesForCausalLM"
10
+ },
11
+ "torch_dtype": "bfloat16",
12
+ "transformers_version": "4.57.1",
13
+ "vocab_size": 129292,
14
+ "hidden_size": 4096,
15
+ "num_hidden_layers": 48,
16
+ "num_attention_heads": 64,
17
+ "num_key_value_heads": 1,
18
+ "head_dim": 512,
19
+ "qk_rope_head_dim": 64,
20
+ "q_lora_rank": 1024,
21
+ "o_groups": 8,
22
+ "o_lora_rank": 1024,
23
+ "sliding_window": 128,
24
+ "attention_bias": false,
25
+ "attention_dropout": 0.0,
26
+ "index_n_heads": 64,
27
+ "index_head_dim": 128,
28
+ "index_topk": 512,
29
+ "compress_rope_theta": 160000,
30
+ "compress_ratios": [
31
+ 0,
32
+ 0,
33
+ 4,
34
+ 128,
35
+ 4,
36
+ 128,
37
+ 4,
38
+ 128,
39
+ 4,
40
+ 128,
41
+ 4,
42
+ 128,
43
+ 4,
44
+ 128,
45
+ 4,
46
+ 128,
47
+ 4,
48
+ 128,
49
+ 4,
50
+ 128,
51
+ 4,
52
+ 128,
53
+ 4,
54
+ 128,
55
+ 4,
56
+ 128,
57
+ 4,
58
+ 128,
59
+ 4,
60
+ 128,
61
+ 4,
62
+ 128,
63
+ 4,
64
+ 128,
65
+ 4,
66
+ 128,
67
+ 4,
68
+ 128,
69
+ 4,
70
+ 128,
71
+ 4,
72
+ 128,
73
+ 4,
74
+ 128,
75
+ 4,
76
+ 128,
77
+ 4,
78
+ 128,
79
+ 0
80
+ ],
81
+ "moe_intermediate_size": 2048,
82
+ "n_routed_experts": 160,
83
+ "n_shared_experts": 1,
84
+ "num_experts_per_tok": 6,
85
+ "num_hash_layers": 3,
86
+ "scoring_func": "sqrtsoftplus",
87
+ "topk_method": "noaux_tc",
88
+ "norm_topk_prob": true,
89
+ "routed_scaling_factor": 1.5,
90
+ "num_nextn_predict_layers": 0,
91
+ "parallel_ffn_intermediate_size": 2048,
92
+ "hidden_act": "silu",
93
+ "swiglu_limit": 10.0,
94
+ "hc_mult": 4,
95
+ "hc_sinkhorn_iters": 20,
96
+ "hc_eps": 1e-06,
97
+ "rms_norm_eps": 1e-06,
98
+ "initializer_range": 0.02,
99
+ "rope_theta": 10000,
100
+ "rope_scaling": {
101
+ "type": "yarn",
102
+ "factor": 16,
103
+ "beta_fast": 32,
104
+ "beta_slow": 1,
105
+ "original_max_position_embeddings": 65536
106
+ },
107
+ "max_position_embeddings": 1048576,
108
+ "bos_token_id": 0,
109
+ "eos_token_id": 1,
110
+ "tie_word_embeddings": false,
111
+ "use_cache": true,
112
+ "quantization_config": {
113
+ "activation_scheme": "dynamic",
114
+ "fmt": "e4m3",
115
+ "quant_method": "fp8",
116
+ "scale_fmt": "ue8m0",
117
+ "weight_block_size": [
118
+ 128,
119
+ 128
120
+ ]
121
+ }
122
+ }
configuration_agnes.py ADDED
@@ -0,0 +1,330 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Copyright 2026 The HuggingFace Inc. team. All rights reserved.
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+ from huggingface_hub.dataclasses import strict
15
+
16
+ from transformers.configuration_utils import PreTrainedConfig
17
+ from transformers.modeling_rope_utils import RopeParameters
18
+ from transformers.utils import auto_docstring
19
+
20
+
21
+ # The two MoE block kinds and the three attention block kinds Agnes ships, plus
22
+ # the legacy per-layer integer -> attention-kind map used when a checkpoint still
23
+ # carries the old `compress_ratios` list.
24
+ AGNES_MLP_LAYER_TYPES = ("agnes_hash_moe", "agnes_moe")
25
+
26
+ AGNES_LAYER_TYPES = (
27
+ "agnes_local_attention",
28
+ "agnes_sparse_attention",
29
+ "agnes_pooled_attention",
30
+ )
31
+
32
+ _COMPRESS_RATIO_TO_LAYER_TYPE = {
33
+ 0: "agnes_local_attention",
34
+ 4: "agnes_sparse_attention",
35
+ 128: "agnes_pooled_attention",
36
+ }
37
+
38
+
39
+ @auto_docstring
40
+ @strict
41
+ class AgnesConfig(PreTrainedConfig):
42
+ r"""
43
+ scoring_func (`str`):
44
+ Activation applied to the router logits — one of `sqrtsoftplus`,
45
+ `softmax`, `sigmoid`.
46
+ rope_theta (`float`):
47
+ Rotary base for the main (local) attention path.
48
+ layer_types (`list[str]`):
49
+ The per-layer attention schedule, drawn from `agnes_local_attention`,
50
+ `agnes_sparse_attention`, `agnes_pooled_attention`. Default schedule:
51
+ two pooled layers to bootstrap, then an alternating sparse/pooled tail.
52
+ compress_rates (`dict[str, int]`):
53
+ Compression stride per attention type; default
54
+ `{"agnes_sparse_attention": 4, "agnes_pooled_attention": 128}`. For
55
+ backward compatibility, top-level `compress_rate_csa` /
56
+ `compress_rate_hca` kwargs are absorbed in `__post_init__`.
57
+ compress_rope_theta (`float`):
58
+ Rotary base shared by the compressed branches (used together with
59
+ `rope_scaling` for YaRN).
60
+ hc_mult (`int`):
61
+ Number of parallel residual streams carried by the manifold-constrained
62
+ hyper-connections (always on).
63
+ hc_sinkhorn_iters (`int`):
64
+ Iteration budget for the Sinkhorn-Knopp projection of the stream-mixing
65
+ matrix onto the doubly-stochastic manifold.
66
+ hc_eps (`float`):
67
+ Small constant guarding the Sinkhorn normalisation against divide-by-zero.
68
+ mlp_layer_types (`list[str]`):
69
+ The per-layer MoE schedule over `agnes_hash_moe` / `agnes_moe`. Hash
70
+ layers pick experts from the frozen `tid2eid[input_ids]` table; plain
71
+ layers use learned top-k routing. Default: the first three layers hash,
72
+ the rest learned. Legacy `num_hash_layers` is folded in at
73
+ `__post_init__`.
74
+ swiglu_limit (`float`):
75
+ Clamp bound on the routed experts' gate/up pre-activations.
76
+ parallel_ffn_intermediate_size (`int`):
77
+ Width of the optional parallel dense-FFN branch on every non-hash MoE
78
+ layer (`0` turns it off). Its `down_proj` is exported as zeros, so the
79
+ branch is a no-op until trained.
80
+ sliding_window (`int`):
81
+ Local attention window width used by every block.
82
+ o_groups (`int`):
83
+ Head-group count for the grouped output projection.
84
+ o_lora_rank (`int`):
85
+ Per-group bottleneck width of the grouped output projection.
86
+ index_n_heads (`int`):
87
+ Query-head count of the Lightning Indexer.
88
+ index_head_dim (`int`):
89
+ Per-head width inside the Lightning Indexer.
90
+ index_topk (`int`):
91
+ How many compressed entries the indexer keeps per query.
92
+ num_nextn_predict_layers (`int`):
93
+ Number of MTP layers present in the source checkpoint (not built here).
94
+ partial_rotary_factor (`float`, *optional*):
95
+ Fraction of each head that is rotated. Defaults to
96
+ `qk_rope_head_dim / head_dim`, sizing cos/sin to `qk_rope_head_dim`.
97
+ """
98
+
99
+ model_type = "agnes"
100
+ keys_to_ignore_at_inference = ["past_key_values"]
101
+
102
+ # --- core dimensions ---
103
+ vocab_size: int = 129280
104
+ hidden_size: int = 4096
105
+ num_hidden_layers: int = 43
106
+
107
+ # --- self-attention (shared-KV MQA + grouped output projection) ---
108
+ num_attention_heads: int = 64
109
+ num_key_value_heads: int = 1
110
+ head_dim: int = 512
111
+ default_partial_rotary_factor = 64 / 512 # `qk_rope_head_dim` (64) / `head_dim` (512)
112
+ partial_rotary_factor: float | None = None
113
+ q_lora_rank: int = 1024
114
+ o_groups: int = 8
115
+ o_lora_rank: int = 1024
116
+ sliding_window: int = 128
117
+ attention_bias: bool = False
118
+ attention_dropout: float = 0.0
119
+
120
+ # --- long-range compressor + lightning indexer ---
121
+ index_n_heads: int = 64
122
+ index_head_dim: int = 128
123
+ index_topk: int = 512
124
+ layer_types: list[str] | None = None
125
+ compress_rates: dict | None = None
126
+ default_compress_rates = {"agnes_sparse_attention": 4, "agnes_pooled_attention": 128}
127
+ compress_rope_theta: float | int = 160000.0
128
+
129
+ # --- mixture-of-experts routing ---
130
+ moe_intermediate_size: int = 2048
131
+ parallel_ffn_intermediate_size: int = 0
132
+ n_routed_experts: int = 256
133
+ n_shared_experts: int = 1
134
+ num_experts_per_tok: int = 6
135
+ mlp_layer_types: list[str] | None = None
136
+ default_num_hash_layers = 3
137
+ scoring_func: str = "sqrtsoftplus"
138
+ norm_topk_prob: bool = True
139
+ routed_scaling_factor: float = 1.5
140
+ num_nextn_predict_layers: int = 1
141
+ output_router_logits: bool = False
142
+ router_aux_loss_coef: float = 0.001
143
+ router_jitter_noise: float = 0.0
144
+
145
+ # --- feed-forward activation ---
146
+ hidden_act: str = "silu"
147
+ swiglu_limit: float = 10.0
148
+ mlp_bias: bool = False
149
+
150
+ # --- manifold-constrained hyper-connections ---
151
+ hc_mult: int = 4
152
+ hc_sinkhorn_iters: int = 20
153
+ hc_eps: float = 1.0e-6
154
+
155
+ # --- normalisation + initialisation ---
156
+ rms_norm_eps: float = 1.0e-6
157
+ initializer_range: float = 0.02
158
+
159
+ # --- rotary position embedding ---
160
+ rope_theta: float | int = 10000.0
161
+ rope_parameters: RopeParameters | dict | None = None
162
+ max_position_embeddings: int = 1048576
163
+
164
+ # --- special tokens + weight tying ---
165
+ pad_token_id: int | None = None
166
+ bos_token_id: int | None = 0
167
+ eos_token_id: int | list[int] | None = 1
168
+ tie_word_embeddings: bool = False
169
+
170
+ # --- runtime ---
171
+ use_cache: bool = True
172
+
173
+ # ------------------------------------------------------------------ #
174
+ # Non-field class attributes: alias map, parallelism plans, rope labels
175
+ # ------------------------------------------------------------------ #
176
+
177
+ # Expert-parallel plan. Agnes ships EP only — it is MoE, so there is no
178
+ # `base_model_tp_plan`. The gate routes, the routed experts run as a grouped
179
+ # GEMM sharded on the expert axis, and the experts module is wrapped so its
180
+ # output is all-reduced. Core attention stays replicated: it is shared-KV MQA
181
+ # broadcasting a single KV head to every query head, so colwise-sharding
182
+ # `q_b_proj` would desync the KV broadcast from the rank-local head count; the
183
+ # small shared MLP is not worth sharding either. The one exception is the
184
+ # Lightning Indexer, whose keys are replicated (its own compressor runs at
185
+ # index_head_dim on replicated hidden states): there `q_b_proj` and
186
+ # `scorer.weights_proj` go colwise and the `scorer` output is all-reduced so
187
+ # every rank picks the same top-k.
188
+ base_model_ep_plan = {
189
+ "layers.*.mlp.gate": "ep_router",
190
+ "layers.*.mlp.experts.gate_up_proj": "grouped_gemm",
191
+ "layers.*.mlp.experts.down_proj": "grouped_gemm",
192
+ "layers.*.mlp.experts": "moe_tp_experts",
193
+ "layers.*.self_attn.compressor.indexer.q_b_proj": "colwise",
194
+ "layers.*.self_attn.compressor.indexer.scorer.weights_proj": "colwise",
195
+ "layers.*.self_attn.compressor.indexer.scorer": "all_reduce",
196
+ }
197
+
198
+ base_model_pp_plan = {
199
+ "embed_tokens": (["input_ids"], ["inputs_embeds"]),
200
+ "layers": (["hidden_states", "attention_mask"], ["hidden_states"]),
201
+ "norm": (["hidden_states"], ["hidden_states"]),
202
+ }
203
+
204
+ # `num_local_experts` / `intermediate_size` are the names the MoE FP8 / TP
205
+ # integrations and the shared-expert MLP read; Agnes only stores
206
+ # `n_routed_experts` / `moe_intermediate_size`, so alias them through.
207
+ attribute_map = {
208
+ "num_local_experts": "n_routed_experts",
209
+ "intermediate_size": "moe_intermediate_size",
210
+ }
211
+
212
+ # `rope_parameters` is keyed by rope label (`main` / `compress`), not by
213
+ # `layer_types`. The base `validate_rope` assumes the latter, so it is
214
+ # overridden below to walk the rope-label sub-dicts directly.
215
+ _rope_type_labels = ("main", "compress")
216
+
217
+ def __post_init__(self, **kwargs):
218
+ # Older checkpoints still ship a handful of legacy kwargs; pop them out of
219
+ # the dict before the strict parent init runs, then reconcile each into its
220
+ # current field afterwards.
221
+ leg_ratios = kwargs.pop("compress_ratios", None)
222
+ leg_csa = kwargs.pop("compress_rate_csa", None)
223
+ leg_hca = kwargs.pop("compress_rate_hca", None)
224
+ leg_hash = kwargs.pop("num_hash_layers", None)
225
+ leg_qk_rope = kwargs.pop("qk_rope_head_dim", None)
226
+ PreTrainedConfig.__post_init__(self, **kwargs)
227
+ n = self.num_hidden_layers
228
+
229
+ # compress_rates: seed the per-type defaults, then let a legacy scalar win.
230
+ if self.compress_rates is None:
231
+ self.compress_rates = dict(self.default_compress_rates)
232
+ if leg_csa is not None:
233
+ self.compress_rates["agnes_sparse_attention"] = leg_csa
234
+ if leg_hca is not None:
235
+ self.compress_rates["agnes_pooled_attention"] = leg_hca
236
+
237
+ # layer_types precedence: explicit field, then legacy 0/4/128 ratios, then
238
+ # the default (two pooled bootstrap layers + sparse/pooled interleave).
239
+ if self.layer_types is None and leg_ratios is not None:
240
+ self.layer_types = [_COMPRESS_RATIO_TO_LAYER_TYPE[r] for r in leg_ratios]
241
+ if self.layer_types is None:
242
+ tail = [
243
+ "agnes_sparse_attention" if i % 2 else "agnes_pooled_attention"
244
+ for i in range(max(n - 2, 0))
245
+ ]
246
+ self.layer_types = ["agnes_pooled_attention"] * min(n, 2) + tail
247
+ self.layer_types = list(self.layer_types[:n])
248
+
249
+ # mlp_layer_types: leading hash-routed layers, learned routing for the rest.
250
+ if self.mlp_layer_types is None:
251
+ n_hash = leg_hash if leg_hash is not None else self.default_num_hash_layers
252
+ self.mlp_layer_types = ["agnes_hash_moe"] * min(n, n_hash) + ["agnes_moe"] * max(0, n - n_hash)
253
+ self.mlp_layer_types = list(self.mlp_layer_types[:n])
254
+
255
+ # partial_rotary_factor from a legacy qk_rope_head_dim if provided, else the
256
+ # default; qk_rope_head_dim itself is only ever a runtime attr, not a field.
257
+ if self.partial_rotary_factor is None:
258
+ self.partial_rotary_factor = (
259
+ leg_qk_rope / self.head_dim if leg_qk_rope is not None else self.default_partial_rotary_factor
260
+ )
261
+ self.qk_rope_head_dim = int(self.head_dim * self.partial_rotary_factor)
262
+
263
+ # Normalise rope_parameters into the {main, compress} nesting. Local layers
264
+ # use plain rope at rope_theta; only the compress branch may be YaRN, and if
265
+ # it is we pin attention_factor=1.0 (Agnes never applies YaRN's mscale).
266
+ rp = self.rope_parameters or {}
267
+ if isinstance(rp.get("main"), dict) and isinstance(rp.get("compress"), dict):
268
+ self.rope_parameters = {"main": rp["main"], "compress": rp["compress"]}
269
+ else:
270
+ extra = {k: v for k, v in rp.items() if k not in ("main", "compress")}
271
+ main = {
272
+ "rope_type": "default",
273
+ "rope_theta": self.rope_theta,
274
+ "partial_rotary_factor": self.partial_rotary_factor,
275
+ }
276
+ compress = {
277
+ **extra,
278
+ "rope_theta": self.compress_rope_theta,
279
+ "partial_rotary_factor": self.partial_rotary_factor,
280
+ }
281
+ compress.setdefault("rope_type", "default")
282
+ if compress["rope_type"] == "yarn":
283
+ compress.setdefault("attention_factor", 1.0)
284
+ self.rope_parameters = {"main": main, "compress": compress}
285
+
286
+ def validate_layer_type(self):
287
+ """Keep `layer_types` / `mlp_layer_types` within the block kinds Agnes
288
+ actually builds, alongside the usual length check against
289
+ `num_hidden_layers`."""
290
+ if self.num_hidden_layers is None:
291
+ return
292
+ schedules = (
293
+ ("layer_types", self.layer_types, AGNES_LAYER_TYPES),
294
+ ("mlp_layer_types", self.mlp_layer_types, AGNES_MLP_LAYER_TYPES),
295
+ )
296
+ for name, schedule, allowed in schedules:
297
+ if schedule is None:
298
+ continue
299
+ if len(schedule) != self.num_hidden_layers:
300
+ raise ValueError(
301
+ f"`num_hidden_layers` ({self.num_hidden_layers}) must equal `len({name})` ({len(schedule)})."
302
+ )
303
+ unknown = [t for t in schedule if t not in allowed]
304
+ if unknown:
305
+ raise ValueError(f"`{name}` entries must be one of {allowed} for Agnes; got {unknown}.")
306
+
307
+ def validate_rope(self):
308
+ # The stock validators index self.rope_parameters[<key>] directly, which
309
+ # breaks against the {main, compress} nesting, so run each rope-label
310
+ # sub-dict through its own validator with self.rope_parameters temporarily
311
+ # pointed at it, restoring the nested dict afterwards.
312
+ nested = getattr(self, "rope_parameters", None) or {}
313
+ ignore_keys = self.ignore_keys_at_rope_validation
314
+ for label in self._rope_type_labels:
315
+ sub = nested.get(label)
316
+ if not isinstance(sub, dict):
317
+ continue
318
+ kind = sub.get("rope_type", sub.get("type", "default"))
319
+ sub["rope_type"] = kind
320
+ validator = getattr(self, f"_validate_{kind}_rope_parameters", None)
321
+ if validator is None:
322
+ continue
323
+ self.rope_parameters = sub
324
+ try:
325
+ validator(sub, ignore_keys=ignore_keys)
326
+ finally:
327
+ self.rope_parameters = nested
328
+
329
+
330
+ __all__ = ["AgnesConfig"]
generation_config.json ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "_from_model_config": true,
3
+ "bos_token_id": 0,
4
+ "eos_token_id": 1,
5
+ "do_sample": true,
6
+ "temperature": 1.0,
7
+ "top_p": 0.95,
8
+ "transformers_version": "4.46.3"
9
+ }
model-00001-of-00035.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:6c7c7d9cfa75e53f6b9a8c73f4efc6d565133526ad85f6d54bda6ad0c092e350
3
+ size 5905889500
model-00002-of-00035.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:b3ca0178d9e92a2426d4643580136d6cba67248ddf1b08f0c129b34215d205e6
3
+ size 6449195308
model-00003-of-00035.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:1c7d5b7e07b498fa1e5ef34f1a031bfb409e329d6ab888c1270999ca2abc6f49
3
+ size 6458521736
model-00004-of-00035.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:c590b2fe8ec9c5d553afe20a30ab5273c773ce3b7975512e04ba042be697598c
3
+ size 6458522064
model-00005-of-00035.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:b1d33833e3857faff8f4e82edd58f6e87fccd4b59b4126a2e2a84c6169a85fbe
3
+ size 6445123780
model-00006-of-00035.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:4ce48ae3cc1a91cef1f229fbad4dd0dc7162271d9df4744ea1b8a687603b1081
3
+ size 6458522000
model-00007-of-00035.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:78cf4afe39b4509e3cd901f7b80844fd16958340821661862e09f9f19a51aa70
3
+ size 6449196540
model-00008-of-00035.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:49525c8dc4690297da7fb0c8a7924a52fa643c42f3d1bc1ba3ae657a2f56139d
3
+ size 6458523432
model-00009-of-00035.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:779d05fc9a378a24dc1eb74c06c731bbcedf3f7bd527fa9b1c164ed85d7f7edc
3
+ size 6445125412
model-00010-of-00035.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:cc18760508e0a9ea38839dd26c188d3a07e126ddc87fab0a05b32acf49ec4a25
3
+ size 6458523488
model-00011-of-00035.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:c71bb31d9df0d5c91005b89847d172853bc48839025bf2f49f4c348c0f3920f9
3
+ size 6449197300
model-00012-of-00035.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:e1861df5d9a0bea416f4e120709c44b803e1bdd54f929b6642c9f3f08b3fe8fa
3
+ size 6458523536
model-00013-of-00035.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:ce3069776d4f54c7cc29b51d52dd1b6b8f2b528cc71c9febd1ca84b41b79662a
3
+ size 6445125324
model-00014-of-00035.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:a356adcc1f0abff72c4738fa2c6d87c2b20719bc55222aef7b98ab0dda0f38e6
3
+ size 6458523672
model-00015-of-00035.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:c9ea2db9258b85283e601b0dc9f004fe83e7750dad2bf3c8f0029a1d808ab438
3
+ size 6433343384