CoolFace
Modelpublic

rockerBOO/ltx-2.5-nvfp4-convrot

sourceHugging Faceotherupdated 1mo agoView on Hugging Face
3likes3.1kdownloads
Model Card

LTX-2.5 — NVFP4 + ConvRot INT8 quant for ComfyUI

Quantized version of Lightricks' LTX-2.5 (22B audio-video diffusion transformer) for ComfyUI, using NVFP4 for most weights and INT8+ConvRot for attention — smaller and faster than the bf16 original with minimal quality loss. Unlike Lightricks' own official quants, blocks 0, 1, 46 and 47 are kept full bf16 precision here.

[!NOTE] dev variant is planned but not started yet.

Files

FileSizeStatus
ltx-2.5-22b-distilled-transformer_nvfp4_convrot_int8.safetensors22 GBUploaded, tested in ComfyUI
ltx-2.5-22b-dev-transformer_nvfp4_convrot_int8.safetensors~22 GB (est.)Planned

Only the transformer is requantized here. Grab the VAEs and text encoders straight from Lightricks/LTX-2.5 and Comfy-Org/gemma-4 — those are used as-published, not touched by us.

Requirements

Blackwell GPU (SM >= 10.0/12.0) required for inference — RTX 50-series, B100/B200. Same as our other NVFP4 releases.

License

LTX-2 Community License Agreement (included in this repo), inherited from Lightricks/LTX-2.5.


Quantization method

No quantization was run ourselves for this file — it's spliced together from tensors in Lightricks' own two official pre-quantized releases, since both already quantize the same tensor set we wanted (verified against the real safetensors headers, not assumed):

  • Base: ltx-2.5-22b-distilled-transformer-comfy-int8-convrot.safetensors — keeps its attention tensors (INT8+ConvRot) and everything Lightricks itself never quantizes (norms, gate-logits, adaln, patchify/proj_out, scale-shift tables).
  • Feed-forward layers (ff.net.0.proj/ff.net.2, audio_ff.net.0.proj/audio_ff.net.2, incl. embeddings_connector) swapped in from ltx-2.5-22b-distilled-transformer-nvfp4.safetensors.
  • Blocks 0, 1, 46, 47 overridden back to full bf16 (attention, feed-forward, everything) from the bf16 source, superseding both official files for just those 4 blocks — Lightricks quantizes all 48 blocks uniformly; we chose not to for the first/last two.

Two things surfaced during verification that are worth recording:

  1. 1.Lightricks' own NVFP4 file isn't uniform either. 56 of its 224 feed-forward tensors are plain bf16, not NVFP4: blocks 42-47 (both video and audio FF) and all of embeddings_connector (video+audio, 8 sub-blocks each). This wasn't documented anywhere we could find — only visible by reading the file's own tensor headers. Our output inherits this (blocks 42-45 end up FF-bf16/attention-INT8; blocks 46-47 are already fully bf16 from our own override anyway).
  2. 2.A missing `.comfy_quant` marker silently breaks NVFP4 loading in a mixed-format file. Lightricks' standalone NVFP4 file has no per-tensor .comfy_quant blob at all — ComfyUI evidently auto-detects a uniformly-NVFP4 checkpoint some other way. But comfy/ops.py's generic per-layer loader (if layer_conf is None: load as plain weight, no error) is what actually runs once a checkpoint contains any .comfy_quant-bearing tensors (i.e. as soon as INT8 layers are mixed in) — so NVFP4 tensors without their own marker silently loaded as raw packed weights, producing a mat1 and mat2 shapes cannot be multiplied error deep in the first sampler node, not a load-time failure. Fixed by adding a synthetic {"format": "nvfp4"} .comfy_quant tensor to all 160 NVFP4-tagged feed-forward tensors. Confirmed working via a full ComfyUI API workflow run (image-to-video + audio, video_ltx2_5_i2v_api.json) after the fix — first attempt failed with exactly this error, second attempt (post-fix) completed and produced valid output video/audio files.

Final composition (verified against the assembled file's own tensor headers):

BlocksAttentionFeed-forward
0, 1, 46, 47BF16 (our override)BF16 (our override)
2-41INT8 + ConvRotNVFP4
42-45 + embeddings_connectorINT8 + ConvRotBF16 (inherited from Lightricks' own NVFP4 file)

Quality (beyond functional load/generate correctness) has not been separately assessed.