mmgp 3.6.0__tar.gz → 3.6.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of mmgp might be problematic. Click here for more details.
- {mmgp-3.6.0/src/mmgp.egg-info → mmgp-3.6.1}/PKG-INFO +2 -2
- {mmgp-3.6.0 → mmgp-3.6.1}/README.md +1 -1
- {mmgp-3.6.0 → mmgp-3.6.1}/pyproject.toml +1 -1
- {mmgp-3.6.0 → mmgp-3.6.1}/src/mmgp/offload.py +15 -7
- {mmgp-3.6.0 → mmgp-3.6.1/src/mmgp.egg-info}/PKG-INFO +2 -2
- {mmgp-3.6.0 → mmgp-3.6.1}/LICENSE.md +0 -0
- {mmgp-3.6.0 → mmgp-3.6.1}/setup.cfg +0 -0
- {mmgp-3.6.0 → mmgp-3.6.1}/src/__init__.py +0 -0
- {mmgp-3.6.0 → mmgp-3.6.1}/src/mmgp/__init__.py +0 -0
- {mmgp-3.6.0 → mmgp-3.6.1}/src/mmgp/safetensors2.py +0 -0
- {mmgp-3.6.0 → mmgp-3.6.1}/src/mmgp.egg-info/SOURCES.txt +0 -0
- {mmgp-3.6.0 → mmgp-3.6.1}/src/mmgp.egg-info/dependency_links.txt +0 -0
- {mmgp-3.6.0 → mmgp-3.6.1}/src/mmgp.egg-info/requires.txt +0 -0
- {mmgp-3.6.0 → mmgp-3.6.1}/src/mmgp.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: mmgp
|
|
3
|
-
Version: 3.6.
|
|
3
|
+
Version: 3.6.1
|
|
4
4
|
Summary: Memory Management for the GPU Poor
|
|
5
5
|
Author-email: deepbeepmeep <deepbeepmeep@yahoo.com>
|
|
6
6
|
Requires-Python: >=3.10
|
|
@@ -15,7 +15,7 @@ Dynamic: license-file
|
|
|
15
15
|
|
|
16
16
|
|
|
17
17
|
<p align="center">
|
|
18
|
-
<H2>Memory Management 3.6.
|
|
18
|
+
<H2>Memory Management 3.6.1 for the GPU Poor by DeepBeepMeep</H2>
|
|
19
19
|
</p>
|
|
20
20
|
|
|
21
21
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# ------------------ Memory Management 3.6.
|
|
1
|
+
# ------------------ Memory Management 3.6.1 for the GPU Poor by DeepBeepMeep (mmgp)------------------
|
|
2
2
|
#
|
|
3
3
|
# This module contains multiples optimisations so that models such as Flux (and derived), Mochi, CogView, HunyuanVideo, ... can run smoothly on a 24 GB GPU limited card.
|
|
4
4
|
# This a replacement for the accelerate library that should in theory manage offloading, but doesn't work properly with models that are loaded / unloaded several
|
|
@@ -688,7 +688,7 @@ def _welcome():
|
|
|
688
688
|
if welcome_displayed:
|
|
689
689
|
return
|
|
690
690
|
welcome_displayed = True
|
|
691
|
-
print(f"{BOLD}{HEADER}************ Memory Management for the GPU Poor (mmgp 3.6.
|
|
691
|
+
print(f"{BOLD}{HEADER}************ Memory Management for the GPU Poor (mmgp 3.6.1) by DeepBeepMeep ************{ENDC}{UNBOLD}")
|
|
692
692
|
|
|
693
693
|
def change_dtype(model, new_dtype, exclude_buffers = False):
|
|
694
694
|
for submodule_name, submodule in model.named_modules():
|
|
@@ -1097,7 +1097,9 @@ def load_loras_into_model(model, lora_path, lora_multi = None, activate_all_lora
|
|
|
1097
1097
|
|
|
1098
1098
|
invalid_keys = []
|
|
1099
1099
|
unexpected_keys = []
|
|
1100
|
-
|
|
1100
|
+
new_state_dict = {}
|
|
1101
|
+
for k in list(state_dict.keys()):
|
|
1102
|
+
v = state_dict.pop(k)
|
|
1101
1103
|
lora_A = lora_B = diff_b = diff = lora_key = None
|
|
1102
1104
|
if k.endswith(".diff"):
|
|
1103
1105
|
diff = v
|
|
@@ -1141,6 +1143,7 @@ def load_loras_into_model(model, lora_path, lora_multi = None, activate_all_lora
|
|
|
1141
1143
|
error_msg = append(error_msg, msg)
|
|
1142
1144
|
fail = True
|
|
1143
1145
|
break
|
|
1146
|
+
v = lora_A = lora_A.to(module.weight.dtype)
|
|
1144
1147
|
elif lora_B != None:
|
|
1145
1148
|
rank = lora_B.shape[1]
|
|
1146
1149
|
if module_shape[0] != v.shape[0]:
|
|
@@ -1151,6 +1154,7 @@ def load_loras_into_model(model, lora_path, lora_multi = None, activate_all_lora
|
|
|
1151
1154
|
error_msg = append(error_msg, msg)
|
|
1152
1155
|
fail = True
|
|
1153
1156
|
break
|
|
1157
|
+
v = lora_B = lora_B.to(module.weight.dtype)
|
|
1154
1158
|
elif diff != None:
|
|
1155
1159
|
lora_B = diff
|
|
1156
1160
|
if module_shape != v.shape:
|
|
@@ -1161,6 +1165,7 @@ def load_loras_into_model(model, lora_path, lora_multi = None, activate_all_lora
|
|
|
1161
1165
|
error_msg = append(error_msg, msg)
|
|
1162
1166
|
fail = True
|
|
1163
1167
|
break
|
|
1168
|
+
v = lora_B = lora_B.to(module.weight.dtype)
|
|
1164
1169
|
elif diff_b != None:
|
|
1165
1170
|
rank = diff_b.shape[0]
|
|
1166
1171
|
if not hasattr(module, "bias"):
|
|
@@ -1179,8 +1184,11 @@ def load_loras_into_model(model, lora_path, lora_multi = None, activate_all_lora
|
|
|
1179
1184
|
error_msg = append(error_msg, msg)
|
|
1180
1185
|
fail = True
|
|
1181
1186
|
break
|
|
1187
|
+
v = diff_b = diff_b.to(module.weight.dtype)
|
|
1182
1188
|
|
|
1183
1189
|
if not check_only:
|
|
1190
|
+
new_state_dict[k] = v
|
|
1191
|
+
v = None
|
|
1184
1192
|
loras_module_data = loras_model_data.get(module, None)
|
|
1185
1193
|
assert loras_module_data != None
|
|
1186
1194
|
loras_adapter_data = loras_module_data.get(adapter_name, None)
|
|
@@ -1188,11 +1196,11 @@ def load_loras_into_model(model, lora_path, lora_multi = None, activate_all_lora
|
|
|
1188
1196
|
loras_adapter_data = [None, None, None, 1.]
|
|
1189
1197
|
loras_module_data[adapter_name] = loras_adapter_data
|
|
1190
1198
|
if lora_A != None:
|
|
1191
|
-
loras_adapter_data[0] = lora_A
|
|
1199
|
+
loras_adapter_data[0] = lora_A
|
|
1192
1200
|
elif lora_B != None:
|
|
1193
|
-
loras_adapter_data[1] = lora_B
|
|
1201
|
+
loras_adapter_data[1] = lora_B
|
|
1194
1202
|
else:
|
|
1195
|
-
loras_adapter_data[2] = diff_b
|
|
1203
|
+
loras_adapter_data[2] = diff_b
|
|
1196
1204
|
if rank != None and lora_key is not None and "lora" in lora_key:
|
|
1197
1205
|
alpha_key = k[:-len(lora_key)] + "alpha"
|
|
1198
1206
|
alpha = lora_alphas.get(alpha_key, None)
|
|
@@ -1220,7 +1228,7 @@ def load_loras_into_model(model, lora_path, lora_multi = None, activate_all_lora
|
|
|
1220
1228
|
if not check_only:
|
|
1221
1229
|
# model._loras_tied_weights[adapter_name] = tied_weights
|
|
1222
1230
|
if pinnedLora:
|
|
1223
|
-
pinned_sd_list.append(
|
|
1231
|
+
pinned_sd_list.append(new_state_dict)
|
|
1224
1232
|
pinned_names_list.append(path)
|
|
1225
1233
|
# _pin_sd_to_memory(state_dict, path)
|
|
1226
1234
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: mmgp
|
|
3
|
-
Version: 3.6.
|
|
3
|
+
Version: 3.6.1
|
|
4
4
|
Summary: Memory Management for the GPU Poor
|
|
5
5
|
Author-email: deepbeepmeep <deepbeepmeep@yahoo.com>
|
|
6
6
|
Requires-Python: >=3.10
|
|
@@ -15,7 +15,7 @@ Dynamic: license-file
|
|
|
15
15
|
|
|
16
16
|
|
|
17
17
|
<p align="center">
|
|
18
|
-
<H2>Memory Management 3.6.
|
|
18
|
+
<H2>Memory Management 3.6.1 for the GPU Poor by DeepBeepMeep</H2>
|
|
19
19
|
</p>
|
|
20
20
|
|
|
21
21
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|