Update nodes.py

This commit is contained in:
kijai
2025-02-26 09:09:22 +02:00
parent fd730326c9
commit ee0d6d9fde
+27 -51
View File
@@ -769,10 +769,7 @@ class WanVideoSampler:
},
"optional": {
"samples": ("LATENT", {"tooltip": "init Latents to use for video2video process"} ),
#"image_cond_latents": ("LATENT", {"tooltip": "init Latents to use for image2video process"} ),
"denoise_strength": ("FLOAT", {"default": 1.0, "min": 0.0, "max": 1.0, "step": 0.01}),
#"riflex_freq_index": ("INT", {"default": 0, "min": 0, "max": 1000, "step": 1, "tooltip": "Frequency index for RIFLEX, disabled when 0, default 4. Allows for new frames to be generated after 129 without looping"}),
}
}
@@ -788,51 +785,6 @@ class WanVideoSampler:
device = mm.get_torch_device()
offload_device = mm.unet_offload_device()
if model["block_swap_args"] is not None:
for name, param in transformer.named_parameters():
if "block" not in name:
param.data = param.data.to(device)
transformer.block_swap(
model["block_swap_args"]["blocks_to_swap"] - 1 ,
)
else:
if model["manual_offloading"]:
transformer.to(device)
# # Initialize TeaCache if enabled
# if teacache_args is not None:
# # Check if dimensions have changed since last run
# if (not hasattr(transformer, 'last_dimensions') or
# transformer.last_dimensions != (height, width, num_frames) or
# not hasattr(transformer, 'last_frame_count') or
# transformer.last_frame_count != num_frames):
# # Reset TeaCache state on dimension change
# transformer.cnt = 0
# transformer.accumulated_rel_l1_distance = 0
# transformer.previous_modulated_input = None
# transformer.previous_residual = None
# transformer.last_dimensions = (height, width, num_frames)
# transformer.last_frame_count = num_frames
# transformer.enable_teacache = True
# transformer.num_steps = steps
# transformer.rel_l1_thresh = teacache_args["rel_l1_thresh"]
# else:
# transformer.enable_teacache = False
mm.soft_empty_cache()
gc.collect()
try:
torch.cuda.reset_peak_memory_stats(device)
except:
pass
#for name, param in transformer.named_parameters():
# print(name, param.data.device)
steps = int(steps/denoise_strength)
@@ -869,11 +821,15 @@ class WanVideoSampler:
seed_g = torch.Generator(device=torch.device("cpu"))
seed_g.manual_seed(seed)
if transformer.model_type == "i2v":
lat_h = image_embeds.get("lat_h", None)
lat_w = image_embeds.get("lat_w", None)
if lat_h is None or lat_w is None:
raise ValueError("Clip encoded image embeds must be provided for i2v model")
noise = torch.randn(
16,
(image_embeds["num_frames"] - 1) // 4 + 1,
image_embeds["lat_h"],
image_embeds["lat_w"],
lat_h,
lat_w,
dtype=torch.float32,
generator=seed_g,
device=torch.device("cpu"))
@@ -906,7 +862,6 @@ class WanVideoSampler:
if not isinstance(cfg, list):
cfg = [cfg] * (steps +1)
print(cfg)
base_args = {
'clip_fea': image_embeds.get('clip_context', None),
@@ -930,6 +885,27 @@ class WanVideoSampler:
from latent_preview import prepare_callback
callback = prepare_callback(patcher, steps)
#blockswap init
if model["block_swap_args"] is not None:
for name, param in transformer.named_parameters():
if "block" not in name:
param.data = param.data.to(device)
transformer.block_swap(
model["block_swap_args"]["blocks_to_swap"] - 1 ,
)
else:
if model["manual_offloading"]:
transformer.to(device)
mm.soft_empty_cache()
gc.collect()
try:
torch.cuda.reset_peak_memory_stats(device)
except:
pass
with torch.autocast(device_type=mm.get_autocast_device(device), dtype=model["dtype"], enabled=True):
for i, t in enumerate(tqdm(timesteps)):
latent_model_input = [latent.to(device)]