JacobLinCool commited on
Commit
93ebaf2
·
0 Parent(s):
This view is limited to 50 files because it contains too many changes.   See raw diff
Files changed (50) hide show
  1. .gitattributes +3 -0
  2. LICENSE +21 -0
  3. README.md +63 -0
  4. __init__.py +4 -0
  5. architecture.safetensors +3 -0
  6. config.json +245 -0
  7. configuration_omni.py +94 -0
  8. constant_checkpoint.py +58 -0
  9. initialization.st +3 -0
  10. model.safetensors.index.json +0 -0
  11. modeling_omni.py +391 -0
  12. requirements.txt +3 -0
  13. shards/000/model-00001-of-09400.safetensors +3 -0
  14. shards/000/model-00002-of-09400.safetensors +3 -0
  15. shards/000/model-00003-of-09400.safetensors +3 -0
  16. shards/000/model-00004-of-09400.safetensors +3 -0
  17. shards/000/model-00005-of-09400.safetensors +3 -0
  18. shards/000/model-00006-of-09400.safetensors +3 -0
  19. shards/000/model-00007-of-09400.safetensors +3 -0
  20. shards/000/model-00008-of-09400.safetensors +3 -0
  21. shards/000/model-00009-of-09400.safetensors +3 -0
  22. shards/000/model-00010-of-09400.safetensors +3 -0
  23. shards/000/model-00011-of-09400.safetensors +3 -0
  24. shards/000/model-00012-of-09400.safetensors +3 -0
  25. shards/000/model-00013-of-09400.safetensors +3 -0
  26. shards/000/model-00014-of-09400.safetensors +3 -0
  27. shards/000/model-00015-of-09400.safetensors +3 -0
  28. shards/000/model-00016-of-09400.safetensors +3 -0
  29. shards/000/model-00017-of-09400.safetensors +3 -0
  30. shards/000/model-00018-of-09400.safetensors +3 -0
  31. shards/000/model-00019-of-09400.safetensors +3 -0
  32. shards/000/model-00020-of-09400.safetensors +3 -0
  33. shards/000/model-00021-of-09400.safetensors +3 -0
  34. shards/000/model-00022-of-09400.safetensors +3 -0
  35. shards/000/model-00023-of-09400.safetensors +3 -0
  36. shards/000/model-00024-of-09400.safetensors +3 -0
  37. shards/000/model-00025-of-09400.safetensors +3 -0
  38. shards/000/model-00026-of-09400.safetensors +3 -0
  39. shards/000/model-00027-of-09400.safetensors +3 -0
  40. shards/000/model-00028-of-09400.safetensors +3 -0
  41. shards/000/model-00029-of-09400.safetensors +3 -0
  42. shards/000/model-00030-of-09400.safetensors +3 -0
  43. shards/000/model-00031-of-09400.safetensors +3 -0
  44. shards/000/model-00032-of-09400.safetensors +3 -0
  45. shards/000/model-00033-of-09400.safetensors +3 -0
  46. shards/000/model-00034-of-09400.safetensors +3 -0
  47. shards/000/model-00035-of-09400.safetensors +3 -0
  48. shards/000/model-00036-of-09400.safetensors +3 -0
  49. shards/000/model-00037-of-09400.safetensors +3 -0
  50. shards/000/model-00038-of-09400.safetensors +3 -0
.gitattributes ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ * text=auto
2
+ *.safetensors filter=lfs diff=lfs merge=lfs -text
3
+ *.st filter=lfs diff=lfs merge=lfs -text
LICENSE ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ MIT License
2
+
3
+ Copyright (c) 2026 JacobLinCool
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.
README.md ADDED
@@ -0,0 +1,63 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ library_name: transformers
3
+ license: mit
4
+ tags:
5
+ - custom_code
6
+ - multimodal
7
+ - mixture-of-experts
8
+ - weight-sharing
9
+ ---
10
+
11
+ # The Net
12
+
13
+ 20T-scale multimodal architecture. Text, audio, images, video and EEG. 686 attention/FFN blocks, a three-level sparse MoE core with 128 experts per layer and top-2 routing, and recurrent memory. PyTorch implementation and checkpoint files released under the MIT license.
14
+
15
+ ## Architecture
16
+
17
+ The Net has **11 major components**: five modality encoders, multiscale fusion, a shared world model, three media decoders and a memory controller.
18
+
19
+ ```text
20
+ Text · Audio · Images · Video · EEG
21
+ ↓
22
+ Modality-specific encoders
23
+ ↓
24
+ Multiscale fusion
25
+ ↓
26
+ Hierarchical sparse MoE core ↔ Memory
27
+ ↓
28
+ Text head · Audio / Image / Video decoders
29
+ ```
30
+
31
+ Encoders combine modality-specific stems with learned chunking, pooling and dechunking. Fusion aligns their representations before the shared core. The core uses attention, SwiGLU experts and RMSNorm across widths of 8,192, 12,288 and 16,384. Residual detail paths connect hierarchy levels; recurrent memory carries state between segments.
32
+
33
+ | Modality | Interface |
34
+ | --- | --- |
35
+ | Text | Byte-level tokens and next-token logits |
36
+ | Audio | Waveform frames, spectral features and codebook logits |
37
+ | Images | RGB patches and image latents |
38
+ | Video | Spatiotemporal tubelets and video latents |
39
+ | EEG | Multichannel signals with electrode adjacency |
40
+
41
+ ## Implementation
42
+
43
+ The repository includes the PyTorch architecture, Transformers configuration,
44
+ tokenizer and checkpoint files under the MIT license.
45
+
46
+ | File | Contents |
47
+ | --- | --- |
48
+ | `config.json` | Model configuration |
49
+ | `configuration_omni.py` | `OmniConfig` |
50
+ | `modeling_omni.py` | `OmniModel` module implementation |
51
+ | `tokenizer.json` | Byte-level tokenizer |
52
+ | `tensor_shapes.json` | Architecture tensor names and dimensions |
53
+
54
+ ## FAQ
55
+
56
+ **Q: Which modalities does the architecture cover?**
57
+ Text, audio, images, video and EEG, connected through a shared hierarchical core.
58
+
59
+ **Q: How are the experts organized?**
60
+ The shared core spans three hierarchy levels, with 128 experts per layer and top-2 routing. Multiscale fusion connects the modality encoders to the core; media decoders and a text head provide the output interfaces.
61
+
62
+ **Q: What is this release?**
63
+ A **Safetensors & Xet storage experiment** with constant-initialized, shared weights.
__init__.py ADDED
@@ -0,0 +1,4 @@
 
 
 
 
 
