Merge pull request #93 from Runware/feature-videoSchedulers
Add schedulers and CFGScale to videoInference
This commit is contained in:
@@ -760,6 +760,8 @@ function useParameterToggleHandler(node) {
|
||||
"useCustomDimensions": ["width", "height"], // Note: Also handled separately in videoInferenceDimensionsHandler
|
||||
"useDuration": ["duration"],
|
||||
"useFps": ["fps"],
|
||||
"useSchedulers": ["scheduler"],
|
||||
"useCFGScale": ["cfgScale"],
|
||||
// useSteps and useSeed are same as image inference, handled by fallback
|
||||
|
||||
// Upscaler specific mappings (override for nodes that have CFGScale with capital C)
|
||||
@@ -2022,6 +2024,10 @@ function videoInferenceDimensionsHandler(videoInferenceNode) {
|
||||
const stepsWidget = videoInferenceNode.widgets.find(w => w.name === "steps");
|
||||
const useBatchSizeWidget = videoInferenceNode.widgets.find(w => w.name === "useBatchSize");
|
||||
const batchSizeWidget = videoInferenceNode.widgets.find(w => w.name === "batchSize");
|
||||
const useSchedulersWidget = videoInferenceNode.widgets.find(w => w.name === "useSchedulers");
|
||||
const schedulerWidget = videoInferenceNode.widgets.find(w => w.name === "scheduler");
|
||||
const useCFGScaleWidget = videoInferenceNode.widgets.find(w => w.name === "useCFGScale");
|
||||
const cfgScaleWidget = videoInferenceNode.widgets.find(w => w.name === "cfgScale");
|
||||
|
||||
// Helper function to toggle widget enabled state
|
||||
function toggleWidgetState(useWidget, paramWidget, paramName) {
|
||||
@@ -2089,6 +2095,14 @@ function videoInferenceDimensionsHandler(videoInferenceNode) {
|
||||
if (useBatchSizeWidget && batchSizeWidget) {
|
||||
toggleWidgetState(useBatchSizeWidget, batchSizeWidget, "batchSize");
|
||||
}
|
||||
|
||||
if (useSchedulersWidget && schedulerWidget) {
|
||||
toggleWidgetState(useSchedulersWidget, schedulerWidget, "scheduler");
|
||||
}
|
||||
|
||||
if (useCFGScaleWidget && cfgScaleWidget) {
|
||||
toggleWidgetState(useCFGScaleWidget, cfgScaleWidget, "cfgScale");
|
||||
}
|
||||
}
|
||||
|
||||
function videoModelSearchFilterHandler(videoModelSearchNode) {
|
||||
@@ -2182,6 +2196,9 @@ function videoModelSearchFilterHandler(videoModelSearchNode) {
|
||||
"Hunyuan": [
|
||||
"runware:hunyuanvideo@1.5 (HunyuanVideo-1.5)",
|
||||
],
|
||||
"Kandinsky": [
|
||||
"runware:210@1 (Kandinsky 5.0 Lite)",
|
||||
],
|
||||
"xAI": [
|
||||
"xai:grok-imagine@video (Grok Imagine Video)",
|
||||
],
|
||||
@@ -2260,6 +2277,7 @@ function videoModelSearchFilterHandler(videoModelSearchNode) {
|
||||
"creatify:aurora@fast": {"width": 1280, "height": 720},
|
||||
"creatify:aurora@0": {"width": 1280, "height": 720},
|
||||
"runware:hunyuanvideo@1.5": {"width": 848, "height": 480},
|
||||
"runware:210@1": {"width": 512, "height": 512},
|
||||
"xai:grok-imagine@video": {"width": 480, "height": 480},
|
||||
"veed:fabric@1.0": {"width": 1280, "height": 720},
|
||||
};
|
||||
@@ -2334,6 +2352,7 @@ function videoModelSearchFilterHandler(videoModelSearchNode) {
|
||||
"creatify:aurora@fast": "720p",
|
||||
"creatify:aurora@0": "720p",
|
||||
"runware:hunyuanvideo@1.5": "480p",
|
||||
"runware:210@1": null, // No resolution support (fixed 512x512)
|
||||
"xai:grok-imagine@video": "480p",
|
||||
"veed:fabric@1.0": "720p",
|
||||
};
|
||||
|
||||
@@ -75,6 +75,25 @@ class txt2vid:
|
||||
"min": 1,
|
||||
"max": 4,
|
||||
}),
|
||||
"useSchedulers": ("BOOLEAN", {
|
||||
"tooltip": "Enable to include scheduler parameter in API request. Disable if your model doesn't support scheduler.",
|
||||
"default": False,
|
||||
}),
|
||||
"scheduler": (["euler", "dpm", "adams", "unipc"], {
|
||||
"default": "euler",
|
||||
"tooltip": "High-level scheduler name for video generation. Only used when 'Use Schedulers' is enabled.",
|
||||
}),
|
||||
"useCFGScale": ("BOOLEAN", {
|
||||
"tooltip": "Enable to include guidance_scale (CFG) parameter in API request. Disable for No-CFG models.",
|
||||
"default": False,
|
||||
}),
|
||||
"cfgScale": ("FLOAT", {
|
||||
"tooltip": "Classifier-free guidance strength. Set to 1 for No-CFG models. For Duration 5 use 1; for Duration 10, 1-7 is valid. Default 5.",
|
||||
"default": 5.0,
|
||||
"min": 1.0,
|
||||
"max": 7.0,
|
||||
"step": 0.1,
|
||||
}),
|
||||
"acceleration": (["none", "low", "medium", "high"], {
|
||||
"tooltip": "Applies optimized acceleration presets that automatically configure multiple generation parameters for the best speed and quality balance. This parameter serves as an abstraction layer that intelligently adjusts acceleratorOptions, steps, scheduler, and other underlying settings.\n\nAvailable values:\n- none: No acceleration applied, uses default parameter values.\n- low: Minimal acceleration with optimized settings for lowest quality loss.\n- medium: Balanced acceleration preset with moderate speed improvements.\n- high: Maximum acceleration with caching and aggressive optimizations for fastest generation.",
|
||||
"default": "none",
|
||||
@@ -173,6 +192,10 @@ class txt2vid:
|
||||
useSteps = kwargs.get("useSteps", False)
|
||||
useBatchSize = kwargs.get("useBatchSize", False)
|
||||
batchSize = kwargs.get("batchSize", 1)
|
||||
useSchedulers = kwargs.get("useSchedulers", False)
|
||||
scheduler = kwargs.get("scheduler", "euler")
|
||||
useCFGScale = kwargs.get("useCFGScale", False)
|
||||
cfgScale = kwargs.get("cfgScale", 5.0)
|
||||
acceleration = kwargs.get("acceleration", "none")
|
||||
|
||||
# Handle model input - could be dict or string
|
||||
@@ -235,6 +258,14 @@ class txt2vid:
|
||||
if useSteps:
|
||||
genConfig[0]["steps"] = steps
|
||||
|
||||
# Add scheduler parameter only if enabled
|
||||
if useSchedulers:
|
||||
genConfig[0]["scheduler"] = scheduler
|
||||
|
||||
# Add CFGScale parameter only if enabled
|
||||
if useCFGScale:
|
||||
genConfig[0]["CFGScale"] = cfgScale
|
||||
|
||||
if (negativePrompt is not None and negativePrompt != ""):
|
||||
genConfig[0]["negativePrompt"] = negativePrompt
|
||||
if (promptWeighting != "Disabled"):
|
||||
|
||||
@@ -104,6 +104,9 @@ class videoModelSearch:
|
||||
"Hunyuan": [
|
||||
"runware:hunyuanvideo@1.5 (HunyuanVideo-1.5)",
|
||||
],
|
||||
"Kandinsky": [
|
||||
"runware:210@1 (Kandinsky 5.0 Lite)",
|
||||
],
|
||||
"xAI": [
|
||||
"xai:grok-imagine@video (Grok Imagine Video)",
|
||||
],
|
||||
@@ -215,6 +218,9 @@ class videoModelSearch:
|
||||
# Hunyuan Models
|
||||
"runware:hunyuanvideo@1.5": {"width": 848, "height": 480},
|
||||
|
||||
# Kandinsky Models
|
||||
"runware:210@1": {"width": 512, "height": 512},
|
||||
|
||||
# xAI Models
|
||||
"xai:grok-imagine@video": {"width": 480, "height": 480},
|
||||
|
||||
@@ -325,6 +331,9 @@ class videoModelSearch:
|
||||
# Hunyuan Models
|
||||
"runware:hunyuanvideo@1.5": "480p",
|
||||
|
||||
# Kandinsky Models
|
||||
"runware:210@1": None, # No resolution support (fixed 512x512)
|
||||
|
||||
# xAI Models
|
||||
"xai:grok-imagine@video": "480p",
|
||||
|
||||
@@ -350,6 +359,7 @@ class videoModelSearch:
|
||||
"Bria",
|
||||
"Creatify",
|
||||
"Hunyuan",
|
||||
"Kandinsky",
|
||||
"xAI",
|
||||
"VEED"
|
||||
]
|
||||
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user