mirror of
https://github.com/comfyanonymous/ComfyUI.git
synced 2025-04-19 10:53:29 +00:00
Add ldm format support to UNETLoader.
This commit is contained in:
parent
9562a6b49e
commit
7d401ed1d0
28
comfy/sd.py
28
comfy/sd.py
@ -454,20 +454,26 @@ def load_unet(unet_path): #load unet in diffusers format
|
|||||||
sd = comfy.utils.load_torch_file(unet_path)
|
sd = comfy.utils.load_torch_file(unet_path)
|
||||||
parameters = comfy.utils.calculate_parameters(sd)
|
parameters = comfy.utils.calculate_parameters(sd)
|
||||||
fp16 = model_management.should_use_fp16(model_params=parameters)
|
fp16 = model_management.should_use_fp16(model_params=parameters)
|
||||||
|
if "input_blocks.0.0.weight" in sd: #ldm
|
||||||
|
model_config = model_detection.model_config_from_unet(sd, "", fp16)
|
||||||
|
if model_config is None:
|
||||||
|
raise RuntimeError("ERROR: Could not detect model type of: {}".format(unet_path))
|
||||||
|
new_sd = sd
|
||||||
|
|
||||||
model_config = model_detection.model_config_from_diffusers_unet(sd, fp16)
|
else: #diffusers
|
||||||
if model_config is None:
|
model_config = model_detection.model_config_from_diffusers_unet(sd, fp16)
|
||||||
print("ERROR UNSUPPORTED UNET", unet_path)
|
if model_config is None:
|
||||||
return None
|
print("ERROR UNSUPPORTED UNET", unet_path)
|
||||||
|
return None
|
||||||
|
|
||||||
diffusers_keys = comfy.utils.unet_to_diffusers(model_config.unet_config)
|
diffusers_keys = comfy.utils.unet_to_diffusers(model_config.unet_config)
|
||||||
|
|
||||||
new_sd = {}
|
new_sd = {}
|
||||||
for k in diffusers_keys:
|
for k in diffusers_keys:
|
||||||
if k in sd:
|
if k in sd:
|
||||||
new_sd[diffusers_keys[k]] = sd.pop(k)
|
new_sd[diffusers_keys[k]] = sd.pop(k)
|
||||||
else:
|
else:
|
||||||
print(diffusers_keys[k], k)
|
print(diffusers_keys[k], k)
|
||||||
offload_device = model_management.unet_offload_device()
|
offload_device = model_management.unet_offload_device()
|
||||||
model = model_config.get_model(new_sd, "")
|
model = model_config.get_model(new_sd, "")
|
||||||
model = model.to(offload_device)
|
model = model.to(offload_device)
|
||||||
|
Loading…
Reference in New Issue
Block a user