ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

vLLM-Omni 扩散模型注意力后端配置完全指南:选择契约、解析机制与平台默认路由

vLLM-Omni 扩散模型注意力后端配置完全指南:选择契约、解析机制与平台默认路由 vLLM-Omni 扩散模型注意力后端配置完全指南选择契约、解析机制与平台默认路由【免费下载链接】vllm-omniA framework for efficient model inference with omni-modality models项目地址: https://gitcode.com/GitHub_Trending/vl/vllm-omni本篇技术指南聚焦 vLLM-Omni 中扩散Diffusion注意力后端的选型与配置从 11 种可用后端Dense、量化、块稀疏、Hub 内核的适用场景到--diffusion-attention-backend/--diffusion-attention-config的多级解析顺序再到 Blackwell/Hopper 等平台默认路由规则。读完后你可以为自己的图像/视频生成模型正确选择并验证注意力内核并用源码定位每个配置项的实际生效路径。适用范围只管 DiT 注意力不动 LLM 注意力扩散注意力后端选择只作用于 DiTDiffusion Transformer注意力即图像与视频生成模型中的注意力层。它不会影响自回归 LLM 阶段的注意力——后者仍使用 vLLM 自身的 attention selector。这一边界由选择契约文档明确界定可在 选择契约 中查阅完整设计。后端选项总览下表完整继承了官方 后端选择指南 中的后端矩阵各后端的具体安装、调优与兼容性细节放在独立的子指南中便于按需深读取值家族主要用途详情TORCH_SDPADense保守参考实现始终可用Dense BackendsFLASH_ATTNDense根据已安装包与 GPU 自动选择 FlashAttention 4/3/2Dense BackendsCUDNN_ATTNDenseBlackwell 上带 mask 较重的 DiT需 cuDNN 9.5Dense BackendsFLASHINFER_ATTNDense 或量化FlashInfer batch prefill可选 Q/K 与 V 混合 dtypeDense BackendsTRTLLM_ATTNDense、稀疏或量化数据中心 Blackwell、head_dim128且兼容 packed 路径TRTLLM AttentionSAGE_ATTN量化SageAttention 2.2 INT8 注意力SageAttentionSAGE_ATTN_3量化Blackwell 上的 SageAttention3SageAttentionFLASH_ATTN_HUBHub 内核从 Hugging Facekernels加载的 FlashAttention 2Hugging Face Hub BackendsFLASH_ATTN_3_HUBHub 内核Hopper 及以上从kernels加载的 FlashAttention 3Hugging Face Hub BackendsRAINFUSION_ATTN块稀疏Ascend NPU 上的 MindIE-SD RainFusion 视频注意力RainFusionFASTVIDEO_VSA块稀疏CUDA 上 FastWan2.2-TI2V-5B / FastH3 MiniMax-H3 的变长稀疏自注意力FastVideo VSA对应需求场景的指南入口需求指南选择保守或平台原生的 Dense 内核Dense Backends使用 FlashInfer trtllm-gen FMHA、Skip-Softmax 或 TRTLLM SAGE 量化TRTLLM Attention安装并使用 SageAttention 2.2 或 SageAttention3SageAttention与从 Hugging Face 加载的训练/rollout 内核对齐Hugging Face Hub Backends在 Ascend NPU 上使用块稀疏视频注意力RainFusion在 CUDA 上为 FastWan2.2-TI2V-5B 或 FastH3 使用 FastVideo VSAFastVideo VSA配置方式与解析顺序后端的最终决议遵循三级顺序这是配置时最重要的心智模型--diffusion-attention-config的per-role 配置优先级最高--diffusion-attention-backend或环境变量DIFFUSION_ATTENTION_BACKEND作为全局默认当前平台默认。需要特别注意--diffusion-attention-backend本质上是--diffusion-attention-config.default.backend的简写不要与结构化配置中显式的default.backend同时传入。这一互斥约束在源码中被强制校验——parse_attention_config 在attention_backend简写与已有default同时存在时会直接抛出ValueError提示两者互斥。全局默认CLI 与环境变量vllm-omni serve model --diffusion-attention-backend FLASH_ATTN # 向后兼容的环境变量 export DIFFUSION_ATTENTION_BACKENDFLASH_ATTN从源码看环境变量仅在命令行未提供显式配置时生效build_attention_config 是唯一的规范化入口在OmniDiffusionConfig.__post_init__中恰好被调用一次它先执行纯类型转换若default仍为空再回退读取DIFFUSION_ATTENTION_BACKEND并在命中时打印一条包含default与per_role摘要的解析日志。该环境变量也登记在 环境变量清单 中。两个入口都接受auto作为交给平台默认的显式表达。Per-role 配置精确到每个注意力角色角色role由每个扩散模型自行声明常见类别为self与cross具体模型还会使用更细的角色名例如ltx2.audio_to_video。解析顺序为四级per_role[role]精确匹配per_role[role_category]类别回退例如ltx2.audio_to_video可回退到crossdefault平台默认。CLI 支持点分 flag 与等价 JSON 两种写法# Dotted flags vllm-omni serve model \ --diffusion-attention-config.default.backend FLASH_ATTN \ --diffusion-attention-config.per_role.cross.backend TORCH_SDPA # 等价 JSON vllm-omni serve model \ --diffusion-attention-config \ {default:{backend:FLASH_ATTN},per_role:{cross:{backend:TORCH_SDPA}}}类别回退在 AttentionConfig.resolve_with_source 中实现先查per_role[role]未命中再查per_role[role_category]再未命中返回default每一步都会记录来源描述如attention_config.per_role[cross] (role_category fallback)这正是启动日志中该角色为什么拿到该后端的依据。Python API 用法与 CLI 完全等价from vllm_omni.diffusion.data import ( AttentionConfig, AttentionSpec, OmniDiffusionConfig, ) config OmniDiffusionConfig( diffusion_attention_configAttentionConfig( defaultAttentionSpec(backendFLASH_ATTN), per_role{cross: AttentionSpec(backendTORCH_SDPA)}, ), ..., )后端专属的类型化配置块后端专属参数以类型化字段挂在 AttentionSpec 上而非无结构的 kwargs 字典。每个后端只读取自己拥有的字段并在__post_init__中拒绝不兼容取值例如skip_softmax只能搭配TRTLLM_ATTNquant只能搭配TRTLLM_ATTN或FLASHINFER_ATTN配置块消费方说明quantAttnQuantSpecFlashInfer 与 TRTLLM SAGEdtype_qk/dtype_vo取值限于float16、bfloat16、int8、fp8_e4m3q_block_size/k_block_size仅支持{1, 4, 16}对应已有 kernel 的形状skip_softmaxSkipSoftmaxSpecTRTLLM Skip-Softmaxtarget_sparsity使用 checkpoint 标定曲线与threshold免标定绝对阈值互斥disabled_until_timestep控制起始若干时间步不跳过block_sparseBlockSparseSpec块稀疏后端当前为RAINFUSION_ATTNsparsity为每个 query block 丢弃 key block 的名义比例默认0.8start_step/end_step保留最初 N 个去噪步为密集计算skip_layers如0-3,38豁免个别 DiT blockprecision支持bf16/fp8/mix三档fastvideo_vsa_topkFastVideo VSA每个 query block 选取的 top-k 个 key/value block 数必须为正整数且后端必须为FASTVIDEO_VSA值得注意的一个细节对于块稀疏后端当前即RAINFUSION_ATTN见 BLOCK_SPARSE_BACKENDS 的定义选择该后端本身就是开启稀疏的opt-in——未显式给出block_sparse块时会应用默认值而不是静默退化为密集计算。这些字段的完整取值约束与序列化行为可在 AttentionSpec.backend_kwargs 中核对。源码实现从配置到后端类的完整链路选择契约设计文档将整条选择路径划分为四项职责归一化配置、按角色解析、交由平台校验/选默认、按注册路径加载后端类。核心入口是 get_attn_backend_for_role配置解析先调用attention_config.resolve_with_source(role, role_category)尝试四级查找命中则得到(AttentionSpec, 来源描述)并据此加载后端类日志来源标记为具体配置项。平台默认未命中时以None后端名调用平台接口让OmniPlatform根据自身硬件策略决定此时返回的AttentionSpec为None日志来源标记为platform default。两个实现细节保证了行为的可预测性缓存策略类解析按(backend_name, head_size, allow_trtllm_default)三元组缓存见 _cached_get_backend_cls确保平台校验计算能力检查、包可用性检查对同一组合只执行一次日志则按(role, source)单独缓存使启动记录能解释每个角色拿到后端的完整原因。spec 可选语义走平台默认时 spec 为None注意力层必须把 spec 当作可选参数处理不得把缺少 spec推断为 SDPA。能力查询的哨兵值SequenceParallel 自动 padding 在 Attention 层创建之前就需要探测 mask 支持此时不知道真实head_dim于是使用HEAD_SIZE_UNKNOWN -1哨兵见 get_attn_backend_for_capability。显式配置选择会绕过几何校验直接从注册表加载类避免CUDNN_ATTN被哨兵值误拒平台默认路径则带着哨兵值继续咨询平台。后端类本身由 DiffusionAttentionBackendEnum 注册表管理枚举把稳定的配置名如FLASH_ATTN映射到默认的全限定类路径如vllm_omni.diffusion.attention.backends.flash_attn.FlashAttentionBackend并暴露 11 个成员与上表一一对应。平台可以通过 register_diffusion_backend 在运行时替换某个名字对应的实现路径而不改变公开枚举值——这为 Ascend 等平台接入自定义后端如 RainFusion提供了扩展点。平台边界契约同样来自 选择契约OmniPlatform.get_diffusion_attn_backend_cls()负责校验显式选择不可用时抛出可操作的错误、在无显式后端时只选择可用且兼容的默认、考虑 head size 等平台可见约束并返回实现了AttentionBackend接口的全限定类路径selector 本身不重复实现设备能力或包可用性策略。平台默认路由Blackwellsm_100 / sm_103 / sm_120 / sm_121CUDA 自动路由的偏好顺序为TRTLLM_ATTN仅限数据中心 Blackwellsm_100/sm_103且 FlashInfer 可用、head_dim128、模型声明了兼容的 packed 或无 mask 路径CUDNN_ATTNcuDNN 9.5 及以上可用时FLASHINFER_ATTNFlashInfer 可用但 cuDNN 版本过旧时FLASH_ATTN已安装兼容包时TORCH_SDPA最终兜底。TRTLLM_ATTN不会在工作站 Blackwellsm_120/sm_121、其他 head 维度、或需要不受支持 mask 的路径上被自动选择。模型是否兼容 TRTLLM 自动选择由模型自身声明——因为只有模型知道自己的 masking 与 packing 是否满足 kernel 契约见 契约文档的模型集成条款。Hopper、Ada 与 AmpereCUDA 自动路由在这些架构上优先使用FLASH_ATTN不可用时回退TORCH_SDPACUDNN_ATTN与FLASHINFER_ATTN保留为显式选项。其他平台如 NPU会校验显式后端并通过各自的平台实现选择自己的默认。所有平台上都应检查启动日志确认最终解析出的后端。何时手动指定后端在以下场景应覆盖平台默认需要正确性参考实现TORCH_SDPA需要针对某后端的特定 workaround需要对齐训练/rollout 内核Hub 后端需要显式验证过的稀疏或量化加速路径。启动日志会打印解析出的后端及其来源显式配置 vs 平台默认。若日志中没有任何 resolution 信息应回头检查更早的日志排查扩散阶段初始化是否已失败。参考基准以下 BF16 结果在 sm_120 RTX Pro 6000 Blackwell 上测得各次运行使用相同 prompt 与 seed。官方文档明确提示这是参考结果不是可移植的性能保证。模型形状TORCH_SDPACUDNN_ATTNFLASHINFER_ATTNHunyuanVideo-1.5 (T2V)480p / 33f / 50 步147.05 s73.02 s127.84 sWan 2.2 14B (T2V)480p / 33f / 40 步117.75 s117.17 s115.07 sQwen-Image (T2I)1024² / 50 步17.41 s15.14 s16.02 sFLUX.2-dev (T2I)1024² / 50 步, TP253.62 s53.30 s54.94 s结论与官方文档一致mask 较重的 DiT 明显受益于CUDNN_ATTN而 mask 较轻或已被 TP 打满吞吐的工作负载差距很小应以自己精确的模型与形状做基准测试后决策。延伸阅读兼容锚点与完整扩展契约原文档中以下章节的完整内容已迁移至各专属指南锚点链接已转换为仓库根路径TRTLLM_ATTN Backend 与 Skip-SoftmaxTRTLLM AttentionTRTLLM_ATTN SAGE 量化TRTLLM AttentionRAINFUSION_ATTN 与块稀疏视频注意力RainFusionSageAttention / SageAttention3 安装SageAttentionHuggingFace Kernels Hub 后端Hugging Face Hub Backends若要新增或修改后端选择契约 给出了完整的完成标准实现AttentionBackend接口并暴露稳定枚举名、补齐平台校验与默认路由、定义并校验类型化配置、覆盖显式选择/默认选择/不兼容路径三类测试、在用户指南中记录安装/回退/质量影响并更新总览矩阵。【免费下载链接】vllm-omniA framework for efficient model inference with omni-modality models项目地址: https://gitcode.com/GitHub_Trending/vl/vllm-omni创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表