Browse Source

support loading VAE

AUTOMATIC 2 years ago
parent
commit
d15b3ec001
1 changed files with 8 additions and 0 deletions
  1. 8 0
      modules/sd_models.py

+ 8 - 0
modules/sd_models.py

@@ -134,6 +134,14 @@ def load_model_weights(model, checkpoint_file, sd_model_hash):
 
 
     devices.dtype = torch.float32 if shared.cmd_opts.no_half else torch.float16
     devices.dtype = torch.float32 if shared.cmd_opts.no_half else torch.float16
 
 
+    vae_file = os.path.splitext(checkpoint_file)[0] + ".vae.pt"
+    if os.path.exists(vae_file):
+        print(f"Loading VAE weights from: {vae_file}")
+        vae_ckpt = torch.load(vae_file, map_location="cpu")
+        vae_dict = {k: v for k, v in vae_ckpt["state_dict"].items() if k[0:4] != "loss"}
+
+        model.first_stage_model.load_state_dict(vae_dict)
+
     model.sd_model_hash = sd_model_hash
     model.sd_model_hash = sd_model_hash
     model.sd_model_checkpint = checkpoint_file
     model.sd_model_checkpint = checkpoint_file