from __future__ import annotations from methods.cache_strategy.common import WorldCacheConfig from methods.cache_strategy.WorldCache.ctrl_world_runtime import CtrlWorldWorldCacheRuntime def enable_worldcache( unet, *, num_steps: int, rel_l1_thresh: float = 0.03, ret_ratio: float = 0.4, probe_depth: int = 3, motion_sensitivity: float = 5.0, hf_enabled: bool = False, hf_thresh: float = 0.01, saliency_enabled: bool = False, saliency_weight: float = 5.0, osi_enabled: bool = False, dynamic_decay: bool = False, ) -> None: config = WorldCacheConfig( num_steps=num_steps, rel_l1_thresh=rel_l1_thresh, ret_ratio=ret_ratio, probe_depth=probe_depth, motion_sensitivity=motion_sensitivity, flow_enabled=False, flow_scale=0.5, hf_enabled=hf_enabled, hf_thresh=hf_thresh, saliency_enabled=saliency_enabled, saliency_weight=saliency_weight, osi_enabled=osi_enabled, dynamic_decay=dynamic_decay, aduc_enabled=False, aduc_start=0.5, parallel_cfg=False, ) unet._ctrl_cache_runtime = CtrlWorldWorldCacheRuntime(config=config, total_steps=num_steps) print( "[WorldCache] Enabled on Ctrl-World " f"(steps={num_steps}, rel_l1_thresh={rel_l1_thresh}, ret_ratio={ret_ratio}, " f"probe_depth={probe_depth}, motion_sensitivity={motion_sensitivity}, " f"hf={hf_enabled}, saliency={saliency_enabled}, osi={osi_enabled}, decay={dynamic_decay})" ) def disable_worldcache(unet) -> None: if hasattr(unet, "_ctrl_cache_runtime"): delattr(unet, "_ctrl_cache_runtime") print("[WorldCache] Disabled on Ctrl-World.")