1
+ from .configuration_omni import OmniConfig
2
+ from .modeling_omni import OmniModel
3
+
4
+ __all__ = ["OmniConfig", "OmniModel"]
architecture.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:aba8d5f96cf32f5945cb1edc7cfb94fbfc95b5759daa3208e35a8a0844ea859d
3
+ size 115368746
config.json ADDED
@@ -0,0 +1,245 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "architectures": [
3
+ "OmniModel"
4
+ ],
5
+ "audio_codebook_size": 1024,
6
+ "audio_codebooks": 8,
7
+ "audio_frame_size": 320,
8
+ "auto_map": {
9
+ "AutoConfig": "configuration_omni.OmniConfig",
10
+ "AutoModel": "modeling_omni.OmniModel"
11
+ },
12
+ "checkpoint_format": "the-net-shared-aliases-v2",
13
+ "context_dim": 256,
14
+ "eeg_channels": 64,
15
+ "head_dim": 128,
16
+ "initialization": "constant, untrained",
17
+ "model_type": "the_net_omni",
18
+ "patch_size": 4,
19
+ "stages": {
20
+ "audio_decoder": [
21
+ [
22
+ 4096,
23
+ 12,
24
+ 1,
25
+ 4,
26
+ 1
27
+ ],
28
+ [
29
+ 8192,
30
+ 84,
31
+ 8,
32
+ 2,
33
+ 2
34
+ ]
35
+ ],
36
+ "audio_encoder": [
37
+ [
38
+ 4096,
39
+ 12,
40
+ 1,
41
+ 4,
42
+ 1
43
+ ],
44
+ [
45
+ 8192,
46
+ 24,
47
+ 1,
48
+ 4,
49
+ 1
50
+ ],
51
+ [
52
+ 12288,
53
+ 12,
54
+ 1,
55
+ 4,
56
+ 1
57
+ ]
58
+ ],
59
+ "eeg_encoder": [
60
+ [
61
+ 2048,
62
+ 6,
63
+ 1,
64
+ 4,
65
+ 1
66
+ ],
67
+ [
68
+ 4096,
69
+ 12,
70
+ 1,
71
+ 4,
72
+ 1
73
+ ],
74
+ [
75
+ 8192,
76
+ 6,
77
+ 1,
78
+ 4,
79
+ 1
80
+ ]
81
+ ],
82
+ "fusion": [
83
+ [
84
+ 16384,
85
+ 30,
86
+ 8,
87
+ 3,
88
+ 2
89
+ ]
90
+ ],
91
+ "image_decoder": [
92
+ [
93
+ 4096,
94
+ 8,
95
+ 1,
96
+ 4,
97
+ 1
98
+ ],
99
+ [
100
+ 12288,
101
+ 52,
102
+ 16,
103
+ 2,
104
+ 2
105
+ ]
106
+ ],
107
+ "image_encoder": [
108
+ [
109
+ 4096,
110
+ 8,
111
+ 1,
112
+ 4,
113
+ 1
114
+ ],
115
+ [
116
+ 8192,
117
+ 24,
118
+ 1,
119
+ 4,
120
+ 1
121
+ ],
122
+ [
123
+ 12288,
124
+ 24,
125
+ 1,
126
+ 4,
127
+ 1
128
+ ]
129
+ ],
130
+ "memory_control": [
131
+ [
132
+ 8192,
133
+ 38,
134
+ 32,
135
+ 2,
136
+ 2
137
+ ]
138
+ ],
139
+ "text_encoder": [
140
+ [
141
+ 2048,
142
+ 6,
143
+ 1,
144
+ 4,
145
+ 1
146
+ ],
147
+ [
148
+ 4096,
149
+ 12,
150
+ 1,
151
+ 4,
152
+ 1
153
+ ],
154
+ [
155
+ 8192,
156
+ 6,
157
+ 1,
158
+ 4,
159
+ 1
160
+ ]
161
+ ],
162
+ "video_decoder": [
163
+ [
164
+ 8192,
165
+ 8,
166
+ 1,
167
+ 4,
168
+ 1
169
+ ],
170
+ [
171
+ 16384,
172
+ 88,
173
+ 16,
174
+ 2,
175
+ 2
176
+ ]
177
+ ],
178
+ "video_encoder": [
179
+ [
180
+ 4096,
181
+ 8,
182
+ 1,
183
+ 4,
184
+ 1
185
+ ],
186
+ [
187
+ 8192,
188
+ 32,
189
+ 1,
190
+ 4,
191
+ 1
192
+ ],
193
+ [
194
+ 16384,
195
+ 44,
196
+ 1,
197
+ 4,
198
+ 1
199
+ ]
200
+ ],
201
+ "world_model": [
202
+ [
203
+ 8192,
204
+ 48,
205
+ 128,
206
+ 2,
207
+ 2
208
+ ],
209
+ [
210
+ 12288,
211
+ 48,
212
+ 128,
213
+ 2,
214
+ 2
215
+ ],
216
+ [
217
+ 16384,
218
+ 34,
219
+ 128,
220
+ 2,
221
+ 2
222
+ ]
223
+ ]
224
+ },
225
+ "transformers_version": "4.57.6",
226
+ "vocab_size": 259,
227
+ "quantization_config": {
228
+ "quant_method": "compressed-tensors",
229
+ "format": "pack-quantized",
230
+ "config_groups": {
231
+ "shared_bank": {
232
+ "targets": [
233
+ "shared_bank"
234
+ ],
235
+ "weights": {
236
+ "num_bits": 1,
237
+ "type": "int",
238
+ "symmetric": false,
239
+ "strategy": "tensor",
240
+ "dynamic": false
241
+ }
242
+ }
243
+ }
244
+ }
245
+ }
configuration_omni.py ADDED
@@ -0,0 +1,94 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """Concrete heterogeneous omni architecture; all parameter counts derive from its modules."""
2
+
3
+ from copy import deepcopy
4
+
5
+ from transformers import PretrainedConfig
6
+
7
+ # (width, block count, expert count, FFN expansion, selected experts)
8
+ STAGES = {
9
+ "text_encoder": [(2048, 6, 1, 4, 1), (4096, 12, 1, 4, 1), (8192, 6, 1, 4, 1)],
10
+ "audio_encoder": [(4096, 12, 1, 4, 1), (8192, 24, 1, 4, 1), (12288, 12, 1, 4, 1)],
11
+ "image_encoder": [(4096, 8, 1, 4, 1), (8192, 24, 1, 4, 1), (12288, 24, 1, 4, 1)],
12
+ "video_encoder": [(4096, 8, 1, 4, 1), (8192, 32, 1, 4, 1), (16384, 44, 1, 4, 1)],
13
+ "eeg_encoder": [(2048, 6, 1, 4, 1), (4096, 12, 1, 4, 1), (8192, 6, 1, 4, 1)],
14
+ "fusion": [(16384, 30, 8, 3, 2)],
15
+ "world_model": [(8192, 48, 128, 2, 2), (12288, 48, 128, 2, 2), (16384, 34, 128, 2, 2)],
16
+ "audio_decoder": [(4096, 12, 1, 4, 1), (8192, 84, 8, 2, 2)],
17
+ "image_decoder": [(4096, 8, 1, 4, 1), (12288, 52, 16, 2, 2)],
18
+ "video_decoder": [(8192, 8, 1, 4, 1), (16384, 88, 16, 2, 2)],
19
+ "memory_control": [(8192, 38, 32, 2, 2)],
20
+ }
21
+
22
+
23
+ class OmniConfig(PretrainedConfig):
24
+ model_type = "the_net_omni"
25
+
26
+ def __init__(
27
+ self,
28
+ stages=None,
29
+ head_dim=128,
30
+ vocab_size=259,
31
+ eeg_channels=64,
32
+ context_dim=256,
33
+ audio_frame_size=320,
34
+ patch_size=4,
35
+ audio_codebooks=8,
36
+ audio_codebook_size=1024,
37
+ **kwargs,
38
+ ):
39
+ super().__init__(**kwargs)
40
+ self.stages = deepcopy(STAGES if stages is None else stages)
41
+ self.head_dim = head_dim
42
+ self.vocab_size = vocab_size
43
+ self.eeg_channels = eeg_channels
44
+ self.context_dim = context_dim
45
+ self.audio_frame_size = audio_frame_size
46
+ self.patch_size = patch_size
47
+ self.audio_codebooks = audio_codebooks
48
+ self.audio_codebook_size = audio_codebook_size
49
+ for name in (
50
+ "head_dim",
51
+ "vocab_size",
52
+ "eeg_channels",
53
+ "context_dim",
54
+ "audio_frame_size",
55
+ "patch_size",
56
+ "audio_codebooks",
57
+ "audio_codebook_size",
58
+ ):
59
+ value = getattr(self, name)
60
+ if type(value) is not int or value <= 0:
61
+ raise ValueError(f"{name} must be a positive integer")
62
+ if set(self.stages) != set(STAGES):
63
+ raise ValueError("All eleven named components are required")
64
+ for component, rows in self.stages.items():
65
+ if not rows:
66
+ raise ValueError(f"Empty component: {component}")
67
+ for row in rows:
68
+ if len(row) != 5 or any(type(n) is not int or n < 1 for n in row):
69
+ raise ValueError(f"Invalid stage: {row}")
70
+ width, _, experts, _, selected = row
71
+ if width % head_dim or selected > experts:
72
+ raise ValueError(f"Invalid heads or routing: {row}")
73
+
74
+ @classmethod
75
+ def tiny(cls):
76
+ stages = {
77
+ name: [
78
+ (32 * (i + 1), 1, min(experts, 2), expansion, min(selected, 2))
79
+ for i, (_, _, experts, expansion, selected) in enumerate(rows)
80
+ ]
81
+ for name, rows in STAGES.items()
82
+ }
83
+ return cls(
84
+ stages=stages,
85
+ head_dim=16,
86
+ context_dim=32,
87
+ audio_frame_size=32,
88
+ eeg_channels=8,
89
+ audio_codebooks=2,
90
+ audio_codebook_size=16,
91
+ )
92
+
93
+
94
+ OmniConfig.register_for_auto_class()
constant_checkpoint.py ADDED
@@ -0,0 +1,58 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """Constant-tensor checkpoint reader."""
2
+
3
+ import json
4
+ from pathlib import Path
5
+
6
+ import torch
7
+ from safetensors.torch import load_file
8
+
9
+ from .configuration_omni import OmniConfig
10
+ from .modeling_omni import OmniModel
11
+
12
+
13
+ class ConstantCheckpoint:
14
+ def __init__(self, directory):
15
+ self.directory = Path(directory)
16
+ self.shapes = json.loads((self.directory / "tensor_shapes.json").read_text())
17
+ self.values = load_file(self.directory / "initialization.st")
18
+ if self.shapes.keys() != self.values.keys():
19
+ raise ValueError("Shape and value keys differ")
20
+ self.config = OmniConfig.from_pretrained(self.directory, local_files_only=True)
21
+
22
+ def slice(self, name, start, length):
23
+ size = 1
24
+ for dimension in self.shapes[name]:
25
+ size *= dimension
26
+ if (
27
+ type(start) is not int
28
+ or type(length) is not int
29
+ or start < 0
30
+ or length < 0
31
+ or start + length > size
32
+ ):
33
+ raise ValueError("Invalid tensor slice")
34
+ if length > 1_000_000:
35
+ raise ValueError("Read at most one million elements per slice")
36
+ return self.values[name].expand(length).clone()
37
+
38
+ def meta_model(self):
39
+ with torch.device("meta"):
40
+ model = OmniModel(self.config)
41
+ parameters = dict(model.named_parameters())
42
+ if parameters.keys() != self.shapes.keys():
43
+ raise ValueError("Checkpoint and model parameter keys differ")
44
+ for name, parameter in parameters.items():
45
+ if list(parameter.shape) != self.shapes[name]:
46
+ raise ValueError(f"Shape mismatch: {name}")
47
+ return model
48
+
49
+ def materialize(self, max_parameters=10_000_000):
50
+ model = self.meta_model()
51
+ total = sum(p.numel() for p in model.parameters())
52
+ if total > max_parameters:
53
+ raise ValueError(f"{total:,} parameters exceed the materialization limit")
54
+ model.to_empty(device="cpu")
55
+ with torch.no_grad():
56
+ for name, parameter in model.named_parameters():
57
+ parameter.fill_(self.values[name].item())
58
+ return model
initialization.st ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:d4d29dea3bfe42eb4de7a144b1afbe4b451a79d6009c80f235843c435db8b0d0
3
+ size 8768280
model.safetensors.index.json ADDED
The diff for this file is too large to render. See raw diff
 
