Skip to content

Commit 0a7ba3a

Browse files
committed
Fixed import of models where the same data file is used for multiple SD keys
1 parent 31728e2 commit 0a7ba3a

File tree

1 file changed

+19
-6
lines changed

1 file changed

+19
-6
lines changed

backends/model_converter/fake_torch.py

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,16 @@ def __new__(cls, *args):
1616
assert ident == 'storage'
1717

1818
assert prod(args[2]) == obj_size
19+
20+
1921
ret = np.zeros(args[2], dtype=storage_type)
20-
key_prelookup[obj_key] = (storage_type, obj_size, ret, args[2], args[3])
22+
if obj_key not in key_prelookup:
23+
key_prelookup[obj_key] = []
24+
25+
key_prelookup[obj_key].append((storage_type, obj_size, ret, args[2], args[3]))
26+
27+
#print(f"File: {obj_key}, references: {len(key_prelookup[obj_key])}, size: {args[2]}, storage_type: {storage_type}")
28+
2129
return ret
2230

2331
class HackParameter:
@@ -78,12 +86,17 @@ def fake_torch_load_zipped(fb0, load_weights=True):
7886
with myzip.open(folder_name+'/data.pkl') as myfile:
7987
ret = my_unpickle(myfile)
8088
if load_weights:
81-
for k,v in ret[1].items():
89+
for k, v_arr in ret[1].items():
8290
with myzip.open(folder_name + f'/data/{k}') as myfile:
83-
if v[2].dtype == "object":
84-
print(f"issue assigning object on {k}")
85-
continue
86-
np.copyto(v[2], np.frombuffer(myfile.read(), v[2].dtype).reshape(v[3]))
91+
#print(f"Eating data file {k} now")
92+
file_data = myfile.read()
93+
for v in v_arr:
94+
if v[2].dtype == "object":
95+
print(f"issue assigning object on {k}")
96+
continue
97+
#weight = np.frombuffer(file_data, v[2].dtype).reshape(v[3])
98+
#np.copyto(v[2], weight)
99+
np.copyto(v[2], np.frombuffer(file_data, v[2].dtype).reshape(v[3]))
87100
return ret[0]
88101

89102
def fake_torch_load(b0):

0 commit comments

Comments
 (0)