MiniMax H3 Continuum
GitHub:
https://github.com/ukr8b3g-cmyk/ComfyUI-H3-Continuum
[ V3.5 ]
V3.5 introduces two major additions:
- Continuum-aware Second Pass / Hi-Res Fix
Refine externally processed H3 latents while preserving Continuum physical groups, prompts, seeds, ordering, and first-pass audio. An integrated one-node 2x Hi-Res Fix path is also included as an experimental feature.
- Low-memory Assemble + Seam V3.5
Adds Auto, RAM, and Disk-backed video-buffer modes. Disk-backed assembly significantly reduces system RAM/private-memory usage for long or high-resolution outputs while preserving Exact Duration, Seam, Terminal Merge, and audio behavior.
All V3.4 nodes remain available for saved-workflow compatibility. Existing V3.4 workflows continue to work unchanged.
The V3.5 release passed 430 automated tests and representative GPU acceptance tests.
Note: The integrated Hi-Res Fix remains experimental. Long 2x workflows can require substantial GPU VRAM.
#5 3 chunks x 15 seconds
#6 6 chunks x 15 seconds
W576xH576

[ v3.4 ]
Long-form MiniMax H3 video and audio generation for ComfyUI with chunked generation, persistent references, restartable runs, and user-controlled audio.
### What's new in v3.4
- Driving Audio: preserves the supplied audio as the final audio while guiding generation across chunks.
- Video Reference: provides persistent visual reference for identity, motion, framing, and scene appearance.
- Restartable chunks: reuse completed chunks with Run Storage and regenerate only the required part.
- Improved Core compatibility: unknown upstream or custom nodes are not rejected merely because they are not recognized by Continuum.
- Simpler stable interface: obsolete compatibility controls and experimental Timeline inputs are hidden from the V3.4 public workflow.
- Spectrum interoperability: Spectrum remains optional and can use the official H3 Continuum Interop API.
### Direction change from v3.3
V3.4 focuses on predictable reference workflows rather than experimental Timeline Video and timeline-audio generation.
Driving Audio preserves the original user-supplied audio. Video Reference provides persistent visual guidance without requiring exact frame-by-frame copying. Existing V3.3 workflows remain available through legacy compatibility paths.
### Updating
For an existing Git installation:
git pull --ff-only origin mainV3.4 input connection patterns
V3.4 separates the visual reference input from the driving-audio input. Choose the connection pattern that matches your source material.
1. Audio only
Connect Load Audio to driving_audio. Use this when an existing song, dialogue track, or sound effect should remain the final audio. A Video Reference is not required.
2. Video with its own audio
Connect Load Video (Upload) IMAGE to Video Reference. If the uploaded video contains the audio you want to preserve, connect its AUDIO output to driving_audio as well.
3. Video and audio from separate sources
Connect Load Video (Upload) IMAGE to Video Reference, then connect a separate Load Audio node to driving_audio. Use this when the visual reference video and the final audio source are different files.
Both inputs are optional. Connect Video Reference when visual guidance is needed, and connect driving_audio when the supplied audio should be preserved in the final output.
Video Reference frame rate
Use a 24 fps source for Video Reference. Load Video (Upload) may accept files recorded at 25 fps or another frame rate, but acceptance alone does not guarantee correct temporal alignment with H3. For a non-24 fps source, set force_rate to 24 in Load Video (Upload), or convert the file to 24 fps before loading it. If the source is already 24 fps, leave force_rate at its default and do not resample it.
Current validation status
[ v3.3 ]
V3.3 adds Timeline Video conditioning for long-form MiniMax H3 generation. A reference video can now be processed in chunk-local time slices, allowing motion and scene continuity to be carried across multiple 5-second chunks while keeping the reference resolution independent from the output resolution. The Efficient 0.4 MP mode helps reduce memory usage and processing time.
Video assembly has also been improved. Auto seam handling analyzes chunk boundaries and applies guarded corrections for transient flicker, micro-flash, exposure, and color differences. This helps produce more natural transitions between generated chunks without changing the original sampling process.
Existing V3.2.4 workflows remain available as Legacy nodes for compatibility.
[ v3.24 ]
Generate longer native MiniMax H3 video and audio sequences in ComfyUI.
H3 Continuum is a ComfyUI custom node that generates a longer sequence as connected chunks and assembles them into one continuous video.
```text
3 × 5-second chunks → 15-second video
6 × 5-second chunks → 30-second video
The previous video and audio latent context is passed into each continuation chunk. This is not a simple video concatenation workflow.
Main purpose: longer MiniMax H3 generation, not faster generation.

Easy Installation
H3 Continuum can be installed directly from ComfyUI Manager.
Open ComfyUI Manager
Search for H3 Continuum or Continuum
Select Install
Restart ComfyUI
Load one of the included sample workflows

Manual installation and the latest documentation are available on GitHub:
GitHub:
https://github.com/ukr8b3g-cmyk/ComfyUI-H3-Continuum
What It Does
H3 Continuum divides a longer generation into manageable chunks.
MiniMax H3 Model
↓
H3 Continuum Sampler
↓
ComfyUI Core Video / Audio VAE Decode
↓
H3 Continuum Assemble
↓
Final videoEach continuation chunk receives latent context from the preceding chunk. Overlapping context is removed during assembly, and the final frame and audio counts are aligned to the requested duration.
Main Features
Connected long-form MiniMax H3 generation
Native video and audio latent continuation
Fixed, List, and Timeline prompt formats
Automatic prompt-format detection
T2VA, I2VA, FL2VA, Last Frame and Reference workflows
Up to three Reference Images
Reference Audio conditioning
First Frame and Last Frame conditioning
Configurable continuity context
Run Storage and automatic resume
Partial regeneration from a selected chunk
Optional Spectrum interoperability
Standard and Turbo sample workflows
ComfyUI Core VAE Decode compatibility

Included Sample Workflows
Two example workflows are provided.
Standard Workflow
Recommended when output quality and temporal consistency are the priority.
Standard MiniMax H3 sampling
Spectrum can be enabled
Suitable for quality-focused generation
Reference Image and Reference Audio supported
RTX upscaling can be enabled when required

Turbo Workflow
Recommended for faster tests and iteration.
LightX2V MiniMax H3 Turbo LoRA
8-step example configuration
Spectrum is bypassed by default
Faster than the standard workflow in tested configurations
Some loss of facial detail or additional artifacts may occur

Turbo LoRA models:
https://huggingface.co/lightx2v/Minimax-h3-Turbo/tree/main
MiniMax H3 models and documentation:
https://huggingface.co/MiniMaxAI/MiniMax-H3
Models and LoRAs are not included with this custom node.
Reference + Continuation
Reference Images remain available across all generated chunks.
A typical setup is:
Picture 1 → face and identity
Picture 2 → full-body appearance and clothing
Picture 3 → environment or an additional visual reference
Audio 1 → vocal, music or audio-performance referenceRef2VA is the reference-specialized checkpoint and is generally the first choice for stronger reference fidelity.
FL2VA with Reference conditioning is also allowed. H3 Continuum does not automatically replace or switch the connected model.
Spectrum Integration
Spectrum is optional. H3 Continuum also works without it.
With a compatible Spectrum release, H3 Continuum sends a continuation signal only when generating later chunks.
Chunk 1 → normal Spectrum sampling
Chunk 2+ → Continuum Actual Prefix 2This allows Spectrum to coordinate its spectral forecasting with the continuation context instead of treating every chunk as an unrelated generation.
Benefits include:
Automatic identification of continuation chunks
Actual Prefix applied only where required
No manual prefix switching between chunks
Reduced risk of duplicated prefix processing
Compatibility with standard ComfyUI workflow execution
Spectrum remains an approximate accelerator. Motion, anatomy, audio and detail can differ from a non-Spectrum result, so quality comparisons should use the same prompt and seed.
Spectrum:
https://github.com/xmarre/ComfyUI-Spectrum-MiniMax-H3
Run Storage and Resume
Enable Save + Auto Resume to preserve completed raw video and audio chunks.
If a generation is interrupted, H3 Continuum can reuse compatible saved chunks and continue from the first missing chunk.
It can also regenerate from a selected chunk while preserving the compatible prefix.
Chunk 1–3 completed
↓
Generation interrupted
↓
Queue the workflow again
↓
Chunks 1–3 reused
↓
Generation continues from Chunk 4Run Storage verifies the sampling contract, model route, references, resolution and saved chunk files before reuse.

Prompt Formats
Fixed
One prompt is used for every chunk.
List
Separate prompts are divided with:
---Timeline
[0-5s]
First scene description
[5-10s]
Second scene description
[10-15s]
Third scene descriptionPrompt Format = Auto detects the appropriate format automatically.
Incomplete timeline coverage produces diagnostics and safe fallback behavior rather than unnecessarily stopping every generation. Structurally unusable input is still reported as an error.
Tested Configuration
The current Windows implementation has been tested with:
GPU NVIDIA RTX 5060 Ti 16GB
ComfyUI MiniMax H3-compatible Core build
Chunk Duration 5 seconds
Typical Length 3 or 6 chunks
Continuity Balanced 22 frames
Standard Sampling RES Multistep
Spectrum Interop Actual Prefix 2The node is not limited to RTX 50-series GPUs. Actual compatibility, generation speed and usable resolution depend on the MiniMax H3 model, GPU memory, ComfyUI configuration and installed acceleration nodes.
RTX 4060 and other configurations have not been formally validated by this project.
Frequently Asked Questions
Is this only a workflow?
No. H3 Continuum is a ComfyUI custom node package. The included workflows are ready-to-use examples.
Does it generate one native 30-second sample?
No. It generates connected chunks and assembles them into one longer output while carrying video and audio latent context forward.
Does it make MiniMax H3 faster?
Speed is not the primary purpose. H3 Continuum is designed for longer generation. Spectrum and Turbo LoRAs can reduce generation time in some configurations.
Is Spectrum required?
No. It is an optional acceleration and interoperability path.
Can I use the Turbo LoRA?
Yes. A Turbo sample workflow is provided. Spectrum is bypassed by default in that workflow because combining both can change quality or introduce artifacts.
Which model should I use for Reference Images?
Ref2VA is the reference-specialized option. FL2VA with Reference conditioning is also allowed, but reference fidelity may differ.
Are the models included?
No. MiniMax H3 checkpoints, text encoders, VAEs, Turbo LoRAs and optional acceleration nodes must be installed separately.
Can an interrupted generation be resumed?
Yes. Enable Run Storage before generation. Compatible completed chunks can then be reused.
Can I regenerate only the later part?
Yes. Run Storage supports regeneration from a selected chunk while retaining a compatible earlier prefix.
Are chunk boundaries always invisible?
No generative continuation system can guarantee a completely invisible boundary. H3 Continuum preserves latent context and removes duplicated overlap, but difficult motion, lighting changes and large prompt transitions can still produce flicker or visual changes.
Does Reference Audio guarantee exact lip synchronization?
Reference Audio conditions MiniMax H3’s native joint video/audio generation. It can guide vocals, rhythm, expression and mouth movement, but it does not guarantee sample-identical audio reproduction or frame-perfect lip synchronization in every generation.
Does it support audio continuity?
Yes. Video and audio latent context are carried together. The assembler also provides an optional Audio Seam mode for boundary-local audio correction.
Is RTX 5090 required?
No. Development and runtime validation were performed on an RTX 5060 Ti 16GB. Lower-memory configurations may require reduced resolution, offloading or other ComfyUI memory optimizations.
What license is used?
H3 Continuum is released under the MIT License.
Links
Custom Nodes
The included Standard and Turbo workflows use the following custom nodes.
- H3 Continuum
https://github.com/ukr8b3g-cmyk/ComfyUI-H3-Continuum
- rgthree-comfy
https://github.com/rgthree/rgthree-comfy
- ComfyUI-Easy-Use
https://github.com/yolain/ComfyUI-Easy-Use
- ComfyUI-KJNodes
https://github.com/kijai/ComfyUI-KJNodes
- ComfyUI-Spectrum-MiniMax-H3
https://github.com/xmarre/ComfyUI-Spectrum-MiniMax-H3
- NVIDIA RTX Nodes for ComfyUI
https://github.com/Comfy-Org/Nvidia_RTX_Nodes_ComfyUI
Spectrum and RTX upscaling are optional generation paths, but installing all listed custom nodes allows the included workflows to load without missing-node warnings.
Models
- MiniMax H3
https://huggingface.co/MiniMaxAI/MiniMax-H3
- LightX2V MiniMax H3 Turbo LoRA
https://huggingface.co/lightx2v/Minimax-h3-Turbo/tree/main
Models and LoRAs are not included in the workflow ZIP.
Main Links
- GitHub and documentation
https://github.com/ukr8b3g-cmyk/ComfyUI-H3-Continuum
- Install from ComfyUI Manager
Search for H3 Continuum
Description
FAQ
Comments (26)
first of all, thanks for sharing this awesome wf.
i have "issues" and questions for T2V in the Turbo wf. That's all i could test so far.
Issues on a 5090:
1. sometimes i get an H3 Continuum Assemble + Seam V3.4 error. mostly after the second or third run.
i had these issues immediately with my first test runs (15s - 6 chunks) . then lowered quality to 0.4 and 0.5.
i can generate videos in low quality but still get this error now and then.
2. sometimes when i want to clear the memory manually, RAM stays as it was. i have to reboot Comfy then.
Questions:
1. i have Run Storage enabled. But how do i re-run a specific chunk?
when i click stop and click run again it starts from scratch and every previous generated chunks are gone. Couldn't figure out how to generate only chunk 2 or 5 again.
2. is there a limit to how many chunks i can generate? the slider seems to be infinite.
3. is there a specific guide/ info we need to put in the prompt sections?
because sometimes it just generates things and people how it likes when i test multiple characters, although i have written a specific long line that it should keep everything from the previous chunk.
4. will test the reference mode soon.
how does the prompting work there?
do i have to put
subject_definitions, summary, detailed_description, etc in each chunk again ana again?
or does it understands it when i write it once before the chunk sections?
I cant speak to resuming chunks, since ive never tried.
But prompting for me, so far, seems best if you treat every chunk as its own "detailed_description" and referencing the other scenes, just assuming the AI knows the last frame of your previous segment.
@Xarfai Thanks for the detailed report. This is very useful, especially the RTX 5090 results.
Regarding the occasional H3 Continuum Assemble + Seam V3.4 error: because it appears more often after multiple runs and becomes less frequent when lowering quality, memory pressure during decode/assembly is one of the main things I want to investigate. If you can, please also let me know how much system RAM you have.
For the manual memory clear issue, if RAM does not release correctly, restarting ComfyUI is currently the safest workaround. I’ll check whether the cleanup path can be improved.
For Run Storage / regenerating a specific chunk, the intended V3.4 behavior is:
Run Storage = Save + Auto Resume
Use Regenerate From
Selecting Chunk 5 should preserve Chunks 1–4 and regenerate from Chunk 5 onward.
If clicking Stop and running again deletes the previous chunks and starts from scratch, that is not the intended behavior. I would like to investigate that case separately.
The current sampler has a finite chunk limit even if the UI control may look effectively open-ended. I’ll make that clearer in the documentation/UI.
For prompting, you generally do not need to tell Continuum repeatedly to “keep everything from the previous chunk.” Continuum already carries previous visual/audio context. It is usually better to treat each chunk as the next scene and describe clearly what should happen in that section.
With multiple characters, H3 can still drift, so repeating important details such as who is present, clothing, positions, actions, and camera direction in the relevant chunks can help.
For Reference mode, global information can be written once before the timed/chunk sections, while each section describes the local action. You do not necessarily need to repeat the full subject_definitions, summary, and detailed_description in every chunk, but repeating the critical identity details for important characters can improve consistency.
Xarfai’s suggestion in the comments is also useful: treating each chunk almost like its own detailed scene description tends to work well.
@ukr8b3g201 thanks for the reply. you have to know, I'm a Newbie and don't know much about technical details. But i figured out that it was an OOM error.
i also figured out how to re-run specific junks. i was too tired the first time when i read the long info here. The second time i understood. Sorry for that. :-)
The chunk problem,...
(I hope I have i got Idea, but first things first :-))
If I have calculated correctly, the H3 Continuum Assemble + Seam V3.4
needed/ wanted over 100 Gig to generate 8 x 15s Videos.
(btw. i have tested a complex scene. In a crowded night club, a person is talking and interacting with others.)
Then I tried 6 x 15s. OOM. 4 x 15s. OOM.
i started with 0.8 megapixel and generated my first first Video at 0.3 megapixel 4 x 15s.. Totally useless.
I've lost so many scenes I loved in the preview, since i test your workflow. Since they get "lost" when OOM happens because they're saved as safetensors made me think:
I was like, Why stitching the clips together. Why not finishing each chunk and saving as a video on it's own? It's easy to glue them in a Video Editor.
The most important part is to have continuous and consistent clips, right?
So, my question:
Is it possible to generate each chunk as separate video, without stitching them together in ComfyUI?
Imagine this:
1. Your script is 10 x 15s.
2. Chunk 1 finished, saved as a video in a custom folder (so you can organize your projects),
3. clearing memory on autopilot
4. starting next chunk on autopilot.
and this for all 10 scenes. i can go grab a beer and maybe dont need to worry about a OOM.
Because it generates 1 video every time.
I don't know if it's possible because I have no clue about technical stuff, but in my mind it's like this way you can generate infinite videos. instead of trying to press everything into memory in one go.
Maybe it helps to keep the last few seconds as a safetensor file after the video has been finished.
In the end, All i need is generated scenes. They don't have to be ONE video immediately.
What do you think.
oh, btw.
i did so many test runs yesterday. After many many hours when I got tired and wanted to generate a specific chunk again, I had no idea if it was Chunk 3 or 7 in the preview.
Is it possible to ad a live indicator that tells me which chunk it is that it is previewing? :-)
@Xarfai OK. Thank you. yeah, my prompts are more than detailed. i was just unsure about the technical detail. Like will this workflow understand a "Global Prompt" at the start. Will it remember the subjects, style, etc what is in the section before chunk 1, when it renders chunk 3 and so on.
@denolim465778 Thank you for the detailed explanation. Yes, your idea makes sense, especially for long sequences using many 15-second chunks.
The OOM is likely happening mainly during the final decode and assembly stage. All decoded frames and temporary tensors may accumulate in system RAM, so the required memory can become extremely large with long, high-resolution videos. This is primarily an OOM problem rather than necessarily a memory leak.
A possible solution would be an optional “Sequential Chunk Export” mode:
- keep the normal Continuum generation and Run Storage behavior,
- preserve each completed chunk as latent data,
- decode only one chunk at a time,
- remove its continuation-overlap frames,
- save it as an individual video file,
- release the decoded frames from memory,
- then proceed to the next chunk.
This could keep peak decode memory closer to the requirement of one chunk instead of the complete video. Users could then combine the exported clips in a video editor.
Run Storage already preserves generated chunk data, so it may also be possible to export completed chunks after an Assembly OOM instead of losing useful generations.
The current combined Assemble + Seam output should remain available because it handles final duration, audio, and chunk boundaries automatically. Sequential export would be an additional low-memory option, not a replacement.
However, this has not been implemented or fully investigated yet. I need to confirm that it can be integrated safely without affecting Continuum context, Run Storage, audio handling, overlap trimming, or the existing Assemble + Seam workflow.
The issue where RAM sometimes remains allocated after using Clear Memory may be a separate cleanup or reference-retention problem. That should be investigated independently from the high peak memory usage during final assembly.
A live indicator such as “Generating Chunk 3 / 10” is also a useful suggestion. It should be investigated separately so that long generations are easier to follow and users can identify which chunk is currently being previewed.
So, I think both ideas are valid feature requests:
1. Optional sequential per-chunk video export for lower peak RAM usage.
2. A clear current-chunk progress indicator.
I will keep these as investigation items rather than promise an implementation before the technical risks have been checked.
@ukr8b3g201Almost forgot. 96GB RAM
@ukr8b3g201 Well. Thank YOU. you're work is extra ordinary. Not perfect yet :-), but you'll get there i believe.
I think that is the least thing i can do to say THANK YOU for your hard work and sharing it with us.
i also appreciate your help an ideas. as i said i am a total newbie to comfy.
i understand this
- keep the normal Continuum generation and Run Storage behavior,
But this? :-)
- preserve each completed chunk as latent data,
- decode only one chunk at a time,
- remove its continuation-overlap frames,
- save it as an individual video file,
- release the decoded frames from memory,
- then proceed to the next chunk.
i have no clue where to click what and what to do with the chunk since they are safetensors and all that. but i will try to figure it out with an LLM.
Thanks a lot again
@denolim465778 Thank you — and sorry, I made that sound much more complicated than it actually is. :-)
Those points were not instructions for you to do manually. You do not need to open, edit, or manage the .safetensors chunk files yourself.
I was describing a possible internal improvement to Continuum for reducing RAM usage:
Continuum would keep the generated latent chunks as it already does.
It would automatically decode one chunk at a time.
It would automatically remove the overlap.
It could save that finished chunk to disk.
It would then release the large decoded frames from RAM before processing the next chunk.
So if I implement this, all of that would happen inside the workflow/node. From the user's side, ideally there would be nothing special to do.
For now, just use the normal Continuum workflow and Run Storage as usual. Please don't feel that you need to figure out the safetensors files with an LLM — I was explaining the implementation idea, not giving you extra homework. :-)
And thanks again for testing it. Reports from a 5090 / 96 GB system are particularly useful for tracking down the repeated-run memory issue.
@ukr8b3g201 That's the life of a newbie. Doesn't understand sh... ;-)
OK. Now the serious part.
i tested with the xueluo model this time. same results. i have the feeling my systems config might be a reason for that. i read somewhere that i should downgrade something.
i copied what i thought is important for you
COMFY ERROR LOG
SPECTRUM ON
# ComfyUI Error Report ## Error Details - Node ID: 275 - Node Type: H3ContinuumAssembleSeamV34 - Exception Type: RuntimeError - Exception Message: RuntimeError: [enforce fail at alloc_cpu.cpp:117] data. DefaultCPUAllocator: not enough memory: you tried to allocate 8980439040 bytes. ## Stack Trace ``` File "C:\ComfyUI\ComfyUI\execution.py", line 545, in execute output_data, output_ui, has_subgraph, has_pending_tasks = await get_output_data(prompt_id, unique_id, obj, input_data_all, execution_block_cb=execution_block_cb, pre_execute_cb=pre_execute_cb, v3_data=v3_data) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\ComfyUI\ComfyUI\execution.py", line 344, in get_output_data return_values = await asyncmap_node_over_list(prompt_id, unique_id, obj, input_data_all, obj.FUNCTION, allow_interrupt=True, execution_block_cb=execution_block_cb, pre_execute_cb=pre_execute_cb, v3_data=v3_data) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\ComfyUI\ComfyUI\execution.py", line 312, in asyncmap_node_over_list await process_inputs(input_data_all, 0, input_is_list=input_is_list) File "C:\ComfyUI\ComfyUI\execution.py", line 306, in process_inputs result = f(**inputs) File "C:\ComfyUI\ComfyUI\custom_nodes\ComfyUI-H3-Continuum\v3\driving_nodes.py", line 206, in assemble images, audio, report = super().assemble(*args, **kwargs) ~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^ File "C:\ComfyUI\ComfyUI\custom_nodes\ComfyUI-H3-Continuum\v3\assembly.py", line 388, in assemble result_images, result_audio, report = assemble_decoded_chunks( ~~~~~~~~~~~~~~~~~~~~~~~^ images=image_chunks, ^^^^^^^^^^^^^^^^^^^^ ...<6 lines>... diagnostics=str(_singleton(diagnostics, "diagnostics")), ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ) ^ File "C:\ComfyUI\ComfyUI\custom_nodes\ComfyUI-H3-Continuum\v3\assembly.py", line 307, in assemble_decoded_chunks return assemblewith_hardening(_assemble_decoded_chunks_v300, args, kwargs) File "C:\ComfyUI\ComfyUI\custom_nodes\ComfyUI-H3-Continuum\hardening.py", line 531, in assemble_with_hardening result = base(*args, **kwargs) File "C:\ComfyUI\ComfyUI\custom_nodes\ComfyUI-H3-Continuum\v3\assembly.py", line 132, in assemble_decoded_chunks image_buffer = torch.empty( (total_retained_frames, segment_images.shape[1:]), dtype=segment_images.dtype, device="cpu", ) ``` ## System Information - *ComfyUI Version:** 0.33.0 - Arguments: ComfyUI\main.py --windows-standalone-build --fast fp16_accumulation - OS: win32 - Python Version: 3.13.12 (tags/v3.13.12:1cbe481, Feb 3 2026, 18:22:25) [MSC v.1944 64 bit (AMD64)] - Embedded Python: true - PyTorch Version: 2.13.0+cu130 ## Devices - Name: cuda:0 NVIDIA GeForce RTX 5090 : cudaMallocAsync - Type: cuda - VRAM Total: 34190458880 - VRAM Free: 32437698560 - Torch VRAM Total: 67108864 - Torch VRAM Free: 33554432
2026-08-22T16:34:53.268859 - [1m[33m[WARNING][0m [DEPRECATION WARNING] Detected import of deprecated legacy API: /scripts/ui.js. This is likely caused by a custom node extension using outdated APIs. Please update your extensions or contact the extension author for an updated version. 2026-08-22T16:34:53.269162 - [1m[33m[WARNING][0m [DEPRECATION WARNING] Detected import of deprecated legacy API: /scripts/ui/components/buttonGroup.js. This is likely caused by a custom node extension using outdated APIs. Please update your extensions or contact the extension author for an updated version. 2026-08-22T16:34:53.272604 - [1m[33m[WARNING][0m [DEPRECATION WARNING] Detected import of deprecated legacy API: /extensions/core/clipspace.js. This is likely caused by a custom node extension using outdated APIs. Please update your extensions or contact the extension author for an updated version. 2026-08-22T16:34:53.273133 - [1m[33m[WARNING][0m [DEPRECATION WARNING] Detected import of deprecated legacy API: /extensions/core/groupNode.js. This is likely caused by a custom node extension using outdated APIs. Please update your extensions or contact the extension author for an updated version. 2026-08-22T16:34:53.273780 - [1m[33m[WARNING][0m [DEPRECATION WARNING] Detected import of deprecated legacy API: /extensions/core/widgetInputs.js. This is likely caused by a custom node extension using outdated APIs. Please update your extensions or contact the extension author for an updated version. 2026-08-22T16:34:53.559113 - [Glide Video] ffmpeg: .\ffmpeg.EXE (224 encoders; libx264, libx265, av1_nvenc, hevc_nvenc, h264_nvenc, prores_ks, ffv1)2026-08-22T16:34:53.559291 - 2026-08-22T16:34:54.015297 - [1m[33m[WARNING][0m Ref2VA requires ffmpeg/ffprobe on the system PATH; currently ffmpeg='.\\ffmpeg.EXE' ffprobe=None 2026-08-22T16:34:55.298900 - [1m[33m[WARNING][0m [DEPRECATION WARNING] Detected import of deprecated legacy API: /scripts/ui/components/button.js. This is likely caused by a custom node extension using outdated APIs. Please update your extensions or contact the extension author for an updated version. 2026-08-22T16:34:55.299843 - [32m[INFO][0m [Workflow-Models-Downloader] Settings saved 2026-08-22T16:34:55.300706 - [32m[INFO][0m [Workflow-Models-Downloader] Settings saved 2026-08-22T16:34:56.097857 - 🔧 Settings endpoint called2026-08-22T16:34:56.098257 - 2026-08-22T16:34:56.098477 - 🔧 Received settings: precision=auto, device=auto, vc_engine=chatterbox_23lang, cosyvoice_variant=RL2026-08-22T16:34:56.098531 - 2026-08-22T16:34:56.098747 - 🎨 Step Audio EditX inline tags: precision=auto, device=auto2026-08-22T16:34:56.098842 - 2026-08-22T16:34:56.098922 - 🔄 Voice restoration engine: chatterbox_23lang2026-08-22T16:34:56.098969 -
2026-08-22T16:40:18.805590 - #[32m[INFO]#[0m Model MiniMaxH3 prepared for dynamic VRAM loading. 32427MB Staged. 208 patches attached. Force pre-loaded 210 weights: 1142 KB.
2026-08-22T16:40:23.735758 - #[1m#[33m[WARNING]#[0m Spectrum H3: accepted H3 Continuum API v1, actual prefix=2
2026-08-22T16:40:23.736241 - #[32m[INFO]#[0m Requested to load MiniMaxH3
2026-08-22T16:47:23.312880 - #[32m[INFO]#[0m Model MiniMaxH3 prepared for dynamic VRAM loading. 32427MB Staged. 208 patches attached. Force pre-loaded 210 weights: 1142 KB.
2026-08-22T16:47:28.326961 - #[1m#[33m[WARNING]#[0m Spectrum H3: accepted H3 Continuum API v1, actual prefix=2
2026-08-22T16:47:28.327626 - #[32m[INFO]#[0m Requested to load MiniMaxH3
2026-08-22T16:47:28.408244 - #[32m[INFO]#[0m Model MiniMaxH3 prepared for dynamic VRAM loading. 32427MB Staged. 208 patches attached. Force pre-loaded 210 weights: 1142 KB.
2026-08-22T16:49:09.749932 -
100%|
2026-08-22T16:51:53.392073 - #[32m[INFO]#[0m Model MiniMaxH3VideoVAE prepared for dynamic VRAM loading. 4965MB Staged. 0 patches attached. Force pre-loaded 128 weights: 348 KB.
2026-08-22T16:52:11.567933 - #[1m#[31m[ERROR]#[0m !!! Exception during processing !!! [enforce fail at alloc_cpu.cpp:117] data. DefaultCPUAllocator: not enough memory: you tried to allocate 8980439040 bytes.
2026-08-22T16:52:11.570434 - #[1m#[31m[ERROR]#[0m Traceback (most recent call last):
File "C:\ComfyUI\ComfyUI\execution.py", line 545, in execute
output_data, output_ui, has_subgraph, has_pending_tasks = await get_output_data(prompt_id, unique_id, obj, input_data_all, execution_block_cb=execution_block_cb, pre_execute_cb=pre_execute_cb, v3_data=v3_data)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\ComfyUI\ComfyUI\execution.py", line 344, in get_output_data
return_values = await asyncmap_node_over_list(prompt_id, unique_id, obj, input_data_all, obj.FUNCTION, allow_interrupt=True, execution_block_cb=execution_block_cb, pre_execute_cb=pre_execute_cb, v3_data=v3_data)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\ComfyUI\ComfyUI\execution.py", line 312, in asyncmap_node_over_list
await process_inputs(input_data_all, 0, input_is_list=input_is_list)
File "C:\ComfyUI\ComfyUI\execution.py", line 306, in process_inputs
result = f(**inputs)
File "C:\ComfyUI\ComfyUI\custom_nodes\ComfyUI-H3-Continuum\v3\driving_nodes.py", line 206, in assemble
images, audio, report = super().assemble(*args, **kwargs)
~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
File "C:\ComfyUI\ComfyUI\custom_nodes\ComfyUI-H3-Continuum\v3\assembly.py", line 388, in assemble
result_images, result_audio, report = assemble_decoded_chunks(
~~~~~~~~~~~~~~~~~~~~~~~^
images=image_chunks,
^^^^^^^^^^^^^^^^^^^^
...<6 lines>...
diagnostics=str(_singleton(diagnostics, "diagnostics")),
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "C:\ComfyUI\ComfyUI\custom_nodes\ComfyUI-H3-Continuum\v3\assembly.py", line 307, in assemble_decoded_chunks
return assemblewith_hardening(_assemble_decoded_chunks_v300, args, kwargs)
File "C:\ComfyUI\ComfyUI\custom_nodes\ComfyUI-H3-Continuum\hardening.py", line 531, in assemble_with_hardening
result = base(*args, **kwargs)
File "C:\ComfyUI\ComfyUI\custom_nodes\ComfyUI-H3-Continuum\v3\assembly.py", line 132, in assemble_decoded_chunks
image_buffer = torch.empty(
(total_retained_frames, *segment_images.shape[1:]),
dtype=segment_images.dtype,
device="cpu",
)
RuntimeError: [enforce fail at alloc_cpu.cpp:117] data. DefaultCPUAllocator: not enough memory: you tried to allocate 8980439040 bytes.
2026-08-22T16:52:11.572492 - #[32m[INFO]#[0m #[32mPrompt executed in 483.45 seconds#[0m
@ukr8b3g201 sorry, lost the terminal logs for Spectrum ON. forgot to save.
COMFY ERROR LOG
SPECTRUM OFF
# ComfyUI Error Report ## Error Details - Node ID: 275 - Node Type: H3ContinuumAssembleSeamV34 - Exception Type: RuntimeError - Exception Message: RuntimeError: [enforce fail at alloc_cpu.cpp:117] data. DefaultCPUAllocator: not enough memory: you tried to allocate 11040657408 bytes. ## Stack Trace ``` File "C:\ComfyUI\ComfyUI\execution.py", line 545, in execute output_data, output_ui, has_subgraph, has_pending_tasks = await get_output_data(prompt_id, unique_id, obj, input_data_all, execution_block_cb=execution_block_cb, pre_execute_cb=pre_execute_cb, v3_data=v3_data) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\ComfyUI\ComfyUI\execution.py", line 344, in get_output_data return_values = await asyncmap_node_over_list(prompt_id, unique_id, obj, input_data_all, obj.FUNCTION, allow_interrupt=True, execution_block_cb=execution_block_cb, pre_execute_cb=pre_execute_cb, v3_data=v3_data) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\ComfyUI\ComfyUI\execution.py", line 312, in asyncmap_node_over_list await process_inputs(input_data_all, 0, input_is_list=input_is_list) File "C:\ComfyUI\ComfyUI\execution.py", line 306, in process_inputs result = f(**inputs) File "C:\ComfyUI\ComfyUI\custom_nodes\ComfyUI-H3-Continuum\v3\driving_nodes.py", line 206, in assemble images, audio, report = super().assemble(*args, **kwargs) ~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^ File "C:\ComfyUI\ComfyUI\custom_nodes\ComfyUI-H3-Continuum\v3\assembly.py", line 388, in assemble result_images, result_audio, report = assemble_decoded_chunks( ~~~~~~~~~~~~~~~~~~~~~~~^ images=image_chunks, ^^^^^^^^^^^^^^^^^^^^ ...<6 lines>... diagnostics=str(_singleton(diagnostics, "diagnostics")), ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ) ^ File "C:\ComfyUI\ComfyUI\custom_nodes\ComfyUI-H3-Continuum\v3\assembly.py", line 307, in assemble_decoded_chunks return assemblewith_hardening(_assemble_decoded_chunks_v300, args, kwargs) File "C:\ComfyUI\ComfyUI\custom_nodes\ComfyUI-H3-Continuum\hardening.py", line 531, in assemble_with_hardening result = base(*args, **kwargs) File "C:\ComfyUI\ComfyUI\custom_nodes\ComfyUI-H3-Continuum\v3\assembly.py", line 132, in assemble_decoded_chunks image_buffer = torch.empty( (total_retained_frames, segment_images.shape[1:]), dtype=segment_images.dtype, device="cpu", ) ``` ## System Information - *ComfyUI Version:** 0.33.0 - Arguments: ComfyUI\main.py --windows-standalone-build --fast fp16_accumulation - OS: win32 - Python Version: 3.13.12 (tags/v3.13.12:1cbe481, Feb 3 2026, 18:22:25) [MSC v.1944 64 bit (AMD64)] - Embedded Python: true - PyTorch Version: 2.13.0+cu130 ## Devices - Name: cuda:0 NVIDIA GeForce RTX 5090 : cudaMallocAsync - Type: cuda - VRAM Total: 34190458880 - VRAM Free: 32437698560 - Torch VRAM Total: 67108864 - Torch VRAM Free: 33554432
2026-08-22T16:34:52.163472 - [1m[33m[WARNING][0m Traceback (most recent call last): File "C:\ComfyUI\ComfyUI\nodes.py", line 2263, in load_custom_node module_spec.loader.exec_module(module) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ File "<frozen importlib._bootstrap_external>", line 1023, in exec_module File "<frozen importlib._bootstrap>", line 488, in callwith_frames_removed File "C:\ComfyUI\ComfyUI\custom_nodes\was-node-suite-comfyui\__init__.py", line 1, in <module> from .WAS_Node_Suite import NODE_CLASS_MAPPINGS File "C:\ComfyUI\ComfyUI\custom_nodes\was-node-suite-comfyui\WAS_Node_Suite.py", line 44, in <module> from numba import jit File "C:\ComfyUI\python_embeded\Lib\site-packages\numba\__init__.py", line 59, in <module> ensurecritical_deps() ~~~~~~~~~~~~~~~~~~~~~^^ File "C:\ComfyUI\python_embeded\Lib\site-packages\numba\__init__.py", line 45, in ensurecritical_deps raise ImportError(msg) ImportError: Numba needs NumPy 2.4 or less. Got NumPy 2.5. 2026-08-22T16:34:52.163707 - [1m[33m[WARNING][0m Cannot import C:\ComfyUI\ComfyUI\custom_nodes\was-node-suite-comfyui module for custom nodes: Numba needs NumPy 2.4 or less. Got NumPy 2.5.
TERMINAL
[INFO] CLIP/text encoder model load device: cuda:0, offload device: cpu, current: cpu, dtype: torch.float16
[WARNING] Warning, This is not a checkpoint file, trying to load it as a diffusion model only.
[INFO] Found quantization metadata version 1
[INFO] Detected mixed precision quantization
[INFO] Using mixed precision operations
[INFO] Native ops: nvfp4, mxfp8, float8_e5m2, convrot_w4a4, float8_e4m3fn, asym_w4a8_int8, int8_tensorwise
[INFO] model weight dtype torch.bfloat16, manual cast: torch.bfloat16
[INFO] model_type FLOW_AV
[WARNING] WARNING: No VAE weights detected, VAE not initalized.
[INFO] got prompt [INFO] VAE load device: cuda:0, offload device: cpu, dtype: torch.float32 [INFO] VAE load device: cuda:0, offload device: cpu, dtype: torch.float16 [INFO] Found quantization metadata version 1 [INFO] Using MixedPrecisionOps for text encoder [INFO] CLIP/text encoder model load device: cuda:0, offload device: cpu, current: cpu, dtype: torch.float16 [WARNING] Warning, This is not a checkpoint file, trying to load it as a diffusion model only. [INFO] Found quantization metadata version 1 [INFO] Detected mixed precision quantization [INFO] Using mixed precision operations [INFO] Native ops: float8_e4m3fn, convrot_w4a4, asym_w4a8_int8, float8_e5m2, nvfp4, int8_tensorwise, mxfp8 [INFO] model weight dtype torch.bfloat16, manual cast: torch.bfloat16 [INFO] model_type FLOW_AV [WARNING] WARNING: No VAE weights detected, VAE not initalized. [INFO] Applying MiniMax H3 Memory Efficient Sage Attention Patch to all transformer blocks [INFO] Requested to load MiniMaxH3VideoVAE [INFO] Model MiniMaxH3VideoVAE prepared for dynamic VRAM loading. 4965MB Staged. 0 patches attached. Force pre-loaded 128 weights: 348 KB. [INFO] Requested to load MiniMaxH3TEModel_ [INFO] Model MiniMaxH3TEModel_ prepared for dynamic VRAM loading. 14956MB Staged. 0 patches attached. Force pre-loaded 410 weights: 4572 KB. [INFO] Model MiniMaxH3TEModel_ prepared for dynamic VRAM loading. 14956MB Staged. 0 patches attached. Force pre-loaded 410 weights: 4572 KB. [INFO] Model MiniMaxH3TEModel_ prepared for dynamic VRAM loading. 14956MB Staged. 0 patches attached. Force pre-loaded 410 weights: 4572 KB. [INFO] Model MiniMaxH3TEModel_ prepared for dynamic VRAM loading. 14956MB Staged. 0 patches attached. Force pre-loaded 410 weights: 4572 KB. [INFO] Requested to load MiniMaxH3 [INFO] 0 models unloaded. [INFO] Model MiniMaxH3 prepared for dynamic VRAM loading. 32427MB Staged. 208 patches attached. Force pre-loaded 210 weights: 1142 KB. 100%|████████████████████████████████████████████████████████████████| 8/8 [02:17<00:00, 17.18s/it] [INFO] Requested to load MiniMaxH3
-------------------------------------------------------------------------------------------------------------------------
[INFO] Model MiniMaxH3VideoVAE prepared for dynamic VRAM loading. 4965MB Staged. 0 patches attached. Force pre-loaded 128 weights: 348 KB. [ERROR] !!! Exception during processing !!! [enforce fail at alloc_cpu.cpp:117] data. DefaultCPUAllocator: not enough memory: you tried to allocate 11040657408 bytes. [ERROR] Traceback (most recent call last): File "C:\ComfyUI\ComfyUI\execution.py", line 545, in execute output_data, output_ui, has_subgraph, has_pending_tasks = await get_output_data(prompt_id, unique_id, obj, input_data_all, execution_block_cb=execution_block_cb, pre_execute_cb=pre_execute_cb, v3_data=v3_data) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\ComfyUI\ComfyUI\execution.py", line 344, in get_output_data return_values = await asyncmap_node_over_list(prompt_id, unique_id, obj, input_data_all, obj.FUNCTION, allow_interrupt=True, execution_block_cb=execution_block_cb, pre_execute_cb=pre_execute_cb, v3_data=v3_data) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\ComfyUI\ComfyUI\execution.py", line 312, in asyncmap_node_over_list await process_inputs(input_data_all, 0, input_is_list=input_is_list) File "C:\ComfyUI\ComfyUI\execution.py", line 306, in process_inputs result = f(**inputs) File "C:\ComfyUI\ComfyUI\custom_nodes\ComfyUI-H3-Continuum\v3\driving_nodes.py", line 206, in assemble images, audio, report = super().assemble(*args, **kwargs) ~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^ File "C:\ComfyUI\ComfyUI\custom_nodes\ComfyUI-H3-Continuum\v3\assembly.py", line 388, in assemble result_images, result_audio, report = assemble_decoded_chunks( ~~~~~~~~~~~~~~~~~~~~~~~^ images=image_chunks, ^^^^^^^^^^^^^^^^^^^^ ...<6 lines>... diagnostics=str(_singleton(diagnostics, "diagnostics")), ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ) ^ File "C:\ComfyUI\ComfyUI\custom_nodes\ComfyUI-H3-Continuum\v3\assembly.py", line 307, in assemble_decoded_chunks return assemblewith_hardening(_assemble_decoded_chunks_v300, args, kwargs) File "C:\ComfyUI\ComfyUI\custom_nodes\ComfyUI-H3-Continuum\hardening.py", line 531, in assemble_with_hardening result = base(*args, **kwargs) File "C:\ComfyUI\ComfyUI\custom_nodes\ComfyUI-H3-Continuum\v3\assembly.py", line 132, in assemble_decoded_chunks image_buffer = torch.empty( (total_retained_frames, *segment_images.shape[1:]), dtype=segment_images.dtype, device="cpu", ) RuntimeError: [enforce fail at alloc_cpu.cpp:117] data. DefaultCPUAllocator: not enough memory: you tried to allocate 11040657408 bytes.
[INFO] Prompt executed in 581.07 seconds
[INFO] Model MiniMaxH3VideoVAE prepared for dynamic VRAM loading. 4965MB Staged. 0 patches attached. Force pre-loaded 128 weights: 348 KB.
[ERROR] !!! Exception during processing !!! [enforce fail at alloc_cpu.cpp:117] data. DefaultCPUAllocator: not enough memory: you tried to allocate 8980439040 bytes.
[ERROR] Traceback (most recent call last):
File "C:\ComfyUI\ComfyUI\execution.py", line 545, in execute
output_data, output_ui, has_subgraph, has_pending_tasks = await get_output_data(prompt_id, unique_id, obj, input_data_all, execution_block_cb=execution_block_cb, pre_execute_cb=pre_execute_cb, v3_data=v3_data)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\ComfyUI\ComfyUI\execution.py", line 344, in get_output_data
return_values = await asyncmap_node_over_list(prompt_id, unique_id, obj, input_data_all, obj.FUNCTION, allow_interrupt=True, execution_block_cb=execution_block_cb, pre_execute_cb=pre_execute_cb, v3_data=v3_data)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\ComfyUI\ComfyUI\execution.py", line 312, in asyncmap_node_over_list
await process_inputs(input_data_all, 0, input_is_list=input_is_list)
File "C:\ComfyUI\ComfyUI\execution.py", line 306, in process_inputs
result = f(**inputs)
File "C:\ComfyUI\ComfyUI\custom_nodes\ComfyUI-H3-Continuum\v3\driving_nodes.py", line 206, in assemble
images, audio, report = super().assemble(*args, **kwargs)
~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
File "C:\ComfyUI\ComfyUI\custom_nodes\ComfyUI-H3-Continuum\v3\assembly.py", line 388, in assemble
result_images, result_audio, report = assemble_decoded_chunks(
~~~~~~~~~~~~~~~~~~~~~~~^
images=image_chunks,
^^^^^^^^^^^^^^^^^^^^
...<6 lines>...
diagnostics=str(_singleton(diagnostics, "diagnostics")),
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "C:\ComfyUI\ComfyUI\custom_nodes\ComfyUI-H3-Continuum\v3\assembly.py", line 307, in assemble_decoded_chunks
return assemblewith_hardening(_assemble_decoded_chunks_v300, args, kwargs)
File "C:\ComfyUI\ComfyUI\custom_nodes\ComfyUI-H3-Continuum\hardening.py", line 531, in assemble_with_hardening
result = base(*args, **kwargs)
File "C:\ComfyUI\ComfyUI\custom_nodes\ComfyUI-H3-Continuum\v3\assembly.py", line 132, in assemble_decoded_chunks
image_buffer = torch.empty(
(total_retained_frames, *segment_images.shape[1:]),
dtype=segment_images.dtype,
device="cpu",
)
RuntimeError: [enforce fail at alloc_cpu.cpp:117] data. DefaultCPUAllocator: not enough memory: you tried to allocate 8980439040 bytes.
[INFO] Prompt executed in 483.45 seconds
TERMINAL
[INFO] Model MiniMaxH3 prepared for dynamic VRAM loading. 32427MB Staged. 208 patches attached. Force pre-loaded 210 weights: 1142 KB.
100%|████████████████████████████████████████████████████████████████| 8/8 [01:02<00:00, 7.82s/it]
[INFO] Model MiniMaxH3 prepared for dynamic VRAM loading. 32427MB Staged. 208 patches attached. Force pre-loaded 210 weights: 1142 KB.
[WARNING] Spectrum H3: accepted H3 Continuum API v1, actual prefix=2
[INFO] Requested to load MiniMaxH3
[INFO] 0 models unloaded.
[INFO] Model MiniMaxH3 prepared for dynamic VRAM loading. 32427MB Staged. 208 patches attached. Force pre-loaded 210 weights: 1142 KB.
100%|████████████████████████████████████████████████████████████████| 8/8 [01:40<00:00, 12.54s/it]
[INFO] Model MiniMaxH3 prepared for dynamic VRAM loading. 32427MB Staged. 208 patches attached. Force pre-loaded 210 weights: 1142 KB.
[WARNING] Spectrum H3: accepted H3 Continuum API v1, actual prefix=2
[INFO] Requested to load MiniMaxH3
[INFO] Model MiniMaxH3 prepared for dynamic VRAM loading. 32427MB Staged. 208 patches attached. Force pre-loaded 210 weights: 1142 KB.
100%|████████████████████████████████████████████████████████████████| 8/8 [01:41<00:00, 12.65s/it]
[INFO] Model MiniMaxH3 prepared for dynamic VRAM loading. 32427MB Staged. 208 patches attached. Force pre-loaded 210 weights: 1142 KB.
[WARNING] Spectrum H3: accepted H3 Continuum API v1, actual prefix=2
[INFO] Requested to load MiniMaxH3
[INFO] Model MiniMaxH3 prepared for dynamic VRAM loading. 32427MB Staged. 208 patches attached. Force pre-loaded 210 weights: 1142 KB.
100%|████████████████████████████████████████████████████████████████| 8/8 [01:41<00:00, 12.63s/it]
[INFO] Model MiniMaxH3 prepared for dynamic VRAM loading. 32427MB Staged. 208 patches attached. Force pre-loaded 210 weights: 1142 KB.
Force pre-loaded 128 weights: 348 KB. [ERROR] !!! Exception during processing !!! [enforce fail at alloc_cpu.cpp:117] data. DefaultCPUAllocator: not enough memory: you tried to allocate 8980439040 bytes. [ERROR] Traceback (most recent call last): File "C:\ComfyUI\ComfyUI\execution.py", line 545, in execute output_data, output_ui, has_subgraph, has_pending_tasks = await get_output_data(prompt_id, unique_id, obj, input_data_all, execution_block_cb=execution_block_cb, pre_execute_cb=pre_execute_cb, v3_data=v3_data) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\ComfyUI\ComfyUI\execution.py", line 344, in get_output_data return_values = await asyncmap_node_over_list(prompt_id, unique_id, obj, input_data_all, obj.FUNCTION, allow_interrupt=True, execution_block_cb=execution_block_cb, pre_execute_cb=pre_execute_cb, v3_data=v3_data) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\ComfyUI\ComfyUI\execution.py", line 312, in asyncmap_node_over_list await process_inputs(input_data_all, 0, input_is_list=input_is_list) File "C:\ComfyUI\ComfyUI\execution.py", line 306, in process_inputs result = f(**inputs) File "C:\ComfyUI\ComfyUI\custom_nodes\ComfyUI-H3-Continuum\v3\driving_nodes.py", line 206, in assemble images, audio, report = super().assemble(*args, **kwargs) ~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^ File "C:\ComfyUI\ComfyUI\custom_nodes\ComfyUI-H3-Continuum\v3\assembly.py", line 388, in assemble result_images, result_audio, report = assemble_decoded_chunks( ~~~~~~~~~~~~~~~~~~~~~~~^ images=image_chunks, ^^^^^^^^^^^^^^^^^^^^ ...<6 lines>... diagnostics=str(_singleton(diagnostics, "diagnostics")), ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ) ^ File "C:\ComfyUI\ComfyUI\custom_nodes\ComfyUI-H3-Continuum\v3\assembly.py", line 307, in assemble_decoded_chunks return assemblewith_hardening(_assemble_decoded_chunks_v300, args, kwargs) File "C:\ComfyUI\ComfyUI\custom_nodes\ComfyUI-H3-Continuum\hardening.py", line 531, in assemble_with_hardening result = base(*args, **kwargs) File "C:\ComfyUI\ComfyUI\custom_nodes\ComfyUI-H3-Continuum\v3\assembly.py", line 132, in assemble_decoded_chunks image_buffer = torch.empty( (total_retained_frames, *segment_images.shape[1:]), dtype=segment_images.dtype, device="cpu", ) RuntimeError: [enforce fail at alloc_cpu.cpp:117] data. DefaultCPUAllocator: not enough memory: you tried to allocate 8980439040 bytes.
@ukr8b3g201 regarding the logs: tested with
- xueluo checkpoint
- 4 x 15s
- 8 steps
- 0.4 megapixel
Lora: minimax_h3_fl2v_turbo_8step_v1.0_comfyui_bf16.safetensors
@denolim465778 Thank you very much for taking the time to collect and post all of those logs. They are genuinely useful.
The error is much clearer now: the generation itself is completing, but the failure happens later in H3 Continuum Assemble + Seam V3.4, when it tries to allocate another very large block of system RAM for the final decoded video. Seeing the same type of failure with Spectrum both ON and OFF also helps narrow this down considerably.
For the next development cycle, I’m currently treating V3.4 as the stable baseline and investigating a few ideas for a possible V3.5.
One of them is already tracked as GitHub Issue #8 — it is an Issue, not a Pull Request — covering latent upscaling / a second-pass refinement workflow.
Based on the data you provided, I would also like to investigate the low-memory idea we discussed as another V3.5 candidate: decode/export the generated physical chunks sequentially instead of keeping the decoded frames for the entire long video in RAM at once.
The rough idea would be:
keep the existing Continuum generation and Run Storage behavior,
decode one completed physical chunk/group at a time,
remove the continuation overlap automatically,
export the resulting scene,
release the large decoded tensors,
then process the next one.
If that approach proves safe, it could substantially reduce peak system-RAM usage for long sequences and could also make it possible to recover already-generated scenes after a normal final Assembly runs out of memory.
I don’t want to promise yet that this exact design will be the final solution — I first need to verify the decode, audio, overlap, Terminal Merge, and Run Storage contracts carefully — but your logs give me a concrete real-world case to design and test against.
So the current direction is roughly:
V3.5 candidate A: Issue #8 — latent upscaling / Second Pass refinement
V3.5 candidate B: low-memory sequential decode/export or streaming assembly
Thanks again for providing the hardware details, exact settings, Spectrum ON/OFF results, and full traceback. That is much more useful than simply knowing that an OOM occurred.
@ukr8b3g201 my pleasure. also, i downgraded to NumPy 2.4.1 but still get the same error.
Not enough memory
@ukr8b3g201 Also, I am wondering why it works fine on @Xarfai 's system, when we have the same hardware. Strange.
@denolim465778 Thanks for checking that as well.
That actually helps confirm the diagnosis. The NumPy 2.5 warning in your earlier log was related to another custom node (was-node-suite-comfyui / Numba), but it was separate from the Continuum failure.
The important error is still:
DefaultCPUAllocator: not enough memory
inside H3 Continuum Assemble + Seam V3.4, while allocating the final CPU image buffer.
So downgrading NumPy would not be expected to fix this particular OOM.
At this point I’m treating it as a system-RAM peak during final decode/assembly, not a NumPy or Spectrum issue. Your tests are helping narrow it down quite clearly.
This is exactly the kind of case I want to use when investigating the low-memory / sequential export approach for the possible V3.5 work.
@denolim465778 I run the Nvidia studio driver instead of the gameready one, maybe there is a difference between our systems?
@Xarfai Just a small note: the Studio vs Game Ready driver difference may affect general stability or GPU behavior, but the OOM log here is specifically a CPU/system RAM allocation failure during final assembly.
So changing the NVIDIA driver may change some behavior, but I don’t think it would address the root cause of this particular Assemble + Seam OOM.
Overall this is a super well done workflow. Thanks so much for sharing.
May I ask for some requests?
1) Any thoughts on this upscaler node? Do you think its worth implementing?
https://huggingface.co/LBH-123-AI/Minimax_h3_latent_Upscaler
2) Can we please get KJ Nodes override node for the workflow? I tried to attach it myself, but it caused generation problems, the video kept repeating the entire duration in each chunk.
Example: 2 chunk, 3 sec per chunk. It would loop the 6 seconds twice. So basically it would play 12 seconds inside a 6 second video.
https://github.com/kijai/ComfyUI-KJNodes/blob/main/nodes/preview_override_node.py
Thanks, and glad you’re finding the workflow useful.
I haven’t personally tested the MiniMax H3 latent upscaler yet, so I don’t want to recommend integrating it into Continuum without some real-world testing first.
It definitely looks interesting, especially if it can improve resolution directly in latent space without introducing major temporal consistency issues. But for Continuum, I would want to check a few things first: VRAM/RAM usage, generation time, whether motion and identity remain stable across chunk boundaries, and whether it works reliably with longer sequences.
If you have a chance to test it with Continuum, I’d definitely be interested in the results. If it proves stable and provides a clear advantage over normal post-upscaling, then it could be worth looking at more closely for a future integration or recommended workflow.
@ukr8b3g201 Sure thing I'll try out the upscaler and report back.
I added a new hugging face link for the preview_override_node example. So you can see how it works in a .mp4. I'm not sure if its possible to integrate with continuum, but fingers crossed.
@hatt2 Thanks for adding the link. I understand now that MiniMax-H3-TAE works with KJ Nodes’ ModelPreviewOverride to provide an animated/MP4 preview during sampling.
That is useful. I’ll look into why Continuum’s chunked latent output causes the preview duration to repeat, and whether compatibility can be added without changing the actual generation path
@ukr8b3g201 Actually I figured out what I did wrong. I was using the wrong prompting steps.
I didn't realize I had to follow exactly this format:
[0-3s]
Describe scene.
I was using:
[0-3s] Describe scene.
So the KJNode override works fine with your workflow. 😃
@hatt2 @hatt2 Thanks for testing it and confirming.
That is good news — if the KJ Nodes ModelPreviewOverride works correctly once the timeline prompt is formatted properly, then Continuum itself does not appear to need any special compatibility changes for it.
For now, the safest timeline format is:
[0-3s]
Describe scene.
[3-6s]
Describe next scene.
with the time range on its own line and the prompt text below it.
I’ll make this formatting clearer in the documentation/examples, since it is easy to overlook and the resulting behavior can look like a preview or chunking bug.
Thanks again for tracking down the cause. And I’m still interested in what you find with the latent upscaler as well.
@ukr8b3g201
Yes I want to try the upscaler too. I'm interested to see how it comes out.
Also just in case you want to know, there is a weird bug with Kijai's node. But the preview still works it seems.
[WARNING] [KJ PreviewOverride] 'taef1_decoder.safetensors' decodes 16-channel latents but this model's are 24-channel; ignoring it.
Also the "timeline format" bug I found, I think it's actually a good "happy accident".
With "ModelPreviewOverride", its possible to see the entire video sequence in the first generation . The video speed will be super fast, but you can see how the entire generation will look like. Hope that makes sense.
One Question, from the description I understood that only the scene descriptions should be in the Timeline chunks. References and subject definitions can/should be outside.
For me this more often than not led to camera cuts on every chunk transition, even with a lot of detail in the prompts referencing what is happening.
Today I have been testing putting complete prompts into the Timeline chunks and nothing outside them. This has been giving me much better results so far, though with a low sample size because of time.
Did I just misunderstand the directions or is this maybe due to having 15s chunks or so?






