Nodes/VRGameDevGirl Video Enhancement Nodes/VRGDG LTX Preview XYZ Plot
ComfyUI Node

VRGDG LTX Preview XYZ Plot

Turn your LoRA training previews into one comparison grid video

By vrgamegirl19·Created about a year ago·Updated about 7 hours ago· 718
VRGDG LTX Preview XYZ Plot
  • vhs_filenames
  • xyz_video_path
  • created
  • status
preview_folder
output_nameLTXChunkRun
completed_steps0
total_target_steps3000
cell_width0
cell_height0
label_tilestrue
output_fps24
render_backendNVIDIA GPU (h264_nvenc)

LoRA training spits out preview videos at checkpoints, and if you're training in chunks - which the VRGameDevGirl trainer nodes make you do - you end up with a folder full of small preview clips named by step. Squinting at them one at a time is the wrong way to judge a run. This node waits until training actually finishes and then stitches every saved preview into one side-by-side grid video, the way people eyeball checkpoint progress at a glance. It's the "did it converge" node.

You can think of it as the training loop's final evaluation step. It doesn't sample anything itself - it's a video-assembly node that turns already-written preview files into a single comparison reel. The "XYZ" in the name is aspirational: it's a flat grid of all your previews, not a true XYZ sweep.

How it works

The node is triggered by a vhs_filenames input from VideoHelperSuite's Combine Video node, so it runs right after the trainer's preview videos are written. It filters the preview_folder for videos matching output_name (your LoRA/output name), and only builds the grid once completed_steps reaches total_target_steps. Before that, it does nothing - which is by design: you don't want an interleaved half-finished grid.

cell_width and cell_height size each tile; 0 auto-detects from the first preview video. If you're comparing a lot of checkpoints, 320px tiles keep the grid from exploding; 512 is a nicer balance for a handful. label_tiles adds a label band above each tile using the filename (which should include the LoRA name and step - that's how you read the grid). output_fps defaults to 24.

For the export, render_backend picks between CPU (libx264) and NVIDIA GPU (h264_nvenc). The honest tradeoff, per the tooltip: the grid compose filters still run in ffmpeg either way, so NVENC only speeds up the encode stage - it's not a miracle on a CPU-bound compose. Nice to have if your ffmpeg has NVENC.

Outputs and wiring

Three outputs, and you mostly care about one: xyz_video_path is the STRING path to the finished comparison video. created is a BOOLEAN that flips true when the grid was actually built, and status carries a human-readable message. Wire created into a gate or just watch the console. Feed the resulting video to a Preview/Save node and you've got a record of the whole run in one file.

Install and gotchas

Same pack install as everything else - ComfyUI Manager, search "vrgamedev", or git clone https://github.com/vrgamegirl19/comfyui-vrgamedevgirl into ComfyUI/custom_nodes, restart, and install kornia, librosa, imageio from the README's requirements. The one dependency to plan around is VideoHelperSuite for the trigger, plus ffmpeg for the encoding (the pack falls back to its bundled imageio-ffmpeg binary if you don't have system ffmpeg).

The main gotcha is the trigger discipline: vhs_filenames must come from the same combine step that writes your previews, or the node never fires. And remember - it only builds the video when completed_steps hits the target, so if you abort a run early there's no grid, just silence. If you want an early look, run with a lower total_target_steps to force a build.

CategoryVRGDG/Training

Inputs (10)

NameTypeDefaultDescription
vhs_filenames*Trigger input from VideoHelperSuite Combine Video so this node runs after preview videos are written.
preview_folderSTRINGFolder containing the saved preview videos, or the VHS filename_prefix from the trainer node. If a filename_prefix is provided, this node automatically uses its parent output folder.
output_nameSTRINGLTXChunkRunLoRA/output name used to filter matching preview videos and to name the final XYZ video.
completed_stepsINT00–1000000Current completed training step from the trainer node.
total_target_stepsINT30001–1000000Final training target step. The XYZ compare video is only created when completed_steps reaches this value.
cell_widthINT00–4096Width of each tile in the final comparison grid. Use 0 to auto-detect from the first preview video. Examples: 320 for many checkpoints, 512 for a balanced layout, 768 for larger tiles.
cell_heightINT00–4096Height of each tile in the final comparison grid. Use 0 to auto-detect from the first preview video. If labels are enabled, the label band is added automatically.
label_tilesBOOLEANtrueAdds a label band above each tile using the preview filename, which should include the LoRA name and step.
output_fpsINT241–120FPS for the final comparison video. Example: 24 for standard preview playback.
render_backendCOMBONVIDIA GPU (h264_nvenc)Final XYZ export backend. CPU uses libx264. NVIDIA GPU uses NVENC for faster encoding when ffmpeg has NVENC support. Note: the grid compose filters still run in ffmpeg, so GPU mode mainly speeds up the encode stage.

Outputs (3)

NameTypeDescription
xyz_video_pathSTRING
createdBOOLEAN
statusSTRING