Upload folder using huggingface_hub
Browse files
.gitattributes
CHANGED
@@ -33,3 +33,6 @@ 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 |
+
Home-Cook-Mistral-Small-Omni-2507-bf16.gguf filter=lfs diff=lfs merge=lfs -text
|
37 |
+
Home-Cook-Mistral-Small-Omni-2507-f16.gguf filter=lfs diff=lfs merge=lfs -text
|
38 |
+
mmproj-model-f16.gguf filter=lfs diff=lfs merge=lfs -text
|
Home-Cook-Mistral-Small-Omni-2507-bf16.gguf
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:90e67f8e12d924e9202428b41a06ff4601365a28101a23f41f00e8a06eba41d4
|
3 |
+
size 47154051136
|
Home-Cook-Mistral-Small-Omni-2507-f16.gguf
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:13dbbd4ba30f66f252903e1833af699fa2fc3f5178940867c00c348fdb73149a
|
3 |
+
size 47154051136
|
merge_mmproj_models.py
ADDED
@@ -0,0 +1,94 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
#!/usr/bin/env python3
|
2 |
+
from __future__ import annotations
|
3 |
+
|
4 |
+
import logging
|
5 |
+
import argparse
|
6 |
+
import os
|
7 |
+
import sys
|
8 |
+
import json
|
9 |
+
from pathlib import Path
|
10 |
+
|
11 |
+
from tqdm import tqdm
|
12 |
+
from typing import Any, Sequence, NamedTuple
|
13 |
+
|
14 |
+
# Necessary to load the local gguf package
|
15 |
+
if "NO_LOCAL_GGUF" not in os.environ and (Path(__file__).parent.parent.parent.parent / 'gguf-py').exists():
|
16 |
+
sys.path.insert(0, str(Path(__file__).parent.parent.parent))
|
17 |
+
|
18 |
+
import gguf
|
19 |
+
|
20 |
+
logger = logging.getLogger("gguf-mmproj-merge")
|
21 |
+
|
22 |
+
|
23 |
+
class MetadataDetails(NamedTuple):
|
24 |
+
type: gguf.GGUFValueType
|
25 |
+
value: Any
|
26 |
+
description: str = ''
|
27 |
+
sub_type: gguf.GGUFValueType | None = None
|
28 |
+
|
29 |
+
|
30 |
+
def get_field_data(reader: gguf.GGUFReader, key: str) -> Any:
|
31 |
+
field = reader.get_field(key)
|
32 |
+
|
33 |
+
return field.contents() if field else None
|
34 |
+
|
35 |
+
|
36 |
+
def merge_multiple_ggufs(readers: Sequence[gguf.GGUFReader], writer: gguf.GGUFWriter) -> None:
|
37 |
+
total_bytes = 0
|
38 |
+
seen_fields = set()
|
39 |
+
|
40 |
+
for reader in readers:
|
41 |
+
for field in reader.fields.values():
|
42 |
+
# Suppress virtual fields and fields written by GGUFWriter
|
43 |
+
if field.name == gguf.Keys.General.ARCHITECTURE or field.name.startswith('GGUF.') or "projector_type" in field.name:
|
44 |
+
logger.debug(f'Suppressing {field.name}')
|
45 |
+
continue
|
46 |
+
|
47 |
+
if field.name in seen_fields:
|
48 |
+
logger.debug(f'Skipping duplicate field {field.name}')
|
49 |
+
continue
|
50 |
+
|
51 |
+
seen_fields.add(field.name)
|
52 |
+
|
53 |
+
val_type = field.types[0]
|
54 |
+
sub_type = field.types[-1] if val_type == gguf.GGUFValueType.ARRAY else None
|
55 |
+
old_val = MetadataDetails(val_type, field.contents(), sub_type=sub_type)
|
56 |
+
val = old_val
|
57 |
+
|
58 |
+
assert val.value is not None
|
59 |
+
logger.debug(f'Copying {field.name}')
|
60 |
+
writer.add_key_value(field.name, val.value, val.type, sub_type=sub_type if val.sub_type is None else val.sub_type)
|
61 |
+
|
62 |
+
for tensor in reader.tensors:
|
63 |
+
total_bytes += tensor.n_bytes
|
64 |
+
writer.add_tensor_info(tensor.name, tensor.data.shape, tensor.data.dtype, tensor.data.nbytes, tensor.tensor_type)
|
65 |
+
|
66 |
+
bar = tqdm(desc="Writing", total=total_bytes, unit="byte", unit_scale=True)
|
67 |
+
|
68 |
+
writer.add_string("clip.vision.projector_type", "pixtral")
|
69 |
+
writer.add_string("clip.audio.projector_type", "voxtral")
|
70 |
+
writer.write_header_to_file()
|
71 |
+
writer.write_kv_data_to_file()
|
72 |
+
writer.write_ti_data_to_file()
|
73 |
+
|
74 |
+
for reader in readers:
|
75 |
+
for tensor in reader.tensors:
|
76 |
+
writer.write_tensor_data(tensor.data)
|
77 |
+
bar.update(tensor.n_bytes)
|
78 |
+
|
79 |
+
writer.close()
|
80 |
+
|
81 |
+
|
82 |
+
def main() -> None:
|
83 |
+
reader0 = gguf.GGUFReader('audio.gguf', 'r')
|
84 |
+
reader1 = gguf.GGUFReader('vision.gguf', 'r')
|
85 |
+
output_path = 'mmproj-model.gguf'
|
86 |
+
|
87 |
+
logger.info(f'* Writing: {output_path}')
|
88 |
+
writer = gguf.GGUFWriter(output_path, arch='clip', endianess=reader0.endianess)
|
89 |
+
|
90 |
+
merge_multiple_ggufs([reader0, reader1], writer)
|
91 |
+
|
92 |
+
|
93 |
+
if __name__ == '__main__':
|
94 |
+
main()
|
mmproj-model-f16.gguf
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:8a2cd57fff1772fd0bcf267b44fe0c03f028358f9b753142b6ab862ff5bd56de
|
3 |
+
size 2261710592
|