load models to VRAM when using --lowram param

load models to VRM instead of RAM (for machines which have bigger VRM than RAM such as free Google Colab server)
This commit is contained in:
Ljzd-PRO 2022-10-13 02:07:49 +08:00 committed by AUTOMATIC1111
parent a8eeb2b7ad
commit 4a216ded43

View File

@ -134,7 +134,12 @@ def load_model_weights(model, checkpoint_info):
print(f"Loading weights [{sd_model_hash}] from {checkpoint_file}") print(f"Loading weights [{sd_model_hash}] from {checkpoint_file}")
pl_sd = torch.load(checkpoint_file, map_location="cpu") if shared.cmd_opts.lowram:
print("Load to VRAM if GPU is available (low RAM)")
pl_sd = torch.load(checkpoint_file)
else:
pl_sd = torch.load(checkpoint_file, map_location="cpu")
if "global_step" in pl_sd: if "global_step" in pl_sd:
print(f"Global Step: {pl_sd['global_step']}") print(f"Global Step: {pl_sd['global_step']}")
@ -158,7 +163,13 @@ def load_model_weights(model, checkpoint_info):
if os.path.exists(vae_file): if os.path.exists(vae_file):
print(f"Loading VAE weights from: {vae_file}") print(f"Loading VAE weights from: {vae_file}")
vae_ckpt = torch.load(vae_file, map_location="cpu")
if shared.cmd_opts.lowram:
print("Load to VRAM if GPU is available (low RAM)")
vae_ckpt = torch.load(vae_file)
else:
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"} 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.first_stage_model.load_state_dict(vae_dict)