(self, model, image_embeds, shift, steps, cfg, seed, scheduler, riflex_freq_index, text_embeds=None,
force_offload=True, samples=None, feta_args=None, denoise_strength=1.0, context_options=None,
cache_args=None, teacache_args=None, flowedit_args=None, batched_cfg=False, slg_args=None, rope_function="default", loop_args=None,
experimental_args=None, sigmas=None, unianimate_poses=None, fantasytalking_embeds=None, uni3c_embeds=None, multitalk_embeds=None, freeinit_args=None, start_step=0, end_step=-1, add_noise_to_samples=False)
| 78 | CATEGORY = "WanVideoWrapper" |
| 79 | |
| 80 | def process(self, model, image_embeds, shift, steps, cfg, seed, scheduler, riflex_freq_index, text_embeds=None, |
| 81 | force_offload=True, samples=None, feta_args=None, denoise_strength=1.0, context_options=None, |
| 82 | cache_args=None, teacache_args=None, flowedit_args=None, batched_cfg=False, slg_args=None, rope_function="default", loop_args=None, |
| 83 | experimental_args=None, sigmas=None, unianimate_poses=None, fantasytalking_embeds=None, uni3c_embeds=None, multitalk_embeds=None, freeinit_args=None, start_step=0, end_step=-1, add_noise_to_samples=False): |
| 84 | if flowedit_args is not None: |
| 85 | raise Exception("FlowEdit support has been deprecated and removed due to lack of use and code maintainability") |
| 86 | patcher = model |
| 87 | model = model.model |
| 88 | transformer = model.diffusion_model |
| 89 | |
| 90 | dtype = model["base_dtype"] |
| 91 | weight_dtype = model["weight_dtype"] |
| 92 | fp8_matmul = model["fp8_matmul"] |
| 93 | gguf_reader = model["gguf_reader"] |
| 94 | control_lora = model["control_lora"] |
| 95 | |
| 96 | vae = image_embeds.get("vae", None) |
| 97 | tiled_vae = image_embeds.get("tiled_vae", False) |
| 98 | |
| 99 | transformer_options = copy.deepcopy(patcher.model_options.get("transformer_options", None)) |
| 100 | merge_loras = transformer_options["merge_loras"] |
| 101 | |
| 102 | block_swap_args = transformer_options.get("block_swap_args", None) |
| 103 | if block_swap_args is not None: |
| 104 | transformer.use_non_blocking = block_swap_args.get("use_non_blocking", False) |
| 105 | transformer.blocks_to_swap = block_swap_args.get("blocks_to_swap", 0) |
| 106 | transformer.vace_blocks_to_swap = block_swap_args.get("vace_blocks_to_swap", 0) |
| 107 | transformer.prefetch_blocks = block_swap_args.get("prefetch_blocks", 0) |
| 108 | transformer.block_swap_debug = block_swap_args.get("block_swap_debug", False) |
| 109 | transformer.offload_img_emb = block_swap_args.get("offload_img_emb", False) |
| 110 | transformer.offload_txt_emb = block_swap_args.get("offload_txt_emb", False) |
| 111 | |
| 112 | is_5b = transformer.out_dim == 48 |
| 113 | vae_upscale_factor = 16 if is_5b else 8 |
| 114 | |
| 115 | # Load weights |
| 116 | if transformer.audio_model is not None: |
| 117 | for block in transformer.blocks: |
| 118 | if hasattr(block, 'audio_block'): |
| 119 | block.audio_block = None |
| 120 | |
| 121 | if not transformer.patched_linear and patcher.model["sd"] is not None and len(patcher.patches) != 0 and gguf_reader is None: |
| 122 | transformer = _replace_linear(transformer, dtype, patcher.model["sd"], compile_args=model["compile_args"]) |
| 123 | transformer.patched_linear = True |
| 124 | if patcher.model["sd"] is not None and gguf_reader is None: |
| 125 | load_weights(patcher.model.diffusion_model, patcher.model["sd"], weight_dtype, base_dtype=dtype, transformer_load_device=device, |
| 126 | block_swap_args=block_swap_args, compile_args=model["compile_args"]) |
| 127 | |
| 128 | if gguf_reader is not None: #handle GGUF |
| 129 | load_weights(transformer, patcher.model["sd"], base_dtype=dtype, transformer_load_device=device, patcher=patcher, gguf=True, |
| 130 | reader=gguf_reader, block_swap_args=block_swap_args, compile_args=model["compile_args"]) |
| 131 | set_lora_params_gguf(transformer, patcher.patches) |
| 132 | transformer.patched_linear = True |
| 133 | elif len(patcher.patches) != 0: #handle patched linear layers (unmerged loras, fp8 scaled) |
| 134 | log.info(f"Using {len(patcher.patches)} LoRA weight patches for WanVideo model") |
| 135 | if not merge_loras and fp8_matmul: |
| 136 | raise NotImplementedError("FP8 matmul with unmerged LoRAs is not supported") |
| 137 | set_lora_params(transformer, patcher.patches) |
no test coverage detected