MiniMax H3 on an 8 GB laptop GPU

Six measured traps · a runtime predictor · one test that tells you whether the GPU is working or paging.
RTX 5060 Laptop 8 GB (sm_120) + 15.26 GiB RAM · Windows · ComfyUI 0.35.0 · single seed 12345.

This page does not run H3. It is a static page running on Hugging Face's own hardware. It can only give you advice and data. A Space that claims to demo H3 on an 8 GB card is really running on a datacentre GPU.

1 · The six traps

Each row: the symptom you will see, what the measurement says, and how to reproduce or avoid it.

SymptomWhat it actually isEvidence
A 10 s clip loses its subject at ~7 s A prompt defect, not the model. Only [Shot 1] is described, so the tail has nothing to render; a camera move with no target pushes the subject off-frame. Same seed, single variable: 7.0–10.0 s subject gone, close-ups with no facial features. The official 20-step baseline reproduces it too, so it is not the step count or any acceleration node.
SageAttention is slower, and it silently overrides your backend choice Measured at H3's real geometry (56 heads × 128, S=8192, bf16): SDPA 143.1 ms · comfy-kitchen INT8 22.8 ms · SageAttention 29.0 ms. The Sage patch calls _sageattn_int8_fp8_nhd directly and bypasses optimized_attention, so ModelAttentionBackend and --use-ck-attention have no effect while it is installed. On sm_120, comfy-kitchen is 6.3× faster than SDPA and 1.27× faster than Sage, at lower error (0.0164 vs 0.0387 rel-L2).
SaveVideo fails with an opaque avcodec_open2("libx264") error libx264 is fine. The frame's width or height is odd — yuv420p needs 2×2 chroma subsampling, so both must be even. Same PyAV build: 64x64 and 1080x1920 open fine; 65x63, 63x65, 65x65, 1171x2532, 1080x1441 all fail. Reported upstream as ComfyUI #16544. Workaround: VHS_VideoCombine (external ffmpeg), 2067 → 10393 kb/s at crf 12.
The turbo LoRA feels weaker than it should On a pruned base only 208 of 259 modules apply (80.3%). All 51 skipped ones are adaln_proj.linear — the timestep pathway a step-distilled LoRA exists to change. Per-key shape comparison; the LoRA metadata itself declares incompatible_base: MiniMax-H3 pruned_*.
Sampler stalls at 0% for 20+ minutes while the GPU reads 99% The wall is system RAM, not VRAM. Working set ≈ 19.5 GiB model + 15.0 GiB text encoder ≈ 34.5 GiB against 15.26 GiB of RAM — it pages. Same machine: 0.9–6 s/block fresh vs 212 s/block after ~1.7 h. Restarting ComfyUI before each run matters more than any sampler setting here.
Is 8 steps good enough? Composition is near-identical; the cost is time. 10 s / 768×1024: 8 steps ≈ 14.3 min vs 20 steps 33.8–43.5 min. Four 20-step runs measured: 2613 / 2283 / 2560 / 2029 s.

2 · Is my GPU working, or paging? (the 5-second test)

Utilisation is useless here — the counter includes the cores that move memory, so it reads 99–100% in both states. Watch board power instead:

Healthy — computing64–98 W
Paging — stalledflat 34–36 W
Median over a full stalled session32.8 W 534 samples at 10 s, min 0 / max 106.6

nvidia-smi --query-gpu=power.draw,utilization.gpu --format=csv -l 5
If power sits in the mid-30s while utilisation reads 99%, restart ComfyUI. Task Manager samples at ~1 Hz and misses long kernels — it will show 0%.

3 · Runtime predictor

Fit from 18 measured runs at 10 s / 768×1024:

Twall ≈ 102 + 34.1 × steps  seconds

—

Do not extrapolate this. It is one machine, one seed, one resolution, and it assumes the session is fresh. After ~1.7 h the same graph runs ~35× slower (212 s/block) — that regime is not on this curve. Longer clips and other aspect ratios are untested.

4 · Configuration that works here

Launch flag--disable-pinned-memory is required below 16 GB — ComfyUI sets MAX_PINNED_MEMORY = ram * 0.40, which kills the process.
Do NOT add--use-sage-attention, --use-flash-attention, --fast, --fp16-unet (see trap 2).
ResolutionShort side ≤ 768, area ≤ 768×1344, multiples of 32. The ResolutionSelector megapixel dial is a trap: 3:4 at 1.0 MP yields 896×1184, outside the trained envelope. Use 0.75 → 768×1024.
Before every runRestart ComfyUI. Measured: 0.9–6 s/block fresh vs 212 s/block after ~1.7 h, same graph.

5 · Data and code