(self, model_name, precision, positive_prompt, negative_prompt, quantization='disabled', use_disk_cache=True, device="gpu", extender_args=None)
| 220 | |
| 221 | |
| 222 | def process(self, model_name, precision, positive_prompt, negative_prompt, quantization='disabled', use_disk_cache=True, device="gpu", extender_args=None): |
| 223 | from .nodes_model_loading import LoadWanVideoT5TextEncoder |
| 224 | pbar = ProgressBar(3) |
| 225 | |
| 226 | echoshot = True if "[1]" in positive_prompt else False |
| 227 | |
| 228 | # Handle prompt extension with in-memory cache |
| 229 | orig_prompt = positive_prompt |
| 230 | if extender_args is not None: |
| 231 | extender_key = (orig_prompt, str(extender_args)) |
| 232 | if extender_key in _extender_cache: |
| 233 | positive_prompt = _extender_cache[extender_key] |
| 234 | log.info(f"Loaded extended prompt from in-memory cache: {positive_prompt}") |
| 235 | else: |
| 236 | from .qwen.qwen import QwenLoader, WanVideoPromptExtender |
| 237 | log.info("Using WanVideoPromptExtender to process prompts") |
| 238 | qwen, = QwenLoader().load( |
| 239 | extender_args["model"], |
| 240 | load_device="main_device" if device == "gpu" else "cpu", |
| 241 | precision=precision) |
| 242 | positive_prompt, = WanVideoPromptExtender().generate( |
| 243 | qwen=qwen, |
| 244 | max_new_tokens=extender_args["max_new_tokens"], |
| 245 | prompt=orig_prompt, |
| 246 | device=device, |
| 247 | force_offload=False, |
| 248 | custom_system_prompt=extender_args["system_prompt"], |
| 249 | seed=extender_args["seed"] |
| 250 | ) |
| 251 | log.info(f"Extended positive prompt: {positive_prompt}") |
| 252 | _extender_cache[extender_key] = positive_prompt |
| 253 | del qwen |
| 254 | pbar.update(1) |
| 255 | |
| 256 | # Now check disk cache using the (possibly extended) prompt |
| 257 | if use_disk_cache: |
| 258 | context, context_null = get_cached_text_embeds(positive_prompt, negative_prompt) |
| 259 | if context is not None and context_null is not None: |
| 260 | return{ |
| 261 | "prompt_embeds": context, |
| 262 | "negative_prompt_embeds": context_null, |
| 263 | "echoshot": echoshot, |
| 264 | },{"prompt_embeds": context_null}, positive_prompt |
| 265 | |
| 266 | t5, = LoadWanVideoT5TextEncoder().loadmodel(model_name, precision, "main_device", quantization) |
| 267 | pbar.update(1) |
| 268 | |
| 269 | prompt_embeds_dict, = WanVideoTextEncode().process( |
| 270 | positive_prompt=positive_prompt, |
| 271 | negative_prompt=negative_prompt, |
| 272 | t5=t5, |
| 273 | force_offload=False, |
| 274 | model_to_offload=None, |
| 275 | use_disk_cache=use_disk_cache, |
| 276 | device=device |
| 277 | ) |
| 278 | pbar.update(1) |
| 279 | del t5 |
nothing calls this directly
no test coverage detected