Nodes/Quality of Life Nodes for ComfyUI/CSV Reader X Checkpoint (Soze)
ComfyUI Node

CSV Reader X Checkpoint (Soze)

Sweep every prompt against every checkpoint with one counter

By SozeInc·Created 2 years ago·Updated 5 days ago· 10
CSV Reader X Checkpoint (Soze)
    • Column_1
    • Column_2
    • Column_3
    • Column_4
    • Column_5
    • Column_6
    • Column_7
    • Column_8
    • Column_9
    • Column_10
    • Entire_Line
    • Row_Count
    • Ckpt_Full_Path
    • Ckpt_Name_Only
    • Cktp_Index
    • status
    csv_filename_path
    index0
    start_ckpt_name
    ckpt_count1

    CSV Reader's sibling for a specific job: sweeping every row of your CSV against every checkpoint in a list, with a single counter. Per the pack's own description, this and its LoRA counterpart "iterate index across rows × models, so a single counter walks every (row, checkpoint) pair" - exactly what you want for a "does this batch of prompts hold up across all my finetunes" grid test, without hand-building every combination yourself.

    How it works

    It reads CSV rows the same way CSV Reader does, but adds a checkpoint dimension: you tell it a starting checkpoint and how many to cycle through, and as index climbs, the node walks the full cross-product of CSV rows against that checkpoint range - one index value maps to exactly one (row, checkpoint) combination.

    The inputs and outputs that matter

    • csv_filename_path - your CSV file.
    • index (INT, 0 to 1,000,000) - per its own tooltip, "the row number to read from the CSV file," but here it's driving the combined row × checkpoint walk, not just the row.
    • start_ckpt_name (enum, populated from your installed checkpoints) - "the name of the starting checkpoint," per its tooltip. Pick where the checkpoint cycle begins.
    • ckpt_count (INT, default 1, max 100) - "the number of checkpoints to iterate," starting from start_ckpt_name.
    • Outputs: the same Column_1Column_10, Entire_Line, Row_Count as CSV Reader, plus Ckpt_Full_Path, Ckpt_Name_Only, and Cktp_Index (yes, that's how it's spelled in the node itself - worth knowing so you're not hunting for a "Ckpt_Index" that doesn't exist when you go to wire it), and status.

    Wire Ckpt_Full_Path (or Ckpt_Name_Only) into your checkpoint loader, and the relevant Column_N outputs into your prompt fields, and one index counter drives both dimensions at once.

    How to install it

    Via ComfyUI Manager: search "Quality of Life Nodes for ComfyUI", install, restart. Manually:

    cd ComfyUI/custom_nodes
    git clone https://github.com/SozeInc/ComfyUI_Soze.git
    pip install -r ComfyUI_Soze/requirements.txt
    

    No API keys needed - it reads your CSV and your local checkpoints folder, nothing external.

    Common issues & troubleshooting

    start_ckpt_name dropdown is empty or missing a model. It's populated from whatever ComfyUI can see in your checkpoints folder at load time - if you've added a checkpoint since starting ComfyUI, restart to refresh the list.

    You're not sure how far index needs to go to cover everything. With ckpt_count checkpoints and Row_Count rows, the full sweep is Row_Count × ckpt_count combinations - use both outputs together to bound your loop rather than guessing.

    You only need to sweep checkpoints, not CSV rows (or vice versa). If you don't actually need the row dimension, plain CSV Reader plus a separate checkpoint-cycling setup might be simpler than pulling in this combined node. This one earns its keep specifically when you want the full grid.

    Looking for the LoRA version. The README mentions a CSV Reader X Lora sibling that does the same thing for LoRAs instead of checkpoints - same pattern, different axis.

    Categoryutils

    Inputs (4)

    NameTypeDefaultDescription
    csv_filename_pathSTRING
    indexINT00–1000000The row number to read from the CSV file.
    start_ckpt_nameCOMBOThe name of the starting checkpoint.
    ckpt_countINT11–100The number of checkpoints to iterate.

    Outputs (16)

    NameTypeDescription
    Column_1STRING
    Column_2STRING
    Column_3STRING
    Column_4STRING
    Column_5STRING
    Column_6STRING
    Column_7STRING
    Column_8STRING
    Column_9STRING
    Column_10STRING
    Entire_LineSTRING
    Row_CountINT
    Ckpt_Full_PathSTRING
    Ckpt_Name_OnlySTRING
    Cktp_IndexINT
    statusSTRING