Nodes/Eric_Krea2/Eric Krea2 Sweep Plan
ComfyUI Node

Eric Krea2 Sweep Plan

One queue item, a whole grid of samplers and schedules

By EricRollei·Created 2 months ago·Updated about a month ago· 11
Eric Krea2 Sweep Plan
    • sweep
    modegrid
    stage_scopes1
    samplerseuler, res_2m, res_2s, deis_3m, abnorsett_3m, abnorsett_4m, lawson4_4s, etdrk4_4s, er_sde, rk6_7s, lcm, lcm_hybrid, lcm_hybrid2
    schedulerslinear, balanced, karras, beta57, beta, bong_tangent, exponential, linear_quadratic, simple, 4mp-lcm, Candidate 1, Claude-1, Claude-8mp, EXP1, EXP2, EXP3, EXP4, EXP5, EXP6, Kreamania3-2stage-4.5mp, OPT-AB412, OPT-DEIS12, kreamania3-2stage-8mp
    pair_lockfalse
    steps
    windows
    etas
    noise_types
    cfgs
    shift_modes
    mus
    combos_file
    combos_json
    seed_policyfixed
    seeds
    quick_screenfalse
    screen_megapixels1.00
    score_metricstrue
    sort_byplan_order
    tile_px448
    max_combos64
    output_folder
    hybrid_steps
    megapixels
    lora_modenone
    lora_files
    lora_strengths
    lora_target1
    include_baselinetrue
    keep_panel_stackfalse
    prompts
    sigma_profiles
    lora_triggersappend
    enabledtrue
    sweep_presetcustom
    preset_notes

    Every fine-tune has a preferred sampler, scheduler, step count and mu - and all of them are really proxies for one thing: how far that model's training eroded the turbo distillation. Instead of guessing, this node measures. Wire Eric Krea2 Sweep Plan into Ultra V2's sweep input (the last socket), fill in the axes you want to test, and one queue item runs the whole grid against a fixed seed: per-cell PNGs with the full recipe embedded, a labeled contact sheet, sweep_summary.csv, and a JSON manifest. It turns sampler folklore into a spreadsheet.

    Grid mode vs combos mode

    There are two ways to tell it what to run, and mode picks between them.

    Grid is the default: fill any axis field and the node takes the cross product. The ones you'll actually set first:

    • samplers - all 13 ship pre-populated (euler, res_2m, res_2s, deis_3m, abnorsett_3m/4m, lawson4_4s, etdrk4_4s, er_sde, rk6_7s, lcm, the hybrids). Delete what you don't want; blank = not swept.
    • schedulers - built-in curves and saved ★ sigma-preset names mixed freely; each entry resolves as a schedule first, then as a sigmas preset. Unknown names are skipped with a console warning, never an abort.
    • steps, windows (e.g. 5-12, 6-12 → start/end step), etas, noise_types, cfgs, shift_modes/mus, hybrid_steps, megapixels.

    pair_lock zips samplers+schedulers into fixed pairs for testing a known recipe; off = full cross product. max_combos (default 64) is a hard cap - over-cap plans refuse with an axis-size breakdown rather than silently truncating, which is the honest behavior you want.

    Combos mode skips the grid: one JSON object per line in combos_json (or a file via combos_file), using the same widget keys as Ultra presets and PNG recipes. {"s2_sampler": "lcm_hybrid", "s2_steps": 12, "s2_start_step": 6} - copy-pasteable straight off a stamped image. Campaigns become versionable files.

    The knobs that shape a sane sweep

    stage_scope (s1 / s2 / s3 / all_stages) decides which stage the swept keys hit, and the workflow intent is spelled out in the tooltip: perfect Stage 1 first, then sweep s2/s3 refinement on the short list. quick_screen forces S1-only at screen_megapixels for cheap wide grids - and for s2/s3-only sweeps, the post-S1 latent is computed once and reused across cells, which is what makes a 40-cell refine sweep finish in minutes.

    The newer axes are where this gets genuinely interesting for Krea 2's ecosystem: lora_mode=bakeoff tests each style LoRA against the bare checkpoint (the lora_triggers field even merges each LoRA's trigger words into its cell's prompt), prompts adds a prompt axis (slowest, deliberately), and sigma_profiles sweeps saved sigma shapes as full per-cell profiles. Failed cells never kill a sweep - red tile plus a manifest error - and interrupts finalize the files on disk before the queue stops.

    Wiring and install

    enabled (default on) means "off = the node outputs nothing and Ultra runs a normal single generation" - you can leave the sweep wired in and toggle it. sweep_preset backs onto sweep_presets.json; selecting one writes its values into the panel so you always see exactly what will run, and editing any field flips it back to custom.

    It ships with the rest of the pack:

    cd ComfyUI/custom_nodes
    git clone https://github.com/EricRollei/Krea2_ComfyUI_Advanced
    

    Restart, and remember the pack needs a diffusers build with Krea2Pipeline plus Krea 2 weights - see the pack README for the --force-reinstall install from the HF git repo.

    Where people get burned

    Watch out for axes that differ only by inert knobs - the plan dedupes cells where eta/noise don't apply (e.g. on euler/lcm), but it can't read your mind about whether sweeping megapixels is worth the VRAM. Resolution changes the noise grid, so composition shifts with size even at a fixed seed; that's part of what you're measuring, but it makes megapixels sweeps noisier to read. Start wide with quick_screen, narrow with stage_scope, and let Sweep → Preset promote the winners.

    CategoryEric/Krea2

    Inputs (37)

    NameTypeDefaultDescription
    modeCOMBOgrid2 options: grid, combos
    stage_scopeCOMBOs1Which stage(s) the swept keys apply to. all_stages sets the same value on s1+s2+s3 together (NOT a per-stage cross product). Workflow intent: perfect S1 first (quick_screen), then sweep s2/s3 refinement on the short list.
    samplersoptSTRINGeuler, res_2m, res_2s, deis_3m, abnorsett_3m, abnorsett_4m, lawson4_4s, etdrk4_4s, er_sde, rk6_7s, lcm, lcm_hybrid, lcm_hybrid2Comma/newline-separated. Allowed: euler, res_2m, res_2s, deis_3m, abnorsett_3m, abnorsett_4m, lawson4_4s, etdrk4_4s, er_sde, rk6_7s, lcm, lcm_hybrid, lcm_hybrid2. Pre-populated with all of them - delete what you don't want. Blank = not swept. Crossed with hybrid_steps, only the hybrid samplers expand per split value; other samplers keep one cell (inert-split dedupe).
    schedulersoptSTRINGlinear, balanced, karras, beta57, beta, bong_tangent, exponential, linear_quadratic, simple, 4mp-lcm, Candidate 1, Claude-1, Claude-8mp, EXP1, EXP2, EXP3, EXP4, EXP5, EXP6, Kreamania3-2stage-4.5mp, OPT-AB412, OPT-DEIS12, kreamania3-2stage-8mpBuilt-in schedules AND saved sigma-shape ★ preset names, mixed freely: each entry is tried as a schedule (linear, balanced, karras, beta57, beta, bong_tangent, exponential, linear_quadratic, simple) first, then as a sigmas preset (applied as a full profile for that cell); unknown names are SKIPPED with a console warning instead of aborting. Pre-populated with everything available - delete what you don't want. Blank = not swept.
    pair_lockoptBOOLEANfalseON: zip samplers+schedulers line-by-line into fixed pairs (lists must be equal length) - for testing known recipes. OFF: full cross product.
    stepsoptSTRINGe.g. '8, 10, 12'. Maps to <stage>_steps.
    windowsoptSTRINGRefine windows 'start-end', e.g. '5-12, 6-12, 7-12'. Maps to <stage>_start_step/<stage>_end_step. Pair with matching steps or leave steps blank and window within the panel's step count.
    etasoptSTRINGe.g. '0, 0.3, 1.0' -> <stage>_eta.
    noise_typesoptSTRINGAllowed: white, low_freq, high_freq, pink. lcm-family samplers force white (per the 2026-07-23 rainbow fix); those cells are auto-coerced and labeled, never silently divergent.
    cfgsoptSTRINGe.g. '1.0, 1.5, 2.0' -> <stage>_cfg. Diagnostic for RAW-drifted fine tunes: tolerance of cfg>1 tracks how far training eroded the turbo distillation.
    shift_modesoptSTRINGdistilled_shift values to sweep: fixed / resolution / manual.
    musoptSTRINGshift mu values for the scoped stage(s), e.g. '1.15, 2.1, 3.0'. Forces distilled_shift=manual on those cells (unless shift_modes is also swept, which then wins the cross).
    combos_fileoptSTRINGcombos mode: path to a JSON file with the runs - either a JSON array of override objects, {"combos": [...]}, or JSON-lines. Takes precedence over combos_json below. Keeps sweep campaigns as versionable files.
    combos_jsonoptSTRINGcombos mode: one JSON object per line using Ultra V2 widget keys (same keys as presets / PNG recipes), e.g. {"s2_sampler": "lcm_hybrid", "s2_steps": 12, "s2_start_step": 6} Copy-paste directly from a preset or a stamped PNG.
    seed_policyoptCOMBOfixedfixed: every cell uses the Ultra panel seed (required for fair comparison). seeds_axis: 'seeds' below becomes one more grid axis.
    seedsoptSTRINGseeds_axis values, e.g. '1, 2, 3'.
    quick_screenoptBOOLEANfalseForce S1-only at screen_megapixels for every cell (upscale_to_stage2/3 = 0). Cheap wide screening; re-run the short list full-pipeline after.
    screen_megapixelsoptFLOAT1.000.25–8
    score_metricsoptBOOLEANtrueCompute technical metrics per cell (CPU, ms): Laplacian + Tenengrad sharpness, wavelet noise sigma, flat-region chroma variance (splotch detector), clip fraction. Scores annotate + can sort the sheet; they never hide a cell.
    sort_byoptCOMBOplan_orderContact-sheet order. Metrics sort best-first; time_s fastest-first. Manifest keeps plan order + this ordering separately.
    tile_pxoptINT448128–1024
    max_combosoptINT641–4096Hard cap. Over-cap plans REFUSE with an axis-size breakdown (no silent truncation).
    output_folderoptSTRINGWhere sweep folders are created. Blank = ComfyUI output/sweeps. An absolute path is used as-is; a relative path is created under the ComfyUI output directory.
    hybrid_stepsoptSTRINGSweep the hybrids' handoff in EXACT lcm steps, e.g. '3, 4, 5, 6' -> <stage>_hybrid_steps for the scoped stage(s). Only lcm_hybrid / lcm_hybrid2 read it - pair with a hybrid in the samplers axis (or on the panel); inert cells are deduped. Values clamp inside each stage's window so both halves always run; sweeping values past window-1 collapses to the same cell.
    megapixelsoptSTRINGSweep s1_megapixels, e.g. '0.5, 1.0, 2.0, 4.5'. Always targets Stage 1 regardless of stage_scope (stage 2/3 sizes chain from it via the upscale factors). Mixed cell sizes are fine: metrics and the contact sheet use each cell's native output; the IMAGE batch output center-pads smaller cells to the largest. quick_screen does NOT override a swept megapixels value. Note: resolution changes the noise grid, so composition shifts with size even at a fixed seed - that is part of what you are measuring.
    lora_modeoptCOMBOnonebakeoff: each LoRA in lora_files at each lora_strengths value - by default the swept LoRA runs ALONE (panel stack replaced) so every style is measured against the bare checkpoint; keep_panel_stack layers it on top instead. strength_ladder: keep the panel-declared stack, step ONLY the lora_target entry through lora_strengths. Sweep-injected entries are ephemeral (fused per cell, cleaned per cell).
    lora_filesoptSTRINGbakeoff: one LoRA per line - a name from the loras folder (same resolution as the LoRA Stack node) or a full path.
    lora_strengthsoptSTRINGe.g. '0.6, 0.8, 1.0'. One value drives all three stage weights (weight_s1=s2=s3). bakeoff: every file at every value; ladder: the target entry's values.
    lora_targetoptSTRING1strength_ladder: which panel-stack entry to vary - 1-based index, or a name substring (matches lora_name/filename).
    include_baselineoptBOOLEANtrueAdd one reference cell: bakeoff = no LoRA at all (or the panel stack alone when keep_panel_stack is ON); ladder = the panel stack exactly as declared.
    keep_panel_stackoptBOOLEANfalsebakeoff only: append the swept LoRA ON TOP of the panel stack instead of replacing it.
    promptsoptSTRINGOne prompt per line = a prompt axis (slowest axis, so the sheet and CSV read in prompt-major blocks). Each prompt cell re-encodes (prompt_conditioning is cleared; ~seconds/cell). Metric comparisons are only meaningful WITHIN a prompt block.
    sigma_profilesoptSTRINGComma/newline list of saved sigma-shape preset NAMES (the ★ presets of the Eric Krea2 Sigmas node). Each cell rebuilds the full bundle from that preset and it OVERRIDES any wired sigmas node for that cell. Blank = not swept.
    lora_triggersoptCOMBOappendbakeoff: merge each cell's swept-LoRA trigger words into that cell's prompt (from the LoRA Stack node's cached trigger database; first-seen files may do one network lookup, non-fatal on failure). Only sweep-injected entries contribute - baseline and ladder cells are untouched. A cell whose prompt text changes re-encodes automatically. Effective prompt + triggers are recorded in the cell's metadata.
    enabledoptBOOLEANtrueOff = the node outputs nothing and Ultra V2 runs a normal single generation - leave the sweep wired in the workflow and toggle it.
    sweep_presetoptCOMBOcustomNamed sweep plans from sweep_presets.json. Selecting one WRITES its values into this panel (so you can see exactly what will run); editing any field flips back to 'custom'. Save the panel as a preset with the ★ button. Headless/API: the named preset applies fully. Ask Claude to author experiment presets.
    preset_notesoptSTRINGOne or two sentences: what this sweep preset is FOR and what it does. Saved and loaded with the ★ preset - so future-you remembers why it exists.

    Outputs (1)

    NameTypeDescription
    sweepKREA2_SWEEP