☰
ltx-2.5-mlx-q8 内存优化实战:int8 文本编码器 + DiT 流式加载,峰值压到 14.6GB 的完整方案
2026/10/30 2:24:48 网站建设 项目流程

ltx-2.5-mlx-q8 内存优化实战:int8 文本编码器 + DiT 流式加载,峰值压到 14.6GB 的完整方案

ltx-2.5-mlx-q8是面向 Apple Silicon(MLX)的LTX-2.5 文生视频内存优化组件全集:用int8 量化文本编码器搭配DiT 流式加载,把整次生成的内存峰值从约 24.8 GB 压到14.6 GB,让 24 GB / 32 GB 统一内存的 Mac 也能完整跑通 LTX-2.5 音视频生成。

这个仓库与官方 MLX 基础版的唯一差异就是:文本编码器从 bf16 换成了 int8 量化版(13.6 GB vs 23.8 GB),其余组件与基础版逐字节一致,只是在这里重复了一份以便独立解析。📦

一、为什么难跑:24.8 GB 的"几何无关"地板

LTX-2.5 的 DiT 是一个 48 层的音视频(AudioVideo)Transformer,配置见 config.json 和 embedded_config.json。在 DiT 流式加载的前提下,实测发现峰值内存由一个与分辨率/帧数无关的约 24.8 GB 地板决定——两个相差很大的片段(256×256×9 和 512×288×121)峰值相差不到 0.01 GB。

💡 如果是解码(decode)占主导,峰值会随分辨率变化;实测不随几何尺寸变化,说明"地板"来自bf16 文本编码器常驻显存。而 24.8 GB 直接超出了 24 GB 和 32 GB 机器的预算。

二、两个杠杆:int8 文本编码器 + DiT 流式加载

杠杆 1:Gemma-4 int8 文本编码器,一次省 10.2 GB

文本编码器是 Gemma-4 12B(gemma4-12b-ltx-v1,约 119 亿参数、总量 13.6 GB,分片与索引见 gemma4-12b-ltx-v1/model.safetensors.index.json),量化方案为int8、group 64、affine 模式,写在 gemma4-12b-ltx-v1/config.json 中。

量化配方里有一个关键细节:embed_tokens被刻意排除,保持 bf16。因为它的输出(hidden state 00)是 connector 直接消费的 49 个状态之一、也是全部 48 层的输入源,量化它会让该状态单独漂移。

杠杆 2:DiT 流式加载(必做,但不在本仓库)

⚠️ 本仓库不包含量化版 DiT。DiT 是独立的一条轴:量化 DiT 在另一个仓库mlx-community/ltx-2.5-mlx-ditq8,而"流式加载"(按块加载/换入换出权重)是运行时策略。两者都可以与 int8 编码器自由混搭——int8 编码器配 bf16 或 int8 DiT 都行。

为什么单独哪个都不行?

组合结果
只换 int8 编码器、DiT 常驻峰值仍由 DiT 主导,编码器"省了个寂寞"
只流式加载、编码器仍是 bf1624.8 GB 地板依旧
int8 编码器 + DiT 流式加载峰值 14.6 GB / 15.4 GB,24 GB、32 GB 机器全部达标✅

实测数据(DiT 流式加载下):

片段规格峰值内存
256×256×914.6 GB
512×288×12115.4 GB

三、14.6GB 实战:文件清单与要点

完整组件清单

文件作用
gemma4-12b-ltx-v1/int8 文本编码器(3 个 safetensors 分片 + tokenizer)
config.json / embedded_config.jsonDiT 模型与 RectifiedFlowScheduler 调度器配置
vae_encoder.safetensors / vae_decoder.safetensors视频 VAE 编解码器
vae_diffusion_decoder.safetensors扩散式 VAE 解码器(可选路线)
vae_decoder_pruna.safetensors可选:Pruna 精简解码器,解码约快 2 倍
audio_vae.safetensors / vocoder.safetensors音频 VAE 与声码器(LTX-2.5 支持音视频联合生成)
connector.safetensors / duration_head.safetensors文本条件连接器、时长预测头
spatial_upscaler_x2_v1_1.safetensors / temporal_upscaler_x2_v1_0.safetensors空间 / 时间 2 倍上采样器(多阶段分辨率与帧数扩展)

如需获取完整组件集:

git clone https://gitcode.com/hf_mirrors/mlx-community/ltx-2.5-mlx-q8

如何确认 int8 量化生效?

  • 看配置文件:gemma4-12b-ltx-v1/config.json 中bits: 8、group_size: 64、mode: affine;
  • 看状态指纹:connector 消费的 49 个状态中,state 00 严格等于 1.000000,说明embed_tokens确实保住了 bf16;
  • 看文件体积:编码器从 23.8 GB 降到 13.6 GB。

可选加速:Pruna 精简 VAE 解码器

vae_decoder_pruna.safetensors 是一个经过剪枝 + 蒸馏微调的解码器:解码速度约快 2 倍,解码阶段激活峰值明显更小。在 704×512×121 这种"解码成为瓶颈"的场景,峰值从21.1 GB 降到 14.5 GB,把原本超预算的运行拉回预算内。运行时通过LTX2Configuration.vaeDecoderPath或环境变量LTX_VAE_DECODER=pruna选用,在低内存档位(compact24、balanced32)上它就是默认解码器。

四、量化之后,画质掉多少?

  • 连接器输出(有效 token 位置)相似度 0.999820,对照 bf16 自身下限 0.999879——几乎贴着精度天花板;
  • ⚠️ 别用"整数组余弦相似度"评估:短提示词下 1024 个位置里大多是所有编码器臂完全相同的"学习寄存器",会把整数组指标稀释 3–30 倍;
  • 输出视频会移动,但不是变差:int8 输出与 bf16 不逐位相同(均值 −0.1421/σ 0.4253 vs −0.1274/0.4222),编码器变了、条件变了、轨迹自然不同,是一条"同样有效"的新视频。团队在 704×512 与 512×288 两套几何下做了盲评 4 对 A/B(含面部特写),判定可接受。

五、许可与合规提示

项目遵循LTX-2 Community License,见 LICENSE.md 及 ltx-acceptable-use-policy-snapshot-2026-08-12.pdf。它继承 Lightricks LTX-2.5 的条款,包含附件 A 的收入门槛与非竞争条款;§3 允许再分发,但必须原样传递这些条件。商用前请务必通读。

总结

📌 把 LTX-2.5 装进 24 GB Mac 的关键只有一句话:两个杠杆必须同时上——

  1. 文本编码器换 int8(本仓库gemma4-12b-ltx-v1,省 10.2 GB);
  2. DiT 流式加载(运行时策略,去掉常驻瓶颈);
  3. 有余量再叠 Pruna 解码器(解码快 2 倍、激活峰值更低)。

三者叠加,峰值 14.6 GB,画质盲评通过——小内存 Mac 跑 LTX-2.5 音视频生成,从此从"不可能"变成"开箱即用"。

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询