Apple MLX bf16 weights for
LongCat-Video —
Meituan's 13.6 B-parameter base text/image-to-video diffusion model — with the
cfg_step_lora and refinement_lora published as separate files for
runtime task switching.
For the companion audio-driven Avatar 1.5 port (built from the same DiT
architecture + audio cross-attention overlay), see
mlx-community/LongCat-Video-Avatar-1.5-bf16.
1# 1. Pull weights (~42 GB)
2hf download mlx-community/LongCat-Video-bf16 \
3 --local-dir ./weights
4
5# 2. Set up inference (Python 3.12)
6git clone https://github.com/xocialize/longcat-video-mlx
7cd longcat-video-mlx
8python3.12 -m venv .venv
9.venv/bin/pip install -e ".[parity]"
10
11# 3. Run text-to-video at 480p / 15fps
12.venv/bin/python scripts/run_t2v.py \
13 --weights ./weights/.. \
14 --prompt "A cat surfing on a wave at sunset, cinematic, 8k" \
15 --num-frames 93 \
16 --out output_t2v.mp4
17
18# 4. (Optional) Refinement pass to 720p / 30fps
19.venv/bin/python scripts/run_refine.py \
20 --weights ./weights/.. \
21 --stage1 output_t2v.npy \
22 --prompt "A cat surfing on a wave at sunset, cinematic, 8k" \
23 --out output_refined.mp4
All six pipelines share the same 13.6 B DiT weights. The conditioning input
and LoRA stack are what change:
1"bsa_params": {
2 "sparsity": 0.9375,
3 "chunk_3d_shape_q": [4, 4, 4],
4 "chunk_3d_shape_k": [4, 4, 4]
5}
Tokens are grouped into 4×4×4 = 64-token blocks along the patchified
(T_lat, H_lat, W_lat) grid. Sparsity 0.9375 keeps 6.25% of K/V blocks per
Q block via top-k routing on block-level mean-pooled scores. This makes
720p attention tractable; without it the 720p second pass would be too
expensive on Apple Silicon. (Tier A pure-MLX in this port is correctness-
correct but not yet kernel-fast; Tier B Metal kernel is in progress.)
1from longcat_video.pipeline_t2v import LongCatVideoT2VPipeline, T2VPipelineConfig
2from longcat_video.lora import compute_merged_delta, group_lora_tensors
3from safetensors import safe_open
4import mlx.core as mx
5
6pipeline = LongCatVideoT2VPipeline(...) # standard 3-component load
7
8# Merge cfg_step_lora for the fast path (8 steps, no CFG correction)
9lora_sd = {}
10with safe_open("weights/lora/cfg_step_lora.safetensors", framework="numpy") as f:
11 for k in f.keys():
12 lora_sd[k] = mx.array(f.get_tensor(k))
13
14# (LoRA merge helper covers both cfg_step_lora and refinement_lora —
15# load whichever path your variant uses.)
MIT — matches the upstream
LongCat-Video
license. Use of the model implies compliance with the upstream's responsible-use
guidelines (no generation of harmful, defamatory, or non-consensual content).