ltx-2.5-mlx的22B联合音视频DiT架构深潜:Split RoPE、门控注意力与8层Connector
ltx-2.5-mlx是 Lightricks LTX-2.5 联合音视频生成模型(22B 参数的 DiT 主干)的 Apple Silicon MLX 格式转换版,支持文生视频、图生视频与音画同步生成。本文带你快速拆解它的三大架构亮点:Split RoPE位置编码、门控注意力机制,以及负责文本嵌入融合的8层 Connector,帮你理解这个"22B 联合音视频 DiT"在 Mac 上跑起来的完整原理。
一、先认清仓库:ltx-2.5-mlx 的组件布局
仓库采用"按组件拆分"的布局,每个.safetensors文件对应管线中的一个模块,核心规格汇总如下:
| 文件 | 内容 | 规模 |
|---|---|---|
| transformer-distilled.safetensors | 蒸馏版联合音视频 DiT(固定 8 步、CFG=1,出片快) | 22B |
| transformer-dev.safetensors | 完整版(dev)联合音视频 DiT | 22B |
| gemma4-12b-ltx-v1/ | Lightricks 调优的 Gemma-4 统一文本编码器 | 12B |
| connector.safetensors | 文本嵌入 Connector + 聚合投影 | — |
| vae_encoder.safetensors / vae_decoder.safetensors | 卷积视频 VAE(与 LTX-2.3 字节一致) | 726M |
| vae_diffusion_decoder.safetensors | DiffVAE 单步 x0 视频解码器 | 417M |
| audio_vae.safetensors / vocoder.safetensors | 音频 VAE + BigVGAN v2 声码器 | 182M |
| spatial_upscaler_x2_v1_1.safetensors / temporal_upscaler_x2_v1_0.safetensors | 潜空间 ×2 空间/时间上采样器 | 498M / 131M |
| duration_head.safetensors | 提示词→时长预测头 | 1.9M |
| config.json / embedded_config.json | 管线与 Transformer 配置 | — |
💡 两个 DiT 变体参数量相同:distilled 版牺牲一点上限换 8 步快速出片,dev 版则保留完整的采样质量,可按场景切换。
二、22B 联合音视频 DiT:一张规格表看懂主干
embedded_config.json 中声明的主干是AVTransformer3DModel——"AV"即 Audio-Video,音视频共享同一条扩散主干,而不是各自独立的模型。关键规格:
| 维度 | 视频分支 | 音频分支 |
|---|---|---|
| 注意力头数 × 头维度 | 32 × 128 | 32 × 64 |
| 交叉注意力维度 | 4096 | 2048 |
| 输入/输出通道 | 128 | 128 |
| FFN bias | 关闭(ff_bias: false) | 开启(audio_ff_bias: true) |
其他值得注意的设计(均来自 config.json 与 embedded_config.json):
- 48 层 Transformer,
qk_norm采用 RMSNorm,激活函数gelu-approximate; - 音视频交叉注意力:
use_audio_video_cross_attention: true,配合av_cross_ada_norm: true,让画面与声音在每一层互相"听见"对方,这是音画同步的底层保障; - 因果时间定位:
causal_temporal_positioning: true,时间维度按因果方向建模,支持多镜头与逐帧渐进生成; - 调度器:
RectifiedFlowScheduler+LinearQuadratic采样器,1000 训练步。
三、Split RoPE:音视频"各拿各的"位置编码
在 config.json 中可以看到rope_type: "split"(connector_rope_type: "SPLIT"),这就是标题里的Split RoPE:
- 视频用三维 RoPE:
positional_embedding_max_pos: [20, 2048, 2048],分别对应时间帧数、高、宽三个轴,theta 为 10000; - 音频用一维 RoPE:
audio_positional_embedding_max_pos: [20],只编码时间轴; - 音视频位置编码分离生成、各自独立,避免把一维的音频硬塞进三维网格产生无效的空间维度;
- 频表以
float64精度计算(frequencies_precision: "float64"),保证旋转矩阵数值稳定。
此外use_keyframes_abs_pos_embedding: true额外引入关键帧绝对位置嵌入:LTX-2.5 支持在视频中放置"生成的关键帧槽位",这些槽位会获得完整潜帧 token 开销来换取关键画面,绝对位置嵌入让模型明确知道"关键帧在第几帧"。
四、门控注意力:给注意力输出加装"音量旋钮"
配置中两处关键开关:
apply_gated_attention: true——主干 DiT 的注意力输出先过一个可学习门控再写回残差流;connector_apply_gated_attention: true——Connector 内部的注意力同样启用门控。
通俗理解:门控注意力给每层注意力的输出加了一个"音量旋钮",让网络自己决定这一层注意力的信息注入多少,无效或有害的注意力贡献可以被压低。在 22B 这种规模、48 层的深度下,这种细粒度控制对训练稳定性和长序列(2048×2048 空间分辨率)下的信号质量都很关键。
与之配套的还有cross_attention_adaln: true:交叉注意力中的调制参数由时间步条件动态生成(AdaLN),使"扩散去噪到第几步"这一信息能精确影响每一次文本/音视频交叉注意力。
五、8层 Connector:文本嵌入进入 22B 主干前的"中转站"
LTX-2.5 没有直接拿单个隐藏层当提示词嵌入,而是走了一条"投影 → Connector → 聚合"的通路:
- 文本编码器:gemma4-12b-ltx-v1/ 是 Lightricks 面向 LTX 调优的 Gemma-4 统一模型(48 层、隐藏维度 3840、262144 词表、1024 滑动窗口注意力与 6 层全局注意力交替),管线从中抽取 49 个隐藏状态送入下游;
- 预投影:
caption_proj_before_connector: true,先做通道对齐(caption_channels: 3840); - 8层 Connector:
connector_num_layers: 8,注意力 32 头 × 128 维,位置编码最大范围 4096,并带有128 个可学习寄存器(connector_num_learnable_registers: 128)——寄存器充当全局"信息集散地",帮助跨 token 聚合整段提示词语义; - 音频侧独立 Connector:
audio_connector_num_attention_heads: 32× 64 维,对应音频分支 2048 的交叉注意力维度。
connector.safetensors 中承载的全部就是这些 Connector 权重与聚合投影。官方已对 PyTorch 参考实现做过逐组件对齐验证:49 个隐藏状态平均余弦相似度 0.999985,投影层 ≥0.99996。
六、上手指南:内存预算与第一次生成
📌内存先看这里(128 GB 统一内存、448×320×9 帧、bf16 实测):
| 场景 | 峰值内存 |
|---|---|
| 文本编码器与 DiT 常驻同存 | 62.40 GB |
| 编码阶段临时卸载 DiT(Swift 端默认开启) | 40.66 GB |
两个省内存抓手可叠加:
- 分阶段卸载 DiT:省 34.8% 峰值,输出逐位一致、无质量损失;
- 文本编码器 int8 量化:12B 编码器从 24.4 GB 降到 14.2 GB,端到端峰值 52.18 GB,盲测感知中性。⚠️ 官方明确拒绝 int4(有效 token 余弦 0.996728 不达标);若自行量化,记得排除
embed_tokens不量化。
消费端(Python/Swift 的ltx-2-mlx,分支ltx-2.5)典型生成命令:
git clone https://gitcode.com/hf_mirrors/mlx-community/ltx-2.5-mlx # 拉取本仓库权重 uv run ltx-2-mlx generate \ --model mlx-community/ltx-2.5-mlx \ --distilled \ --prompt "a red fox standing in deep snow, closeup wildlife photography, golden hour" \ -H 512 -W 768 -f 121 --frame-rate 24 -o fox.mp4提示:--distilled使用 8 步蒸馏 DiT 出片最快;--num-generated-keyframes N可插入 N 个生成关键帧槽位(对应上文的关键帧绝对位置嵌入)。
七、许可与修改声明:使用前必读
⚖️ 本仓库全部权重是 LTX-2.5 的衍生作品,遵循LTX-2.x Community License(2026-08-11 版,见 LICENSE.md;可接受使用政策快照见 ltx-acceptable-use-policy-snapshot-2026-08-12.pdf):
- 年营收 ≥ 1000 万美元的"商业实体"须先取得 Lightricks 付费许可,仅限测试、评估与非商业研发等例外场景免费使用;
- 所有张量文件均经过 MLX 布局转换(通道后置卷积、键名重命名、融合投影拆分),未做任何数值再训练;
- 机器生成内容披露、溯源水印不得移除,EU AI Act 等合规义务由部署方承担。
总结
ltx-2.5-mlx 把 22B 联合音视频 DiT 完整搬上了 Apple Silicon:Split RoPE为音视频分别定制位置编码,门控注意力为 48 层深度信号质量上保险,8层 Connector + 128 可学习寄存器让 49 个 Gemma-4 隐藏状态平滑汇入 4096 维主干。理解了这份架构,你也就掌握了在 Mac 上高效运行 LTX-2.5 的关键——从 8 步蒸馏快速出片,到 128 GB 内存下的峰值预算管理,一切都写在这些配置文件里了。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考