
Diffusers 中的 HeliosTransformer3DModel14B 实时自回归视频扩散 Transformer 全解析【免费下载链接】diffusers Diffusers: State-of-the-art diffusion models for image, video, and audio generation in PyTorch.项目地址: https://gitcode.com/GitHub_Trending/di/diffusersHeliosTransformer3DModel 是 Diffusers 为 Helios 视频生成模型提供的 3D 视频类数据 Transformer 主干实现支持文生视频T2V、图生视频I2V与视频生视频V2V三种任务是 HeliosPipeline 与HeliosPyramidPipeline的核心去噪网络。阅读本文后你将掌握该模型的三种官方权重Base / Mid / Distilled的加载方式、完整配置参数含义、内部架构3D Patch Embedding、多尺度历史记忆分支、3D RoPE、AdaLN 自注意力块以及它与 Helios 调度器、金字塔采样流水线的协同方式。模型背景为什么需要 HeliosTransformer3DModelHelios 是北京大学与字节跳动等机构提出的 14B 规模实时长视频生成模型论文Helios: Real Real-Time Long Video Generation Model。HeliosTransformer3DModel 是它在 Diffusers 中的 Transformer 主干实现其设计围绕三个核心目标长视频抗漂移不依赖 self-forcing、误差库、关键帧采样等常见抗漂移启发式而是通过显式模拟漂移的训练策略与多尺度历史上下文压缩来保持分钟级视频的连贯性实时生成不使用 KV-cache、因果掩码、稀疏注意力等标准加速手段而是通过大幅压缩历史与噪声上下文、减少采样步数来实现低计算成本统一输入表示以自回归扩散方式统一支持 T2V、I2V、V2V。从源码结构看HeliosTransformer3DModel 的输入是五维张量(batch, channels, frames, height, width)这与 Diffusers 中大多数面向单帧图像的 2D Transformer如 Transformer2DModel有本质区别是其命名为 3D 的原因。快速上手加载 HeliosTransformer3DModel官方文档给出了三种官方权重的加载方式分别对应质量优先折中效率优先三个档位。完整的加载代码位于 helios_transformer3d.mdfrom diffusers import HeliosTransformer3DModel # Best Quality最优质量 transformer HeliosTransformer3DModel.from_pretrained(BestWishYsh/Helios-Base, subfoldertransformer, dtypetorch.bfloat16) # Intermediate Weight折中权重 transformer HeliosTransformer3DModel.from_pretrained(BestWishYsh/Helios-Mid, subfoldertransformer, dtypetorch.bfloat16) # Best Efficiency最优效率 transformer HeliosTransformer3DModel.from_pretrained(BestWishYsh/Helios-Distilled, subfoldertransformer, dtypetorch.bfloat16)三个变体的差异依据 pipeline 文档 与中文使用指南 docs/source/zh/using-diffusers/helios.md权重定位预测目标配合调度器生成方式Helios-Base质量优先v-predictionHeliosScheduler 标准 CFG50 步Helios-Mid折中v-predictionHeliosScheduler CFG-Zero*金字塔 3×20 步Helios-Distilled效率优先x0-predictionHeliosDMDScheduler金字塔 3×2 步加载时使用subfoldertransformer是因为 Helios 仓库把 VAE、文本编码器与 Transformer 分别存放在不同的子目录中。配合完整推理时通常用HeliosPipeline.from_pretrained(...)一次性加载全部组件再通过pipeline.transformer访问该模型下文与 Pipeline 集成一节给出示例。架构深度解析从源码看 HeliosTransformer3DModel核心实现位于 src/diffusers/models/transformers/transformer_helios.py。整体前向流程可归纳为 8 个阶段输入补丁化 → 历史潜变量分支 → 条件嵌入 → Transformer 块 → 输出归一化 → 反补丁化unpatchify。1. 3D Patch Embedding 与多尺度历史记忆分支模型首先用nn.Conv3d将噪声潜变量切成 3D patch默认patch_size(1, 2, 2)即时间维不切分、空间维 2×2把形状从(B, C, T, H, W)转为 token 序列self.patch_embedding nn.Conv3d(in_channels, inner_dim, kernel_sizepatch_size, stridepatch_size)更具特色的是Multi-Term Memory Patch多尺度历史记忆分支has_multi_term_memory_patchTrue时启用。它用三组不同 stride 的 3D 卷积patch_short/patch_mid/patch_long分别压缩短、中、长历史上下文并在前向时按时间顺序拼接到当前 token 序列之前对应forward参数latents_history_short/mid/long与indices_latents_history_*。这样模型可以看到不同时间尺度上的历史帧从根本上抑制长视频漂移与重复运动——这正是 Helios 宣称无需自强制等启发式的架构基础self.patch_short nn.Conv3d(in_channels, inner_dim, kernel_sizepatch_size, stridepatch_size) self.patch_mid nn.Conv3d(in_channels, inner_dim, kernel_sizetuple(2 * p for p in patch_size), stridetuple(2 * p for p in patch_size)) self.patch_long nn.Conv3d(in_channels, inner_dim, kernel_sizetuple(4 * p for p in patch_size), stridetuple(4 * p for p in patch_size))中间与长分支在进入卷积前会先通过pad_for_3d_conv做 replicate 填充再对 rotary 位置编码做center_down_sample_3d3D 平均池化以对齐空间尺度。2. 3D 旋转位置编码HeliosRotaryPosEmbedHeliosRotaryPosEmbed实现了时间-空间三维旋转位置编码三个维度T/Y/X分别使用独立的频率基底freqs_base_t / freqs_base_y / freqs_base_x频率公式为1 / theta^(arange(0, dim, 2)/dim)。源码中特别注明位置网格的 einsum 计算被强制在 float32 下进行因为 bfloat16 无法表示超过 256 的连续整数否则长视频中较远帧的位置会坍缩到同一频率导致位置编码失效——这是长视频生成场景下的一个关键数值精度细节。前向时frame_indices与空间 meshgrid 扩展成(B, T, H, W)的位置网格分别计算 T/Y/X 的 cos/sin 频率并拼接。最终在注意力处理器中通过apply_rotary_emb_transposed作用到 query 与 key 上。3. HeliosTransformerBlockAdaLN 与双层注意力每个HeliosTransformerBlock由三个子模块组成对应HeliosAttention定义于 transformer_helios.py 的HeliosAttention类自注意力attn1Q/K 做 RMSNormqk_normrms_norm_across_heads采用 RoPE 位置编码可选is_amplify_history模式对历史 token 的 key 施加可学习的缩放history_key_scale支持scalar或per_head两种粒度最大缩放 10.0用于蒸馏模型放大首块历史信息交叉注意力attn2以文本嵌入为 KVadded_kv_proj_dim提供额外的 KV 投影支持guidance_cross_attn——此时仅对当前块做交叉注意力历史块保持原样避免 CFG 对历史上下文的重复计算前馈网络ffnFeedForward搭配 GELU-approx 激活。时间条件通过 AdaLN 注入scale_shift_table形状(1, 6, dim)与时间投影按通道切分成 6 组 shift/scale/gate分别调制自注意力前的 LayerNorm、自注意力残差门控、FFN 前的 LayerNorm 与 FFN 残差门控。所有 LayerNorm 均采用 FP32 计算FP32LayerNorm并在_keep_in_fp32_modules中列出以保证 14B 规模下 bf16 训练的数值稳定性。注意力计算统一走HeliosAttnProcessor基于scaled_dot_product_attention要求 PyTorch 2.0并通过dispatch_attention_fn支持切换 FlashAttention、SageAttention 等后端见下文速度优化。4. 输出层与反补丁化HeliosOutputNorm同样使用 AdaLNshift/scale 由时间嵌入按original_context_length截取之后proj_out线性层把每个 token 映射回out_channels * prod(patch_size)通道最后 reshape permute 完成 unpatchify恢复为(B, C, T, H, W)的视频潜变量输出封装为Transformer2DModelOutput(sample...)该类定义于 modeling_outputs.py。5. 历史时间步归零与梯度检查点zero_history_timestepTrue时历史上下文 token 的时间步被置为 0timestep_t0即历史帧按无噪声条件参与计算这与自回归去噪的语义一致。模型还内置了梯度检查点支持_supports_gradient_checkpointingTrue与 Layerwise Casting 模式_skip_layerwise_casting_patterns排除 patch 与条件嵌入层方便在训练/微调场景下节省显存。配置参数完整说明以下参数表依据 transformer_helios.py 中HeliosTransformer3DModel.__init__的完整签名整理括号内为默认值参数默认值含义patch_size(1, 2, 2)3D patch 尺寸t, h, w决定 token 数与显存占用num_attention_heads40注意力头数attention_head_dim128每个注意力头的通道数in_channels16输入潜变量通道数out_channels16输出通道数为None时回退为in_channelstext_dim4096文本嵌入输入维度freq_dim256正弦时间嵌入频率维度ffn_dim13824前馈网络中间维度num_layers40Transformer 块数量cross_attn_normTrue交叉注意力前是否归一化qk_normrms_norm_across_headsQ/K 归一化方式eps1e-6归一化层 epsilonadded_kv_proj_dimNone附加 KV 投影通道数用于交叉注意力rope_dim(44, 42, 42)RoPE 在 T/Y/X 三个维度上的频率维度rope_theta10000.0RoPE 频率基数 thetaguidance_cross_attnTrue是否使用引导式交叉注意力zero_history_timestepTrue历史 token 时间步是否置零has_multi_term_memory_patchTrue是否启用短/中/长多尺度历史记忆分支is_amplify_historyFalse是否对历史 key 施加可学习放大蒸馏模型使用history_scale_modeper_head历史放大粒度scalar或per_head测试用例 tests/models/transformers/test_models_transformer_helios.py 中给出了一个小型化配置参考2 层、2 头、head_dim12、ffn_dim32可用于验证模型结构与前向形状。forward 输入输出详解forward的核心签名带apply_lora_scale(attention_kwargs)装饰器支持 LoRA 缩放hidden_states形状(batch_size, num_channels, num_frames, height, width)的加噪视频潜变量timestep去噪步数encoder_hidden_states形状(batch_size, sequence_len, embed_dims)的文本条件嵌入indices_hidden_states当前帧的帧索引用于计算 RoPEindices_latents_history_short/mid/long与latents_history_short/mid/long三个尺度历史潜变量及其帧索引Stage-1 自回归上下文return_dict为True时返回Transformer2DModelOutput否则返回元组。多尺度历史分支的处理顺序为 short → mid → long依次拼接在序列头部original_context_length记录拼接前的当前块长度供输出归一化与引导交叉注意力截取。若indices_hidden_states为None模型会自动生成torch.arange作为默认帧索引因此做单步前向调试时这些历史参数都可以省略。与 Pipeline 集成T2V / I2V / V2V 与内存优化HeliosTransformer3DModel 本身只是去噪主干实际使用需通过 HeliosPipelineBase或HeliosPyramidPipelineMid/Distilled基于金字塔流匹配采样对应pyramid_num_inference_steps_list[20, 20, 20]或[2, 2, 2]。Pipeline 源码位于 src/diffusers/pipelines/helios/其中 pipeline_helios_pyramid.py 展示了完整的调用范式文本由UMT5EncoderModel编码、图像/视频经AutoencoderKLWan编码、HeliosScheduler/HeliosDMDScheduler负责步进采样。内存优化示例约 6GB 显存来自 pipeline 文档import torch from diffusers import AutoModel, HeliosPipeline from diffusers.hooks.group_offloading import apply_group_offloading from diffusers.utils import export_to_video vae AutoModel.from_pretrained(BestWishYsh/Helios-Base, subfoldervae, dtypetorch.float32) pipeline HeliosPipeline.from_pretrained(BestWishYsh/Helios-Base, vaevae, dtypetorch.bfloat16) pipeline.enable_group_offload( onload_devicetorch.device(cuda), offload_devicetorch.device(cpu), offload_typeleaf_level, use_streamTrue, record_streamTrue, ) output pipeline( promptprompt, negative_promptnegative_prompt, num_frames99, num_inference_steps50, guidance_scale5.0, generatortorch.Generator(cuda).manual_seed(42), ).frames[0] export_to_video(output, helios_base_t2v_output.mp4, fps24)推理速度优化文档给出的组合是set_attention_backend切换注意力后端如_flash_3_hub适配 Hopper 架构 GPU 对 text_encoder / vae / transformer 分别执行torch.compile(modemax-autotune-no-cudagraphs, dynamicFalse)。从源码看HeliosAttnProcessor通过dispatch_attention_fn分发到不同后端这解释了为什么注意力后端可以无侵入切换。此外上下文并行Context Parallelism方案在该模型中有内置支持_cp_plan在 40 个 block 的attn1/attn2/ffn层定义了输入切分ContextParallelInput按序列维 split_dim1与输出聚合ContextParallelOutput用于长视频跨多卡并行处理。测试与验证仓库为该模型提供了完备的测试矩阵tests/models/transformers/test_models_transformer_helios.pyTestHeliosTransformer3D核心前向/形状测试基于hf-internal-testing/tiny-helios-base-transformer微型权重TestHeliosTransformer3DMemory显存优化测试TestHeliosTransformer3DTraining训练测试并显式验证梯度检查点被应用TestHeliosTransformer3DAttention注意力处理器测试TestHeliosTransformer3DCompiletorch.compile 测试注在确定性算法下因 PyTorch issue #170079 存在已知编译失败场景TestHeliosTransformer3DLoRALoRA 适配测试。测试的 dummy 输入完整覆盖了hidden_states、timestep、encoder_hidden_states以及 short/mid/long 三档历史潜变量与索引可直接作为自定义调用该模型的形状参考。此外 tests/pipelines/helios/test_helios.py 与 tests/modular_pipelines/helios/test_modular_pipeline_helios.py 覆盖了端到端 pipeline 与模块化 pipeline 的集成行为。相关资源模型文档docs/source/en/api/models/helios_transformer3d.mdPipeline 文档docs/source/en/api/pipelines/helios.md调度器文档docs/source/en/api/schedulers/helios.mdHeliosScheduler与 docs/source/en/api/schedulers/helios_dmd.mdHeliosDMDScheduler使用指南中文docs/source/zh/using-diffusers/helios.md核心实现src/diffusers/models/transformers/transformer_helios.py模块化 Pipeline 组件src/diffusers/modular_pipelines/helios/如需深入研究 Helios 的金字塔采样策略可继续阅读HeliosPyramidPipeline的pyramid_num_inference_steps_list、use_zero_init、zero_steps等参数详见 pipeline 文档其CFG-Zero与放大首块机制分别与模型配置中的zero_history_timestep和is_amplify_history直接对应。【免费下载链接】diffusers Diffusers: State-of-the-art diffusion models for image, video, and audio generation in PyTorch.项目地址: https://gitcode.com/GitHub_Trending/di/diffusers创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考