支持N卡老内核使用
This commit is contained in:
@@ -13,6 +13,7 @@ XB_ToolBox 原版优化节点 (Vanilla Wrappers) — v1.0
|
||||
import torch
|
||||
import gc
|
||||
import copy
|
||||
import inspect
|
||||
import comfy.model_management as mm
|
||||
import comfy.samplers
|
||||
import nodes
|
||||
@@ -36,6 +37,28 @@ _CLEANUP_OPTIONS = [
|
||||
]
|
||||
|
||||
|
||||
def _safe_call(target_func, **kwargs):
|
||||
"""向下兼容透传: 仅传入目标函数实际支持的参数,自动丢弃旧版不识别的参数。
|
||||
|
||||
典型场景: 新版 ComfyUI 的 VAEDecodeTiled.decode() 支持 temporal_size/temporal_overlap,
|
||||
但秋叶整合包等旧版只有 tile_size/overlap。此函数用 inspect 探测签名并过滤。
|
||||
Returns:
|
||||
(result, dropped_params) — result 是调用结果,dropped_params 是被丢弃的参数字典
|
||||
"""
|
||||
sig = inspect.signature(target_func)
|
||||
valid = set(sig.parameters.keys())
|
||||
accepted = {}
|
||||
dropped = {}
|
||||
for k, v in kwargs.items():
|
||||
if k in valid:
|
||||
accepted[k] = v
|
||||
else:
|
||||
dropped[k] = v
|
||||
if dropped:
|
||||
print(f"[XB_Wrapper] 旧版 ComfyUI 不支持参数 {list(dropped.keys())},已自动跳过")
|
||||
return target_func(**accepted), dropped
|
||||
|
||||
|
||||
def _execute_cleanup(level: str, label: str = ""):
|
||||
"""分级清理显存,在正式节点运行前强行制造显存真空区。
|
||||
|
||||
@@ -221,10 +244,12 @@ class XB_VAEDecodeTiledImage:
|
||||
def decode(self, **kwargs):
|
||||
cleanup = kwargs.pop("cleanup", "不做任何清理")
|
||||
_execute_cleanup(cleanup, "VAE分块解码(图片)")
|
||||
# 透传给官方 VAEDecodeTiled,时间参数用默认值
|
||||
kwargs.setdefault("temporal_size", 64)
|
||||
kwargs.setdefault("temporal_overlap", 8)
|
||||
return nodes.VAEDecodeTiled().decode(**kwargs)
|
||||
# 透传给官方 VAEDecodeTiled(向下兼容:旧版不支持时间参数时自动跳过)
|
||||
result, _ = _safe_call(nodes.VAEDecodeTiled().decode,
|
||||
temporal_size=kwargs.get("temporal_size", 64),
|
||||
temporal_overlap=kwargs.get("temporal_overlap", 8),
|
||||
**kwargs)
|
||||
return result
|
||||
|
||||
|
||||
class XB_VAEEncode:
|
||||
@@ -425,9 +450,11 @@ class _AliasVAEDecode:
|
||||
_execute_cleanup(cleanup, "VAE解码")
|
||||
if "tile" in kwargs:
|
||||
kwargs["tile_size"] = kwargs.pop("tile") if kwargs["tile"] > 0 else 512
|
||||
kwargs.setdefault("temporal_size", 64)
|
||||
kwargs.setdefault("temporal_overlap", 8)
|
||||
return nodes.VAEDecodeTiled().decode(**kwargs)
|
||||
result, _ = _safe_call(nodes.VAEDecodeTiled().decode,
|
||||
temporal_size=kwargs.get("temporal_size", 64),
|
||||
temporal_overlap=kwargs.get("temporal_overlap", 8),
|
||||
**kwargs)
|
||||
return result
|
||||
|
||||
|
||||
class _AliasVAEDecodeTemporal:
|
||||
@@ -456,7 +483,9 @@ class _AliasVAEDecodeTemporal:
|
||||
kwargs["temporal_size"] = kwargs.pop("t_tile") if kwargs["t_tile"] > 0 else 64
|
||||
if "t_overlap" in kwargs:
|
||||
kwargs["temporal_overlap"] = kwargs.pop("t_overlap") if kwargs["t_overlap"] > 0 else 8
|
||||
return nodes.VAEDecodeTiled().decode(**kwargs)
|
||||
# 向下兼容: 旧版 ComfyUI 不支持时间参数时自动跳过
|
||||
result, _ = _safe_call(nodes.VAEDecodeTiled().decode, **kwargs)
|
||||
return result
|
||||
|
||||
|
||||
class _AliasVAEEncode:
|
||||
|
||||
+1
-1
@@ -1,7 +1,7 @@
|
||||
[project]
|
||||
name = "XB_ToolBox"
|
||||
description = "XB_ToolBox: An easy-to-use ComfyUI custom node suite that streamlines workflow generation. Featuring exclusive data-flow logic and pioneering experimental kernel optimizations dedicated to the native AMD GPU ecosystem."
|
||||
version = "0.7.02"
|
||||
version = "0.7.03"
|
||||
license = { file = "LICENSE" }
|
||||
dependencies = ["opencv-python", "easyocr"]
|
||||
|
||||
|
||||
Reference in New Issue
Block a user