mlx-community/LongCat-Video-Avatar-1.5-bf16
Part of the LongCat-Video-Avatar 1.5 — MLX collection.
LongCat-Video-Avatar-1.5-bf16 (MLX)
Apple MLX bf16 weights for LongCat-Video-Avatar-1.5 — Meituan's audio-driven video diffusion model — with the DMD step-distillation LoRA published as a separate file for runtime merging. Use this variant if you want to switch between the 50-step base inference path and the 8-step DMD distilled path at runtime, or to experiment with custom LoRA strengths.
For the simpler default (DMD pre-merged, 8-step only) see mlx-community/LongCat-Video-Avatar-1.5-bf16-dmd-merged.
TL;DR
Quick start
# 1. Pull weights (~46 GB)
hf download mlx-community/LongCat-Video-Avatar-1.5-bf16 \
--local-dir ./weights
# 2. Set up inference (Python 3.12)
git clone https://github.com/xocialize/longcat-avatar-mlx
cd longcat-avatar-mlx
python3.12 -m venv .venv
.venv/bin/pip install -e ".[parity]"
.venv/bin/pip install librosa Pillow imageio imageio-ffmpeg
# 3. Run end-to-end (base variant: pipeline merges LoRA on load)
.venv/bin/python scripts/run_inference.py \
--weights ./weights/.. \
--variant base \
--num-frames 93 \
--out output.mp4Programmatic LoRA merge:
from longcat_video_avatar.pipeline_mlx import LongCatAvatarPipeline
pipeline = LongCatAvatarPipeline(...) # standard 4-component load
# Optionally merge DMD LoRA at any strength
from safetensors import safe_open
import mlx.core as mx
lora_sd = {}
with safe_open("weights/lora/dmd_lora.safetensors", framework="numpy") as f:
for k in f.keys():
lora_sd[k] = mx.array(f.get_tensor(k))
result = pipeline.merge_dmd_lora(lora_sd, multiplier=1.0)
print(f"merged {len(result['applied'])} target modules")
# Now pipeline.dit is DMD-ready; use 8 sampling steps.Variants
Performance
Tested on Apple M5 Max (128 GB unified memory):
LoRA merge cost (one-time at load): ~2–3 seconds for 336 module updates.
Layout
LongCat-Video-Avatar-1.5-bf16/
├── README.md # this file
├── pipeline_config.json
├── vae/ # ~254 MB
├── text_encoder/ # ~11 GB total, 3 shards
├── audio_encoder/ # ~1.3 GB
├── dit/ # ~33 GB total, 7 shards (BASE, no LoRA)
├── lora/
│ └── dmd_lora.safetensors # ~2.5 GB (336 target modules)
├── scheduler/ # FlowMatchEuler, shift=7.0
└── tokenizer/ # umT5 tokenizer filesSource weights
Provenance, in case you want to verify or re-derive these weights:
Conversion recipe: `recipes/convert_longcat_avatar.py`. Run with --variant base --out <dir> to reproduce these weights from Meituan's PT sources.
Numerical conventions preserved from upstream
Same as the merged variant. See the dmd-merged card for the full list (_FP32 norms, velocity flip, disentangled CFG combiner, scheduler sentinel sigma fix).
License
MIT. Matches upstream Meituan LongCat-Video license. Full attribution in LICENSE.
Citation
@misc{longcat-avatar-mlx,
title = {longcat-avatar-mlx: Apple MLX port of LongCat-Video-Avatar-1.5},
author = {xocialize},
year = {2026},
url = {https://github.com/xocialize/longcat-avatar-mlx},
}
@techreport{meituan2026longcat,
title = {LongCat-Video-Avatar 1.5 Technical Report},
author = {Meituan LongCat Team},
institution = {Meituan},
year = {2026},
url = {https://github.com/meituan-longcat/LongCat-Video},
}