mmgp 3.6.0__py3-none-any.whl → 3.6.1__py3-none-any.whl

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/offload.py CHANGED
@@ -1,4 +1,4 @@
1
- # ------------------ Memory Management 3.6.0 for the GPU Poor by DeepBeepMeep (mmgp)------------------
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.0) by DeepBeepMeep ************{ENDC}{UNBOLD}")
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
- for k, v in state_dict.items():
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.to(module.weight.dtype)
1199
+ loras_adapter_data[0] = lora_A
1192
1200
  elif lora_B != None:
1193
- loras_adapter_data[1] = lora_B.to(module.weight.dtype)
1201
+ loras_adapter_data[1] = lora_B
1194
1202
  else:
1195
- loras_adapter_data[2] = diff_b.to(module.weight.dtype)
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(state_dict)
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.0
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.0 for the GPU Poor by DeepBeepMeep</H2>
18
+ <H2>Memory Management 3.6.1 for the GPU Poor by DeepBeepMeep</H2>
19
19
  </p>
20
20
 
21
21
 
@@ -0,0 +1,9 @@
1
+ __init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
+ mmgp/__init__.py,sha256=A9qBwyQMd1M7vshSTOBnFGP1MQvS2hXmTcTCMUcmyzE,509
3
+ mmgp/offload.py,sha256=EPiMRzMLQ_6fnfCKeCLXfaSXKprMNcWilOhJhkdNkO8,132833
4
+ mmgp/safetensors2.py,sha256=zYNMprt1KoxgVALbcz6DawxsQDNNRImvgO9cYRChUiY,19028
5
+ mmgp-3.6.1.dist-info/licenses/LICENSE.md,sha256=HjzvY2grdtdduZclbZ46B2M-XpT4MDCxFub5ZwTWq2g,93
6
+ mmgp-3.6.1.dist-info/METADATA,sha256=lTyBifQB0ApNB_OnIKrGXgPh6Bf66TUyEcqpGWbDTfM,16309
7
+ mmgp-3.6.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
8
+ mmgp-3.6.1.dist-info/top_level.txt,sha256=waGaepj2qVfnS2yAOkaMu4r9mJaVjGbEi6AwOUogU_U,14
9
+ mmgp-3.6.1.dist-info/RECORD,,
@@ -1,9 +0,0 @@
1
- __init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
- mmgp/__init__.py,sha256=A9qBwyQMd1M7vshSTOBnFGP1MQvS2hXmTcTCMUcmyzE,509
3
- mmgp/offload.py,sha256=UaqWLw8jrNs9ibbIWplbLO5Cym84Txuu4lzttgxmnXs,132411
4
- mmgp/safetensors2.py,sha256=zYNMprt1KoxgVALbcz6DawxsQDNNRImvgO9cYRChUiY,19028
5
- mmgp-3.6.0.dist-info/licenses/LICENSE.md,sha256=HjzvY2grdtdduZclbZ46B2M-XpT4MDCxFub5ZwTWq2g,93
6
- mmgp-3.6.0.dist-info/METADATA,sha256=epm8_KuIB_c4W9iB31KIbHtNjdVuLyvW-DZoc8RR434,16309
7
- mmgp-3.6.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
8
- mmgp-3.6.0.dist-info/top_level.txt,sha256=waGaepj2qVfnS2yAOkaMu4r9mJaVjGbEi6AwOUogU_U,14
9
- mmgp-3.6.0.dist-info/RECORD,,
File without changes