mirror of
https://git.datalinker.icu/comfyanonymous/ComfyUI
synced 2026-08-26 00:45:44 +08:00
Adjusted default values for context_length and context_overlap, made schema.inputs definition for WAN Context Windows less annoying
This commit is contained in:
parent
48fecae383
commit
0855d85057
@ -14,16 +14,16 @@ class ContextWindowsManualNode(io.ComfyNode):
|
|||||||
description="Manually set context windows.",
|
description="Manually set context windows.",
|
||||||
inputs=[
|
inputs=[
|
||||||
io.Model.Input("model", tooltip="The model to apply context windows to during sampling."),
|
io.Model.Input("model", tooltip="The model to apply context windows to during sampling."),
|
||||||
io.Int.Input("context_length", min=1, default=1, tooltip="The length of the context window."),
|
io.Int.Input("context_length", min=1, default=16, tooltip="The length of the context window."),
|
||||||
io.Int.Input("context_overlap", min=0, default=0, tooltip="The overlap of the context window."),
|
io.Int.Input("context_overlap", min=0, default=4, tooltip="The overlap of the context window."),
|
||||||
io.Combo.Input("context_schedule", options=[
|
io.Combo.Input("context_schedule", options=[
|
||||||
comfy.context_windows.ContextSchedules.STATIC_STANDARD,
|
comfy.context_windows.ContextSchedules.STATIC_STANDARD,
|
||||||
comfy.context_windows.ContextSchedules.UNIFORM_STANDARD,
|
comfy.context_windows.ContextSchedules.UNIFORM_STANDARD,
|
||||||
comfy.context_windows.ContextSchedules.UNIFORM_LOOPED,
|
comfy.context_windows.ContextSchedules.UNIFORM_LOOPED,
|
||||||
comfy.context_windows.ContextSchedules.BATCHED,
|
comfy.context_windows.ContextSchedules.BATCHED,
|
||||||
], tooltip="The stride of the context window."),
|
], tooltip="The stride of the context window."),
|
||||||
io.Int.Input("context_stride", min=1, default=1, tooltip="The stride of the context window."),
|
io.Int.Input("context_stride", min=1, default=1, tooltip="The stride of the context window; only applicable to uniform schedules."),
|
||||||
io.Boolean.Input("closed_loop", default=False, tooltip="Whether to close the context window loop."),
|
io.Boolean.Input("closed_loop", default=False, tooltip="Whether to close the context window loop; only applicable to looped schedules."),
|
||||||
io.Combo.Input("fuse_method", options=comfy.context_windows.ContextFuseMethods.LIST_STATIC, default=comfy.context_windows.ContextFuseMethods.PYRAMID, tooltip="The method to use to fuse the context windows."),
|
io.Combo.Input("fuse_method", options=comfy.context_windows.ContextFuseMethods.LIST_STATIC, default=comfy.context_windows.ContextFuseMethods.PYRAMID, tooltip="The method to use to fuse the context windows."),
|
||||||
io.Int.Input("dim", min=0, max=5, default=0, tooltip="The dimension to apply the context windows to."),
|
io.Int.Input("dim", min=0, max=5, default=0, tooltip="The dimension to apply the context windows to."),
|
||||||
],
|
],
|
||||||
@ -55,24 +55,27 @@ class WanContextWindowsManualNode(ContextWindowsManualNode):
|
|||||||
schema.node_id = "WanContextWindowsManual"
|
schema.node_id = "WanContextWindowsManual"
|
||||||
schema.display_name = "WAN Context Windows (Manual)"
|
schema.display_name = "WAN Context Windows (Manual)"
|
||||||
schema.description = "Manually set context windows for WAN-like models (dim=2)."
|
schema.description = "Manually set context windows for WAN-like models (dim=2)."
|
||||||
# remove dim input; will always be 2
|
schema.inputs = [
|
||||||
schema.inputs = [x for x in schema.inputs if x.id != "dim"]
|
io.Model.Input("model", tooltip="The model to apply context windows to during sampling."),
|
||||||
# replace context_length input; should be in steps of 4
|
io.Int.Input("context_length", min=1, max=nodes.MAX_RESOLUTION, step=4, default=81, tooltip="The length of the context window."),
|
||||||
context_length_idx = -1
|
io.Int.Input("context_overlap", min=0, default=30, tooltip="The overlap of the context window."),
|
||||||
for idx, x in enumerate(schema.inputs):
|
io.Combo.Input("context_schedule", options=[
|
||||||
if x.id == "context_length":
|
comfy.context_windows.ContextSchedules.STATIC_STANDARD,
|
||||||
context_length_idx = idx
|
comfy.context_windows.ContextSchedules.UNIFORM_STANDARD,
|
||||||
break
|
comfy.context_windows.ContextSchedules.UNIFORM_LOOPED,
|
||||||
if context_length_idx == -1:
|
comfy.context_windows.ContextSchedules.BATCHED,
|
||||||
raise Exception("Context length input not found in schema; did something change?")
|
], tooltip="The stride of the context window."),
|
||||||
schema.inputs[context_length_idx] = io.Int.Input("context_length", min=1, max=nodes.MAX_RESOLUTION, step=4, default=81, tooltip="The length of the context window.")
|
io.Int.Input("context_stride", min=1, default=1, tooltip="The stride of the context window; only applicable to uniform schedules."),
|
||||||
|
io.Boolean.Input("closed_loop", default=False, tooltip="Whether to close the context window loop; only applicable to looped schedules."),
|
||||||
|
io.Combo.Input("fuse_method", options=comfy.context_windows.ContextFuseMethods.LIST_STATIC, default=comfy.context_windows.ContextFuseMethods.PYRAMID, tooltip="The method to use to fuse the context windows."),
|
||||||
|
]
|
||||||
return schema
|
return schema
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def execute(cls, model: io.Model.Type, context_length: int, context_overlap: int, context_schedule: str, context_stride: int, closed_loop: bool, fuse_method: str) -> io.Model:
|
def execute(cls, model: io.Model.Type, context_length: int, context_overlap: int, context_schedule: str, context_stride: int, closed_loop: bool, fuse_method: str) -> io.Model:
|
||||||
context_length = max(((context_length - 1) // 4) + 1, 1) # at least length 1
|
context_length = max(((context_length - 1) // 4) + 1, 1) # at least length 1
|
||||||
context_overlap = max(((context_overlap - 1) // 4) + 1, 0) # at least overlap 0
|
context_overlap = max(((context_overlap - 1) // 4) + 1, 0) # at least overlap 0
|
||||||
return super().execute(model, context_length, context_overlap, context_schedule, context_stride, closed_loop, fuse_method, 2)
|
return super().execute(model, context_length, context_overlap, context_schedule, context_stride, closed_loop, fuse_method, dim=2)
|
||||||
|
|
||||||
|
|
||||||
class ContextWindowsExtension(ComfyExtension):
|
class ContextWindowsExtension(ComfyExtension):
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user