Instructions to use ddalcu/LTX-2.5-MLX-Serve-8bit with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- MLX
How to use ddalcu/LTX-2.5-MLX-Serve-8bit with MLX:
# Download the model from the Hub pip install huggingface_hub[hf_xet] huggingface-cli download --local-dir LTX-2.5-MLX-Serve-8bit ddalcu/LTX-2.5-MLX-Serve-8bit
- Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- LM Studio
- Atomic Chat
LTX-2.5, MLX 8-bit for mlx-serve
8-bit MLX conversion of mlx-community/ltx-2.5-mlx (itself a conversion of Lightricks/LTX-2.5), built for mlx-serve — the native Zig MLX server for Apple Silicon (mlxserve.com).
Joint audio+video: one model generates the frames and their soundtrack together. Text-to-video, image-to-video (first-frame conditioning) and audio-to-video, plus the two-stage pipelines, all served natively — no Python.
60 GB on disk, down from 110 GB. The upstream conversion ships bf16 only; this is the same pack at the 8-bit width mlx-serve's LTX engine reads, and it is self-contained — the text encoder is inside it, so nothing else downloads.
Why 8-bit
The 4-bit pack is the one to use on a Mac that cannot hold this one. On a Mac that can, this is the pack to reach for: measured off the two files, affine 4-bit group-64 injects about 9.9% relative error into each of the 1632 quantized linears (quantizer step over per-group weight std), against about 0.6% at 8 bits — compounded over 48 blocks and 8 denoising steps. Same prompt and seed, the difference is visible in faces, fur and fine texture.
It is close to free: the DiT is compute-bound at these token counts, so the wider weights cost a few percent of generation time, not a multiple (see Measured).
⚠️ License — read before use
These weights are Derivatives of LTX-2.5 under the LTX-2.x Community
License Agreement. A complete copy ships here as LICENSE.md, and
the Acceptable Use Policy it incorporates by reference is snapshotted as
ltx-acceptable-use-policy-snapshot-2026-08-12.pdf
(the version in effect at your time of use governs — check
Lightricks' current AUP).
Transfer notice (Agreement §3.5). Your use of these weights is subject to the LTX-2.x Community License Agreement. If you (aggregated across entities under common control) have annual revenues of US $10,000,000 or more, you are a "Commercial Entity" under the Agreement and must obtain a paid license from Lightricks before any use other than the Agreement's non-commercial-purpose carve-outs (testing, evaluation, non-commercial R&D in non-production environments). Sub-threshold commercial and production use is royalty-free under the Agreement's terms.
Further obligations that travel with these weights include (not exhaustive — read the license): machine-generated content disclosure (Attachment A §5), no removal or circumvention of any transparency/provenance features (§6), EU AI Act / CA AI Transparency Act responsibilities for providers/deployers (§6), and the Attachment A acceptable-use terms.
Modification notice (Agreement §3.3)
Modified from mlx-community/ltx-2.5-mlx. The change is quantization only — no
training, no fine-tuning, no architectural change:
- Both DiT variants: affine 8-bit, group size 64, applied to the 34 linear
projections in each of the 48 transformer blocks (1632 weights per variant) —
the six attention modules'
to_q/to_k/to_v/to_out/to_gate_logitsand the two feed-forwards'proj_in/proj_out. 38.0 GB → 20.6 GB each. - Text encoder (
gemma4-12b-ltx-v1/): affine 8-bit, group size 64, on every 2-D projection plus the embedding table (329 weights). 23.8 GB → 12.7 GB. - Kept at their shipped dtype: every adaLN table,
patchify_proj/proj_out, the q/k norms,keyframes_abs_pos_embedding, and all of the connector, both video VAEs, the audio VAE, the vocoder and both latent upscalers — copied byte-for-byte.
That split is the same recipe the established 2.3 MLX packs use
(only_transformer_blocks), which is what mlx-serve's loader expects: it treats a
tensor as quantized iff a sibling <name>.scales exists.
Conversion script: scripts/quantize_ltx25.py.
The embedded LTX-2.x license text in upstream file metadata is preserved.
Contents
| File | Contents |
|---|---|
transformer-distilled.safetensors |
distilled joint-AV DiT, 8-bit — fixed 8-step, CFG 1 (the one-stage default) |
transformer-dev.safetensors |
dev (full) joint-AV DiT, 8-bit — two-stage stage 1, takes CFG |
gemma4-12b-ltx-v1/ |
Lightricks-tuned Gemma-4-12B text encoder, 8-bit |
connector.safetensors |
text-embedding connectors + aggregate projections (bf16) |
vae_encoder / vae_decoder |
conv video VAE |
audio_vae / vocoder |
audio VAE + BigVGAN v2 |
spatial_upscaler_x2_v1_1 / temporal_upscaler_x2_v1_0 |
×2 latent upscalers |
vae_diffusion_decoder.safetensors |
DiffVAE 1-step x0 decoder (bf16) — shipped, not yet served |
What the engine reads, plus the diffusion decoder: mlx-serve does not implement
that one yet, and it rides along so the pack does not have to be re-published when
it does. The upstream repo's duration_head is not included.
Usage
mlx-serve --model <path>/LTX-2.5-MLX-Serve-8bit --serve
curl -X POST http://127.0.0.1:11434/v1/video/generations \
-H 'Content-Type: application/json' \
-d '{"prompt":"a red fox trots across fresh snow in a pine forest at golden hour",
"num_frames":97,"height":512,"width":768,"steps":8,"seed":42}'
Or pick LTX-Video 2.5 (8-bit) in the mlx-serve app's Video window.
Measured
M4 Max (128 GB): 768×512, 97 frames @ 24 fps, 8 steps, one-stage — 2m55s end to end, including the text encode and the VAE decode, with the generated soundtrack. The 4-bit pack on the same machine, same settings and same seed takes 2m49s (one run each, same session).
LTX's own pipeline defaults denoise a 1920×1088 canvas; 768×512 is a fast preset, not the model's ceiling. Bigger canvases cost roughly with the pixel count and then some — the DiT attends over one packed sequence.
Credits
All credit for the model to Lightricks — see the LTX-2 reference implementation. The MLX layout and the bf16 conversion this quantizes are mlx-community/ltx-2.5-mlx's.
- Downloads last month
- 67
Quantized