modeling_omni.py ADDED
@@ -0,0 +1,391 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """PyTorch implementation of the heterogeneous hierarchical omni architecture."""
2
+
3
+ import itertools
4
+ import math
5
+ from dataclasses import dataclass
6
+
7
+ import torch
8
+ from torch import nn
9
+ from torch.nn import functional as F
10
+ from transformers import PreTrainedModel
11
+ from transformers.utils import ModelOutput
12
+
13
+ from .configuration_omni import OmniConfig
14
+
15
+
16
+ class Attention(nn.Module):
17
+ def __init__(self, width, head_dim):
18
+ super().__init__()
19
+ self.head_dim = head_dim
20
+ self.q_proj = nn.Linear(width, width, bias=False)
21
+ self.k_proj = nn.Linear(width, width, bias=False)
22
+ self.v_proj = nn.Linear(width, width, bias=False)
23
+ self.o_proj = nn.Linear(width, width, bias=False)
24
+
25
+ def forward(self, x, causal=False):
26
+ b, s, d = x.shape
27
+
28
+ def heads(value):
29
+ return value.reshape(b, s, d // self.head_dim, self.head_dim).transpose(1, 2)
30
+
31
+ q, k, v = (heads(layer(x)) for layer in (self.q_proj, self.k_proj, self.v_proj))
32
+ y = F.scaled_dot_product_attention(q, k, v, is_causal=causal)
33
+ return self.o_proj(y.transpose(1, 2).reshape_as(x))
34
+
35
+
36
+ class Expert(nn.Module):
37
+ def __init__(self, width, intermediate):
38
+ super().__init__()
39
+ self.gate_proj = nn.Linear(width, intermediate, bias=False)
40
+ self.up_proj = nn.Linear(width, intermediate, bias=False)
41
+ self.down_proj = nn.Linear(intermediate, width, bias=False)
42
+
43
+ def forward(self, x):
44
+ return self.down_proj(F.silu(self.gate_proj(x)) * self.up_proj(x))
45
+
46
+
47
+ class SparseMLP(nn.Module):
48
+ def __init__(self, width, experts, expansion, selected):
49
+ super().__init__()
50
+ self.selected = selected
51
+ self.router = nn.Linear(width, experts, bias=False) if experts > 1 else None
52
+ self.experts = nn.ModuleList([Expert(width, width * expansion) for _ in range(experts)])
53
+
54
+ def forward(self, x):
55
+ if self.router is None:
56
+ return self.experts[0](x)
57
+ flat = x.reshape(-1, x.shape[-1])
58
+ scores, ids = self.router(flat).topk(self.selected, dim=-1)
59
+ scores = scores.softmax(-1)
60
+ result = torch.zeros_like(flat)
61
+ for expert_id, expert in enumerate(self.experts):
62
+ tokens, slots = torch.where(ids == expert_id)
63
+ if tokens.numel():
64
+ result = result.index_add(
65
+ 0, tokens, expert(flat[tokens]) * scores[tokens, slots, None]
66
+ )
67
+ return result.reshape_as(x)
68
+
69
+
70
+ class Block(nn.Module):
71
+ def __init__(self, width, experts, expansion, selected, head_dim):
72
+ super().__init__()
73
+ self.attention_norm = nn.RMSNorm(width)
74
+ self.attention = Attention(width, head_dim)
75
+ self.ffn_norm = nn.RMSNorm(width)
76
+ self.mlp = SparseMLP(width, experts, expansion, selected)
77
+
78
+ def forward(self, x, causal=False):
79
+ x = x + self.attention(self.attention_norm(x), causal)
80
+ return x + self.mlp(self.ffn_norm(x))
81
+
82
+
83
+ class Chunker(nn.Module):
84
+ """Learned boundaries, weighted pooling, and explicit source-to-chunk mapping.
85
+
86
+ Single-example sequences avoid treating padding as real observations. Processing
87
+ a complete observed prefix is bidirectional; next-token targets are not inputs.
88
+ """
89
+
90
+ def __init__(self, width, context_dim):
91
+ super().__init__()
92
+ self.boundary = nn.Linear(width, 1)
93
+ self.condition = nn.Linear(context_dim, width, bias=False)
94
+
95
+ def forward(self, x, context):
96
+ gate = torch.sigmoid(self.boundary(x + self.condition(context)[:, None]))
97
+ starts = gate[0, :, 0] > 0.5
98
+ starts = starts.clone()
99
+ starts[0] = True
100
+ assignment = starts.long().cumsum(0) - 1
101
+ groups = int(assignment[-1]) + 1
102
+ weights = gate[0]
103
+ sums = x.new_zeros(groups, x.shape[-1]).index_add(0, assignment, x[0] * weights)
104
+ counts = x.new_zeros(groups, 1).index_add(0, assignment, weights)
105
+ pooled = (sums / counts.clamp_min(torch.finfo(x.dtype).eps))[None]
106
+ return pooled, assignment
107
+
108
+
109
+ class Stage(nn.Module):
110
+ def __init__(self, row, config, adaptive):
111
+ super().__init__()
112
+ width, depth, experts, expansion, selected = row
113
+ self.blocks = nn.ModuleList(
114
+ [Block(width, experts, expansion, selected, config.head_dim) for _ in range(depth)]
115
+ )
116
+ self.chunker = Chunker(width, config.context_dim) if adaptive else None
117
+
118
+ def forward(self, x, context, causal=False):
119
+ for block in self.blocks:
120
+ x = block(x, causal)
121
+ detail = x
122
+ if self.chunker is None:
123
+ return x, None, detail
124
+ pooled, assignment = self.chunker(x, context)
125
+ return pooled, assignment, detail
126
+
127
+
128
+ class Hierarchy(nn.Module):
129
+ def __init__(self, name, config, adaptive=False):
130
+ super().__init__()
131
+ rows = config.stages[name]
132
+ self.stages = nn.ModuleList([Stage(row, config, adaptive) for row in rows])
133
+ self.transitions = nn.ModuleList(
134
+ [nn.Linear(a[0], b[0], bias=False) for a, b in itertools.pairwise(rows)]
135
+ )
136
+ self.dechunk_projections = (
137
+ nn.ModuleList([nn.Linear(b[0], a[0], bias=False) for a, b in itertools.pairwise(rows)])
138
+ if adaptive
139
+ else nn.ModuleList()
140
+ )
141
+
142
+ def forward(self, x, context, causal=False):
143
+ details, assignments = [], []
144
+ for i, stage in enumerate(self.stages):
145
+ x, assignment, detail = stage(x, context, causal)
146
+ details.append(detail)
147
+ assignments.append(assignment)
148
+ if i < len(self.transitions):
149
+ x = self.transitions[i](x)
150
+ return x, (details, assignments)
151
+
152
+ def dechunk(self, x, trace):
153
+ details, assignments = trace
154
+ for i in reversed(range(len(self.stages))):
155
+ if assignments[i] is not None:
156
+ x = x[:, assignments[i]] + details[i]
157
+ if i:
158
+ x = self.dechunk_projections[i - 1](x)
159
+ return x
160
+
161
+
162
+ class Encoder(nn.Module):
163
+ def __init__(self, name, config):
164
+ super().__init__()
165
+ width = config.stages[name][0][0]
166
+ self.name = name
167
+ self.config = config
168
+ if name == "text_encoder":
169
+ self.embedding = nn.Embedding(config.vocab_size, width)
170
+ elif name == "image_encoder":
171
+ self.patch_embedding = nn.Conv2d(
172
+ 3, width, config.patch_size, stride=config.patch_size, bias=False
173
+ )
174
+ elif name == "video_encoder":
175
+ self.tubelet_embedding = nn.Conv3d(
176
+ 3,
177
+ width,
178
+ (2, config.patch_size, config.patch_size),
179
+ stride=(2, config.patch_size, config.patch_size),
180
+ bias=False,
181
+ )
182
+ elif name == "audio_encoder":
183
+ self.waveform_projection = nn.Linear(config.audio_frame_size, width, bias=False)
184
+ self.spectrum_projection = nn.Linear(
185
+ config.audio_frame_size // 2 + 1, width, bias=False
186
+ )
187
+ elif name == "eeg_encoder":
188
+ self.electrode_projection = nn.Linear(config.eeg_channels, width, bias=False)
189
+ self.graph_mix = nn.Linear(config.eeg_channels, config.eeg_channels, bias=False)
190
+ self.hierarchy = Hierarchy(name, config, adaptive=True)
191
+
192
+ def forward(self, value, context, adjacency=None):
193
+ rank = {
194
+ "text_encoder": 2,
195
+ "audio_encoder": 2,
196
+ "image_encoder": 4,
197
+ "video_encoder": 5,
198
+ "eeg_encoder": 3,
199
+ }[self.name]
200
+ if value.ndim != rank or value.shape[0] != 1 or 0 in value.shape:
201
+ raise ValueError(
202
+ f"{self.name} requires a nonempty rank-{rank} input with batch size one"
203
+ )
204
+ if self.name in ("image_encoder", "video_encoder") and (
205
+ value.shape[1] != 3 or any(n % self.config.patch_size for n in value.shape[-2:])
206
+ ):
207
+ raise ValueError("RGB spatial dimensions must be divisible by patch_size")
208
+ if self.name == "video_encoder" and value.shape[2] % 2:
209
+ raise ValueError("Video frame count must be divisible by two")
210
+ if self.name == "eeg_encoder" and value.shape[1] != self.config.eeg_channels:
211
+ raise ValueError("EEG channel count must match config")
212
+ if self.name == "text_encoder":
213
+ x = self.embedding(value)
214
+ elif self.name == "image_encoder":
215
+ x = self.patch_embedding(value).flatten(2).transpose(1, 2)
216
+ elif self.name == "video_encoder":
217
+ x = self.tubelet_embedding(value).flatten(2).transpose(1, 2)
218
+ elif self.name == "audio_encoder":
219
+ frame = self.config.audio_frame_size
220
+ if value.shape[-1] % frame:
221
+ raise ValueError("Audio must contain complete frames")
222
+ frames = value.unfold(-1, frame, frame)
223
+ spectrum = torch.fft.rfft(frames.float()).abs().to(value.dtype)
224
+ x = self.waveform_projection(frames) + self.spectrum_projection(spectrum)
225
+ else:
226
+ channels = self.config.eeg_channels
227
+ if adjacency is None or adjacency.shape != (channels, channels):
228
+ raise ValueError("EEG requires an explicit electrode adjacency matrix")
229
+ if (
230
+ (adjacency < 0).any()
231
+ or not torch.isfinite(adjacency).all()
232
+ or (adjacency.sum(-1) <= 0).any()
233
+ ):
234
+ raise ValueError("Invalid EEG adjacency")
235
+ graph = adjacency / adjacency.sum(-1, keepdim=True)
236
+ mixed = (graph @ value).transpose(1, 2)
237
+ x = self.electrode_projection(mixed + self.graph_mix(mixed))
238
+ position = torch.arange(x.shape[1], device=x.device)[:, None]
239
+ rate = torch.exp(-math.log(10000) * torch.arange(x.shape[2], device=x.device) / x.shape[2])
240
+ x = x + torch.sin(position * rate).to(x.dtype)[None]
241
+ high, trace = self.hierarchy(x, context)
242
+ # Fuse reconstructed detail features with the high-level representation.
243
+ details = self.hierarchy.dechunk(high, trace)
244
+ return high, details, trace
245
+
246
+
247
+ class Fusion(nn.Module):
248
+ def __init__(self, config):
249
+ super().__init__()
250
+ width = config.stages["fusion"][0][0]
251
+ encoders = sorted(k for k in config.stages if k.endswith("_encoder"))
252
+ self.high_projections = nn.ModuleDict(
253
+ {k: nn.Linear(config.stages[k][-1][0], width, bias=False) for k in encoders}
254
+ )
255
+ self.detail_projections = nn.ModuleDict(
256
+ {k: nn.Linear(config.stages[k][0][0], width, bias=False) for k in encoders}
257
+ )
258
+ self.modality_embedding = nn.Embedding(5, width)
259
+ self.hierarchy = Hierarchy("fusion", config)
260
+
261
+ def forward(self, features, context):
262
+ tokens = []
263
+ for name, (high, detail, _) in features.items():
264
+ i = list(self.high_projections).index(name)
265
+ token = self.high_projections[name](high) + self.detail_projections[name](
266
+ detail.mean(1, keepdim=True)
267
+ )
268
+ tokens.append(token + self.modality_embedding.weight[i])
269
+ return self.hierarchy(torch.cat(tokens, dim=1), context)[0]
270
+
271
+
272
+ class Decoder(nn.Module):
273
+ def __init__(self, name, config, output_width):
274
+ super().__init__()
275
+ self.input_projection = nn.Linear(
276
+ config.stages["world_model"][-1][0], config.stages[name][0][0], bias=False
277
+ )
278
+ self.hierarchy = Hierarchy(name, config)
279
+ self.output_projection = nn.Linear(config.stages[name][-1][0], output_width, bias=False)
280
+
281
+ def forward(self, x, context):
282
+ x = self.input_projection(x)
283
+ return self.output_projection(self.hierarchy(x, context, causal=True)[0])
284
+
285
+
286
+ @dataclass
287
+ class OmniOutput(ModelOutput):
288
+ next_token_logits: torch.Tensor | None = None
289
+ audio_codes: torch.Tensor | None = None
290
+ image_latents: torch.Tensor | None = None
291
+ video_latents: torch.Tensor | None = None
292
+ memory_state: torch.Tensor | None = None
293
+
294
+
295
+ class OmniModel(PreTrainedModel):
296
+ config_class = OmniConfig
297
+
298
+ def __init__(self, config):
299
+ super().__init__(config)
300
+ for name in (k for k in config.stages if k.endswith("_encoder")):
301
+ setattr(self, name, Encoder(name, config))
302
+ self.fusion = Fusion(config)
303
+ self.world_input = nn.Linear(
304
+ config.stages["fusion"][-1][0], config.stages["world_model"][0][0], bias=False
305
+ )
306
+ self.world_model = Hierarchy("world_model", config, adaptive=True)
307
+ self.world_detail_projection = nn.Linear(
308
+ config.stages["world_model"][0][0], config.stages["world_model"][-1][0], bias=False
309
+ )
310
+ self.text_head = nn.Linear(
311
+ config.stages["world_model"][-1][0], config.vocab_size, bias=False
312
+ )
313
+ self.audio_decoder = Decoder(
314
+ "audio_decoder", config, config.audio_codebooks * config.audio_codebook_size
315
+ )
316
+ self.image_decoder = Decoder("image_decoder", config, 64)
317
+ self.video_decoder = Decoder("video_decoder", config, 128)
318
+ self.memory_input = nn.Linear(
319
+ config.stages["world_model"][-1][0], config.stages["memory_control"][0][0], bias=False
320
+ )
321
+ self.memory_control = Hierarchy("memory_control", config)
322
+ self.memory_output = nn.Linear(
323
+ config.stages["memory_control"][-1][0], config.stages["fusion"][0][0], bias=False
324
+ )
325
+ self.post_init()
326
+
327
+ def _init_weights(self, module):
328
+ if isinstance(module, (nn.Linear, nn.Embedding, nn.Conv2d, nn.Conv3d)):
329
+ nn.init.normal_(module.weight, std=0.02)
330
+ if getattr(module, "bias", None) is not None:
331
+ nn.init.zeros_(module.bias)
332
+
333
+ def forward(
334
+ self,
335
+ input_ids,
336
+ pixel_values=None,
337
+ audio_values=None,
338
+ video_values=None,
339
+ eeg_values=None,
340
+ eeg_adjacency=None,
341
+ task_vector=None,
342
+ memory_state=None,
343
+ output_modalities=(),
344
+ ):
345
+ if input_ids.ndim != 2 or input_ids.shape[0] != 1 or input_ids.shape[1] == 0:
346
+ raise ValueError("Reference execution requires one nonempty observed prefix per call")
347
+ context = (
348
+ self.text_head.weight.new_zeros(1, self.config.context_dim)
349
+ if task_vector is None
350
+ else task_vector
351
+ )
352
+ if context.shape != (1, self.config.context_dim):
353
+ raise ValueError("Invalid task_vector shape")
354
+ values = {
355
+ "text_encoder": input_ids,
356
+ "image_encoder": pixel_values,
357
+ "audio_encoder": audio_values,
358
+ "video_encoder": video_values,
359
+ "eeg_encoder": eeg_values,
360
+ }
361
+ features = {
362
+ name: getattr(self, name)(value, context, eeg_adjacency)
363
+ for name, value in values.items()
364
+ if value is not None
365
+ }
366
+ fused = self.fusion(features, context)
367
+ if memory_state is not None:
368
+ fused = fused + self.memory_output(memory_state)[:, None]
369
+ world, trace = self.world_model(self.world_input(fused), context)
370
+ detail = self.world_model.dechunk(world, trace)
371
+ world = world + self.world_detail_projection(detail.mean(1, keepdim=True))
372
+ summary = world.mean(1)
373
+ memory = self.memory_control(self.memory_input(summary[:, None]), context)[0][:, 0]
374
+ outputs = {}
375
+ if set(output_modalities) - {"audio", "image", "video"}:
376
+ raise ValueError("Unknown output modality")
377
+ for name in output_modalities:
378
+ output = getattr(self, name + "_decoder")(world, context)
379
+ key = "audio_codes" if name == "audio" else name + "_latents"
380
+ outputs[key] = output
381
+ return OmniOutput(next_token_logits=self.text_head(summary), memory_state=memory, **outputs)
382
+
383
+ @torch.no_grad()
384
+ def generate(self, input_ids, max_new_tokens=8, **kwargs):
385
+ for _ in range(max_new_tokens):
386
+ token = self(input_ids, **kwargs).next_token_logits.argmax(-1, keepdim=True)
387
+ input_ids = torch.cat((input_ids, token), dim=-1)
388
+ return input_ids
389
+
390
+
391
+ OmniModel.register_for_auto_class("AutoModel")
requirements.txt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ torch==2.15.0
2
+ transformers==4.57.6
3
+ safetensors==0.8.0
shards/000/model-00001-of-09400.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:098438fd8e0a7d1416dcf33e4873f7ba42fa87184b40606141e6d35e8d426181
3
+ size 268435640
shards/000/model-00002-of-09400.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:098438fd8e0a7d1416dcf33e4873f7ba42fa87184b40606141e6d35e8d426181
3
+ size 268435640
shards/000/model-00003-of-09400.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:098438fd8e0a7d1416dcf33e4873f7ba42fa87184b40606141e6d35e8d426181
3
+ size 268435640
shards/000/model-00004-of-09400.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:098438fd8e0a7d1416dcf33e4873f7ba42fa87184b40606141e6d35e8d426181
3
+ size 268435640
shards/000/model-00005-of-09400.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:098438fd8e0a7d1416dcf33e4873f7ba42fa87184b40606141e6d35e8d426181
3
+ size 268435640
shards/000/model-00006-of-09400.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:098438fd8e0a7d1416dcf33e4873f7ba42fa87184b40606141e6d35e8d426181
3
+ size 268435640
shards/000/model-00007-of-09400.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:098438fd8e0a7d1416dcf33e4873f7ba42fa87184b40606141e6d35e8d426181
3
+ size 268435640
shards/000/model-00008-of-09400.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:098438fd8e0a7d1416dcf33e4873f7ba42fa87184b40606141e6d35e8d426181
3
+ size 268435640
shards/000/model-00009-of-09400.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:098438fd8e0a7d1416dcf33e4873f7ba42fa87184b40606141e6d35e8d426181
3
+ size 268435640
shards/000/model-00010-of-09400.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:098438fd8e0a7d1416dcf33e4873f7ba42fa87184b40606141e6d35e8d426181
3
+ size 268435640
shards/000/model-00011-of-09400.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:098438fd8e0a7d1416dcf33e4873f7ba42fa87184b40606141e6d35e8d426181
3
+ size 268435640
shards/000/model-00012-of-09400.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:098438fd8e0a7d1416dcf33e4873f7ba42fa87184b40606141e6d35e8d426181
3
+ size 268435640
shards/000/model-00013-of-09400.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:098438fd8e0a7d1416dcf33e4873f7ba42fa87184b40606141e6d35e8d426181
3
+ size 268435640
shards/000/model-00014-of-09400.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:098438fd8e0a7d1416dcf33e4873f7ba42fa87184b40606141e6d35e8d426181
3
+ size 268435640
shards/000/model-00015-of-09400.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:098438fd8e0a7d1416dcf33e4873f7ba42fa87184b40606141e6d35e8d426181
3
+ size 268435640
shards/000/model-00016-of-09400.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:098438fd8e0a7d1416dcf33e4873f7ba42fa87184b40606141e6d35e8d426181
3
+ size 268435640
shards/000/model-00017-of-09400.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:098438fd8e0a7d1416dcf33e4873f7ba42fa87184b40606141e6d35e8d426181
3
+ size 268435640
shards/000/model-00018-of-09400.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:098438fd8e0a7d1416dcf33e4873f7ba42fa87184b40606141e6d35e8d426181
3
+ size 268435640
shards/000/model-00019-of-09400.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:098438fd8e0a7d1416dcf33e4873f7ba42fa87184b40606141e6d35e8d426181
3
+ size 268435640
shards/000/model-00020-of-09400.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:098438fd8e0a7d1416dcf33e4873f7ba42fa87184b40606141e6d35e8d426181
3
+ size 268435640
shards/000/model-00021-of-09400.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:098438fd8e0a7d1416dcf33e4873f7ba42fa87184b40606141e6d35e8d426181
3
+ size 268435640
shards/000/model-00022-of-09400.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:098438fd8e0a7d1416dcf33e4873f7ba42fa87184b40606141e6d35e8d426181
3
+ size 268435640
shards/000/model-00023-of-09400.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:098438fd8e0a7d1416dcf33e4873f7ba42fa87184b40606141e6d35e8d426181
3
+ size 268435640
shards/000/model-00024-of-09400.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:098438fd8e0a7d1416dcf33e4873f7ba42fa87184b40606141e6d35e8d426181
3
+ size 268435640
shards/000/model-00025-of-09400.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:098438fd8e0a7d1416dcf33e4873f7ba42fa87184b40606141e6d35e8d426181
3
+ size 268435640
shards/000/model-00026-of-09400.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:098438fd8e0a7d1416dcf33e4873f7ba42fa87184b40606141e6d35e8d426181
3
+ size 268435640
shards/000/model-00027-of-09400.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:098438fd8e0a7d1416dcf33e4873f7ba42fa87184b40606141e6d35e8d426181
3
+ size 268435640
shards/000/model-00028-of-09400.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:098438fd8e0a7d1416dcf33e4873f7ba42fa87184b40606141e6d35e8d426181
3
+ size 268435640
shards/000/model-00029-of-09400.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:098438fd8e0a7d1416dcf33e4873f7ba42fa87184b40606141e6d35e8d426181
3
+ size 268435640
shards/000/model-00030-of-09400.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:098438fd8e0a7d1416dcf33e4873f7ba42fa87184b40606141e6d35e8d426181
3
+ size 268435640
shards/000/model-00031-of-09400.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:098438fd8e0a7d1416dcf33e4873f7ba42fa87184b40606141e6d35e8d426181
3
+ size 268435640
shards/000/model-00032-of-09400.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:098438fd8e0a7d1416dcf33e4873f7ba42fa87184b40606141e6d35e8d426181
3
+ size 268435640
shards/000/model-00033-of-09400.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:098438fd8e0a7d1416dcf33e4873f7ba42fa87184b40606141e6d35e8d426181
3
+ size 268435640
shards/000/model-00034-of-09400.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:098438fd8e0a7d1416dcf33e4873f7ba42fa87184b40606141e6d35e8d426181
3
+ size 268435640
shards/000/model-00035-of-09400.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:098438fd8e0a7d1416dcf33e4873f7ba42fa87184b40606141e6d35e8d426181
3
+ size 268435640
shards/000/model-00036-of-09400.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:098438fd8e0a7d1416dcf33e4873f7ba42fa87184b40606141e6d35e8d426181
3
+ size 268435640
shards/000/model-00037-of-09400.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:098438fd8e0a7d1416dcf33e4873f7ba42fa87184b40606141e6d35e8d426181
3
+ size 268435640
shards/000/model-00038-of-09400.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:098438fd8e0a7d1416dcf33e4873f7ba42fa87184b40606141e6d35e8d426181
3
+ size 268435640