Instructions to use baa-ai/LTX-2.3-22B-RAM-12GB-MLX with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- MLX
How to use baa-ai/LTX-2.3-22B-RAM-12GB-MLX with MLX:
# Download the model from the Hub pip install huggingface_hub[hf_xet] hf download baa-ai/LTX-2.3-22B-RAM-12GB-MLX --local-dir LTX-2.3-22B-RAM-12GB-MLX
- Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- LM Studio
- Atomic Chat
|
Download README.md from baa-ai/LTX-2.3-22B-RAM-12GB-MLX: direct link, hf CLI and curl.
- Browser
- Download file 5.61 kB
-
https://huggingface.co/baa-ai/LTX-2.3-22B-RAM-12GB-MLX/resolve/debd30eee97a1633f53ef571f78a7d52ff64079f/README.md
- Command line
-
hf download hf://baa-ai/LTX-2.3-22B-RAM-12GB-MLX@debd30eee97a1633f53ef571f78a7d52ff64079f/README.md
-
curl -L -o README.md https://huggingface.co/baa-ai/LTX-2.3-22B-RAM-12GB-MLX/resolve/debd30eee97a1633f53ef571f78a7d52ff64079f/README.md
5.61 kB
| library_name: mlx | |
| license: other | |
| base_model: Lightricks/LTX-2.3 | |
| tags: | |
| - mlx | |
| - apple-silicon | |
| - safetensors | |
| - video-generation | |
| - quantized | |
| - ram-quantization | |
| - mixed-precision | |
| pipeline_tag: text-to-video | |
| # baa-ai/LTX-2.3-MLX-RAM-12GB | |
| Mixed-precision MLX quantization of [Lightricks/LTX-2.3](https://huggingface.co/Lightricks/LTX-2.3), targeting ~12 GB RAM using the [RAM Pipeline](https://github.com/tomkay/RAM) β a sensitivity-driven knapsack allocator that assigns each tensor its optimal bit width independently. | |
| Runs on Apple Silicon (M1 and later). Uses [ltx-2-mlx](https://github.com/dgrauet/ltx-2-mlx) for inference. | |
| ## Model Details | |
| | Property | Value | | |
| |---|---| | |
| | Base model | Lightricks/LTX-2.3 (22B joint audio-video DiT) | | |
| | Architecture | LTX-2.3-22B-AudioVideoTransformer | | |
| | Transformer blocks | 48 | | |
| | Quantization method | RAM mixed-precision MCKP knapsack | | |
| | Sensitivity metric | Kernel CKA (kernel-csk) | | |
| | Group size | 64 | | |
| | Quantized layers | 1,415 of 1,760 transformer tensors | | |
| | Transformer file size | 9.3 GB | | |
| ## Quantization | |
| The transformer uses per-layer mixed precision. Bit widths are assigned per-tensor by solving a Multiple-Choice Knapsack Problem (MCKP) against a budget constraint, using Kernel Centered Kernel Alignment (CKA) as the sensitivity signal. | |
| **Bit distribution (transformer layers):** | |
| | Bits | Layers | % | | |
| |---|---|---| | |
| | 2 | 29 | 2.1% | | |
| | 3 | 225 | 15.9% | | |
| | 4 | 348 | 24.6% | | |
| | 5 | 631 | 44.6% | | |
| | 6 | 125 | 8.8% | | |
| | 8 | 57 | 4.0% | | |
| Average: **4.6 bpw** across quantized layers. Highest-sensitivity tensors (first/last layers, K/V projections, vision bridge) are protected at higher bit widths; lower-sensitivity layers are pushed to 2β3 bit. | |
| The connector, VAE, audio VAE, and vocoder are kept at full BF16 precision. | |
| ## Requirements | |
| - macOS 13+ on Apple Silicon (M1 / M2 / M3 / M4) | |
| - Python 3.10+ | |
| - ~14 GB unified memory recommended (12 GB transformer + overhead) | |
| ```bash | |
| pip install mlx mlx-lm flask ltx-pipelines-mlx ltx-core-mlx | |
| ``` | |
| ## Quick Start β Web App | |
| The included `webapp.py` provides a browser UI with live generation log, video playback, and job history. To compare against the 24 GB version, download it alongside this model. | |
| ```bash | |
| # Download this model | |
| git clone https://huggingface.co/baa-ai/LTX-2.3-MLX-RAM-12GB | |
| # Optional: also download the 24 GB version for side-by-side comparison | |
| git clone https://huggingface.co/baa-ai/LTX-2.3-MLX-RAM-24GB | |
| # Run the web app (single model) | |
| cd LTX-2.3-MLX-RAM-12GB | |
| python webapp.py | |
| # Or with comparison enabled | |
| python webapp.py --compare-dir ../LTX-2.3-MLX-RAM-24GB | |
| # Open http://localhost:7860 | |
| ``` | |
| The web app lets you: | |
| - Enter a prompt and set resolution, duration, FPS, and seed | |
| - Watch the generation log stream live | |
| - Play the generated video directly in the browser | |
| - Switch between models for comparison (if `--compare-dir` is set) | |
| - Browse job history and reload past settings | |
| ## Quick Start β CLI | |
| ```bash | |
| python generate.py \ | |
| --model-dir /path/to/LTX-2.3-MLX-RAM-12GB \ | |
| --prompt "A serene mountain lake at sunrise, mist over calm water, pine trees reflected" \ | |
| --height 480 --width 704 --num-frames 65 \ | |
| --output output.mp4 | |
| ``` | |
| **Common resolution + frame count combinations:** | |
| | Label | Height | Width | Frames | Duration @ 24fps | | |
| |---|---|---|---|---| | |
| | Tiny (test) | 256 | 256 | 33 | 1.4s | | |
| | 480p short | 480 | 704 | 65 | 2.7s | | |
| | 480p medium | 480 | 704 | 97 | 4.0s | | |
| | 720p short | 720 | 1280 | 65 | 2.7s | | |
| Frame count must follow the formula `32k + 1` (33, 65, 97, 129, β¦). | |
| ## Files in This Repo | |
| | File | Size | Description | | |
| |---|---|---| | |
| | `transformer-distilled.safetensors` | 9.3 GB | RAM mixed-precision quantized DiT transformer | | |
| | `connector.safetensors` | 5.9 GB | Audio/video embedding connectors (BF16) | | |
| | `vae_decoder.safetensors` | 777 MB | Video VAE decoder (BF16) | | |
| | `vae_encoder.safetensors` | 608 MB | Video VAE encoder (BF16) | | |
| | `audio_vae.safetensors` | 102 MB | Audio VAE (BF16) | | |
| | `vocoder.safetensors` | 246 MB | Vocoder + bandwidth extension (BF16) | | |
| | `spatial_upscaler_x2_v1_1.safetensors` | 950 MB | Optional 2Γ spatial upscaler | | |
| | `split_model.json` | β | Pipeline model structure descriptor | | |
| | `generate.py` | β | Single-file generation script (CLI) | | |
| | `webapp.py` | β | Flask web UI for interactive generation | | |
| ## Technical Notes | |
| The [RAM Pipeline](https://github.com/tomkay/RAM) probes each tensor's sensitivity to quantization at 2/3/4/5/6/8 bits using Kernel CKA on calibration activations, builds a per-tensor sensitivity manifest, then solves a MCKP knapsack to find the Pareto-optimal bit assignment for the target memory budget. | |
| Key invariants applied during allocation: | |
| - **2-bit veto**: tensors with cosine divergence > 0.0001 at 2-bit are never assigned 2 bits | |
| - **Saturation gate**: tensors whose quality plateaus early receive no further bit upgrades | |
| - **Architectural priors**: first/last layer (3Γ), global-attention K/V (3Γ), vision bridge (2Γ) β these tensors resist low-bit allocation | |
| Inference uses a custom `apply_mixed_precision_quantization` that detects each layer's bit width from its packed weight shape and calls `mlx.nn.quantize` once per unique bit width, enabling variable-precision loading into the `ltx-2-mlx` pipeline without any format modifications. | |
| ## Attribution | |
| - Base model: [Lightricks/LTX-2.3](https://huggingface.co/Lightricks/LTX-2.3) β see their license | |
| - MLX inference: [dgrauet/ltx-2-mlx](https://github.com/dgrauet/ltx-2-mlx) | |
| - Reference MLX weights: [dgrauet/ltx-2.3-mlx-q8](https://huggingface.co/dgrauet/ltx-2.3-mlx-q8) | |