Views
No views yet
ltx-2-mlx runtime. It runs natively through MLX and Metal; CUDA is not required.Runtime pin: LTX-2.5 support is on theltx25branch. The publicmainbranch remains oriented toward LTX-2.3. Use the branch and commit below rather than an arbitrarymaincheckout.
- Runtime: https://github.com/MrMoferFRAN/ltx-2-mlx/tree/ltx25
- Branch:
ltx25- Pinned source commit:
57952288076766abe27dda3a774b2c24f7346977
ffmpeg.1git clone https://github.com/MrMoferFRAN/ltx-2-mlx.git
2cd ltx-2-mlx
3git checkout ltx25
4git checkout 57952288076766abe27dda3a774b2c24f7346977
5uv sync --all-extrastext_encoder/. The runtime detects it from text_encoder/config.json when model_type is gemma4; no separate Gemma download and no --gemma option are required for this model. Use mlx-lm >= 0.31.3 (the lockfile pins 0.31.3).8n + 1 frames, dimensions divisible by 32, and normally a 24 fps frame rate. Start with modest dimensions and increase them as memory allows.transformer-distilled.safetensors for both denoising stages: half-resolution generation, spatial upscale, then full-resolution refinement. --low-ram streams transformer blocks and is recommended on a 24 GB Apple Silicon Mac.1uv run --project ltx-2-mlx ltx-2-mlx generate --model MrMofer/ltx-2.5-mlx-q8 \
2 --prompt "A small sailboat crossing a calm sea at golden hour" \
3 --distilled --low-ram --height 480 --width 704 --frames 97 --frame-rate 24 \
4 --output distilled.mp4transformer-dev.safetensors for stage 1: the dev model runs with CFG at half resolution, then the model is refined at full resolution with the LTX-2.5 distilled LoRA (ltx-2.5-22b-distilled-lora-450.safetensors).1uv run --project ltx-2-mlx ltx-2-mlx generate --model MrMofer/ltx-2.5-mlx-q8 \
2 --prompt "A small sailboat crossing a calm sea at golden hour" \
3 --two-stage --low-ram --height 480 --width 704 --frames 97 --frame-rate 24 \
4 --output two-stage.mp4ltx-2-mlx:| Path | Role | Representation |
|---|---|---|
transformer-distilled.safetensors | Distilled 22B audio/video transformer | q8 affine MLX weights, group size 64 |
transformer-dev.safetensors | Dev 22B audio/video transformer for CFG modes | q8 affine MLX weights, group size 64 |
ltx-2.5-22b-distilled-lora-450.safetensors | LTX-2.5 distilled LoRA for stage 2 | LoRA safetensors; applied at runtime |
text_encoder/ | Bundled Gemma 4 LTX text encoder and tokenizer | 4-bit affine MLX weights, group size 64 |
connector.safetensors | Text-to-video/audio feature connector | bf16 |
vae_encoder.safetensors, vae_decoder.safetensors | Video VAE | bf16 |
audio_vae.safetensors, vocoder.safetensors | Audio VAE and vocoder | bf16 |
spatial_upscaler_x2.safetensors, temporal_upscaler_x2.safetensors | Latent upscalers | bf16 |
duration_head.safetensors | Audio/video duration prediction head | bf16 |
config.json, embedded_config.json, *_config.json | Runtime and component configuration | JSON |
text_encoder/config.json as 4-bit affine, group size 64. Supporting components remain bf16 unless their individual configuration says otherwise.--distilled: distilled two-stage path, no CFG. It uses transformer-distilled.safetensors in stage 1 and stage 2.--two-stage: dev transformer + CFG at half resolution, upscale, then distilled-LoRA refinement. The LTX-2.5 stage-2 LoRA is ltx-2.5-22b-distilled-lora-450.safetensors.--two-stages-hq: the same dev/LoRA two-stage arrangement, but stage 1 uses the higher-quality second-order res_2s sampler.--one-stage: dev transformer + CFG directly at the target resolution; it does not use the distilled LoRA as a second stage.a2v: audio-to-video. The normal two-stage path requires the dev transformer and uses the distilled LoRA for stage 2; a2v --one-stage also requires the dev transformer and skips stage 2.--two-stage, --two-stages-hq, or the normal a2v path, stage 2 is selected as follows:--low-ram, the runtime loads the dev transformer and applies the 450-step distilled LoRA;--low-ram and the default LoRA strength of 1.0, it streams the pre-fused transformer-distilled.safetensors instead;--low-ram and a non-default --distilled-lora-strength, it keeps the dev stream and attaches the 450-step LoRA at that strength during block binding.transformer-dev.safetensors file is therefore required for all dev/CFG modes (--two-stage, --two-stages-hq, --one-stage, and standard a2v), while --distilled can run from the distilled checkpoint alone.EulerAncestralDiffusionStep with eta=1.0 and s_noise=1.0. It performs the default 8 ancestral steps and draws fresh per-step noise from the pipeline seed stream (the implementation uses seed + 10000 for that stream). Stage 2 uses the deterministic three-step refinement schedule.Euler. The dev --two-stage path uses guided deterministic Euler in stage 1, --two-stages-hq uses res_2s, and their stage 2 is deterministic.--low-ram is recommended for q8 generation on a Mac with 24 GB unified memory because it streams transformer blocks from the safetensors file. This is a recommendation, not a claim of direct testing on every 24 GB configuration; runtime validation has been performed on an M4 Max. Actual limits depend on resolution, frame count, pipeline mode, and other applications using unified memory.LICENSE.md in this repository and the upstream LTX-2 license, including the acceptable-use and redistribution terms, before downloading, modifying, or using the weights commercially. This is an unofficial community conversion and does not imply endorsement by Lightricks.