---
title: 可插拔 diffusion 加速
description: 对照 Sol-Engine 与 FlashDreams，说明原生插件、正确性边界和 H100 实测。
---

原生精度 Wan MHA 融合在 H100 的两个种子测试中保持最终 latent/RGB 逐位一致：17 帧加速 **1.19%–1.42%**，41 帧加速 **0.60%–0.66%**。插件按模型配置，支持卸载恢复；默认关闭。

## 上游对照

对照固定版本：[FlashDreams `91c906b`](https://github.com/NVIDIA/flashdreams/tree/91c906b69992f63fb19907a25cd805fb783d314a) 与 [Sana Sol-Engine `670482d`](https://github.com/NVlabs/Sana/tree/670482d8a857d578ac8a2ea89b052d0fb47badba)。已有能力按真实消费入口区分；可选依赖或同名开关不能证明执行和性能。

| 技术 | 上游路径 | WorldFoundry 既有集成与本轮变化 |
| --- | --- | --- |
| Attention kernel | FlashDreams 的 Triton FA2/TMA、cuDNN、原生 FP8；Sol 的 Flash/cuDNN 与 Sol-Attn | 已有 SDPA、FA2/3/4、Sage/Sage3、xFormers、TMA、原生 cuDNN FP8。新增共享 Sol-Attn dispatcher 和 Wan self/cross 独立选择。 |
| 块内融合 | AdaLN、residual gate、QK norm/RoPE、投影与 FFN glue | 已有公共 kernel、Wan QKV/RoPE 和部分 FFN 融合。新增 SANA 可撤销适配器，默认仅逐点融合，保持 norm 和 token strides。 |
| 不变量与历史缓存 | 文本 cross-KV、streaming KV、稳定缓存布局 | 已有 Wan 文本 cross-KV 和多种自回归缓存。新增可撤销 cross-KV 投影融合，使用派生 packed 权重并支持 static-cache miss。各模型的 raw KV、旋转后 KV、递推状态仍有不同语义。 |
| Feature cache | Sol 使用 EasyCache、TeaCache 和模型专属控制器 | 已有 Tea/Ada/Mag/Taylor/block cache，主要用于 Wan。新增原生 EasyCache，支持 stateless SanaMS/SanaMSVideo、WanModel，并补了 resident Wan2.2 双 expert 的全局到局部 schedule；目前后者是本地测试范围。 |
| 量化 | FlashDreams 可分别量化投影与 attention；Sol 文档覆盖 FP8、SVDQuant/Nunchaku 等 | 已有 FP8、INT8、INT4、NVFP4 等路径；部分低位模式仍反量化后做 dense GEMM。新增可撤销 selective FP8、校准的原生 packed SVDQuant，以及 Wan self/cross 独立 MHA 调度。SVDQuant 使用独立权重格式，不兼容 Nunchaku 二进制 checkpoint。 |
| 轻量 codec | FlashDreams 使用匹配的 pruned Wan2.1 LightVAE encoder 和经过校准的原生 FP8 实现 | 新增匹配的 base24/16-latent 原生架构、严格 student checkpoint 校验和校准 FP8 encoder 卷积插件。采用独立 Triton implicit GEMM；norm、cache 和 decoder 保持 FP32。 |
| Compile、Graph、并行 | regional compile、稳定形状 capture、模型专属并行与流水 | 已有 compile/cache、CUDA Graph、SP/CFG/VAE 并行和 offload。新增插件不解除已有 cache/Graph/SP 禁用条件。 |
| 组合搜索 | Sol 的模型、硬件与质量预算搜索 | 已有算子 autotune。本轮新增真实原生 SANA/Wan 的固定候选搜索；它只选择当前 prompt、seed、几何和设备上的合格配置。 |

HyperFlow 先前已向上游转发 `--sol-attn`，WorldGen 也已有可选 Flux/Nunchaku 路径；这些不等于共享原生 Wan/SANA 已完成集成。本轮补齐了原生 packed SVDQuant、独立 MHA 精度/kernel 调度与校准 FP8 encoder 的入口和执行验证。它们是受限的原生实现；Nunchaku checkpoint 兼容、FP8 TMA、streaming KV 与 steady-state Graph 组合尚不支持。

上游依据：[FlashDreams accelerated](https://github.com/NVIDIA/flashdreams/blob/91c906b69992f63fb19907a25cd805fb783d314a/docs/source/developer_guides/flashdreams_accelerated.md)、[Sol kernel](https://github.com/NVlabs/Sana/blob/670482d8a857d578ac8a2ea89b052d0fb47badba/site_docs/techniques/kernel.md)、[cache](https://github.com/NVlabs/Sana/blob/670482d8a857d578ac8a2ea89b052d0fb47badba/site_docs/techniques/cache.md)、[quant](https://github.com/NVlabs/Sana/blob/670482d8a857d578ac8a2ea89b052d0fb47badba/site_docs/techniques/quant.md)、[Sol-Attn](https://github.com/NVlabs/Sana/blob/670482d8a857d578ac8a2ea89b052d0fb47badba/site_docs/techniques/sparse/sol_attn.md)。EasyCache 控制器依据[上游算法](https://github.com/H-EmbodVis/EasyCache/tree/bfc63232cfae8c77e2dccf9d72b8f2f56bd995b8)独立实现。

## 代码与生命周期

| 层 | 文件 | 职责 |
| --- | --- | --- |
| 通用安装器 | `core/acceleration/plugins.py` | registry、计划、冲突检测、整组安装、失败回滚、撤销 |
| 请求状态 | `core/acceleration/easycache.py` | 在线误差估计、条件快照、dense/hit 决策、执行回执 |
| 模型适配器 | `base_models/diffusion_model/optimizations/plugins.py` | checkpoint graph、能力和组合校验；只安装模型局部属性 |
| SANA 运算入口 | `base_models/diffusion_model/models/networks/sana/block_ops.py` | norm/modulation/residual；保留训练、DropPath 和自定义 norm 语义 |
| Sol provider | `core/attention/backends/sol.py` | 可选依赖的执行边界、dtype/shape/参数检查 |
| 选择性精度 | `base_models/diffusion_model/optimizations/precision.py` | 显式投影选择、保留原模块、固定 placement、scaled FP8 执行 |
| Cross-KV 融合 | `base_models/diffusion_model/optimizations/kv_fusion.py` | 非持久化 packed 权重、源参数版本刷新、执行回执 |
| Expert schedule | `base_models/diffusion_model/optimizations/wan/expert_schedule.py` | 每个 expert phase 的不可变全局到局部索引 |
| 匹配 student codec | `base_models/diffusion_model/models/autoencoders/wan/variants/light_21.py` | 原生 student 架构与全量 key/shape 校验；codec adapter 位于 `component.py` |
| 验证与测量 | `tests/core/acceleration/`、模型测试、`benchmarks/inference/` | 默认输出、请求隔离、撤销、CUDA 执行与配对测量 |

源码路径以 `worldfoundry/` 为根。

安装器先准备全部计划，再修改模型；冲突或任一安装失败会撤销已完成的修改。融合和 cache adapter 保留原 checkpoint 参数和 state-dict key。Selective FP8 保留原模块用于撤销，但启用时的 wrapper 是推理视图：保存或加载 canonical state dict、修改 placement/dtype、训练或编辑权重之前先卸载。

模型持有的生命周期 guard 在插件尚未安装时就跟踪活跃 forward 和显式 request ID。安装与撤销都拒绝活跃请求；双 expert schedule 在任一 expert 执行前就保护两个模型。原生 runner 在成功和异常结束时释放 ownership。切换插件要求模型空闲；已编译模型或持有 CUDA Graph runner 的模型需要重建。这些保护覆盖框架 denoiser；直接调用 module 时，调用方仍需避免并发修改。

EasyCache 按显式 `request_id` 和 CFG 分支隔离，正常结束和异常退出均释放张量，只留下有界 JSON 回执。条件快照能够检测 inference tensor 的原地修改，并使旧 residual 失效。阈值 `0.0` 执行全部原始块并直接返回 dense 输出。

模型加载器只在声明 `supports_acceleration_plugins` 的 DiT 上应用共享配置。assembler 检查 denoiser 的安装回执，拒绝接收了插件选项却没有安装的路径。安装回执始终标为 `execution_verified=False`；实际 kernel 和跳过块数另行验证。

## 使用方式

```python
import torch
from worldfoundry.base_models.diffusion_model.pipeline import NativeDiffusionPipeline
from worldfoundry.core.model_loading.policy import RuntimePolicy

policy = RuntimePolicy(
    device="cuda",
    dtype=torch.bfloat16,
    options={"accelerations": {"sana_block_fusion": True}},
)
pipeline = NativeDiffusionPipeline.from_pretrained("sana-video-2b-480p", policy=policy)
# 按常规 DiffusionRequest 运行；之后读取该请求的运行回执。
report = pipeline.components.denoiser.runtime_optimization_report()
```

也可在已加载的空闲模型上安装并撤销，不修改环境变量：

```python
from worldfoundry.base_models.diffusion_model.optimizations.plugins import (
    diffusion_acceleration_registry,
    install_diffusion_accelerations,
)

model = pipeline.components.denoiser.model
existing = getattr(model, "_worldfoundry_accelerations", None)
if existing is not None:
    existing.uninstall()
session = install_diffusion_accelerations(model, {"easycache": {"threshold": 0.0}}, policy)
# 请求由 native runner 的 finally 清理；直接调用 denoiser 时须调用 end_request。
session.uninstall()

registry = diffusion_acceleration_registry()
# registry.register("custom_kernel", prepare_factory)
# prepare_factory 只校验，返回 PreparedAcceleration；activate 返回可撤销 handle。
```

加载配置与手动安装任选一种；手动替换前应撤销已有 session。组件选项覆盖同名 runtime 选项。公共 native pipeline 的 load 参数也接受 `accelerations={...}`。

| 插件 | 默认与边界 |
| --- | --- |
| `sana_block_fusion` | `backend=auto`，`min_elements=12582912`；小输入、autograd 或不合格布局保留 eager。默认 `fuse_layer_norm=False`、`repack_tokens=False`。当前 LayerNorm 路径保留 vendor reduction，融合后续 AdaLN 运算。原生 token strides 触发布局保护，保留 eager；开启 repack 可执行组合路径，但当前完整视频质量门槛未通过。 |
| `easycache` | 必须显式提供非负 `threshold`。在线学习 dense input/output 变化比例，累计预测 drift 后决定复用 `current_input + last_dense_transform`。本实现是 **embedded-token-block-stack** 变体，不是所有上游 raw-latent 变体的逐行移植。 |
| `attention_policy` | 原生 Wan self/cross 分开绑定。Sol 仅 self；必须 BF16、head dim 128、无 mask、无 backward，`kv_splits=1`。参数非法或依赖不满足时失败，不偷偷切成 dense。 |
| `selective_fp8` | 必须显式指定 `include` module-path glob，可选 `exclude`。默认 `min_features=1024`、`scaling=rowwise`、`use_fast_accum=False`；仅符合条件的原生 Wan/SANA block Linear。执行回执区分实际 scaled FP8 GEMM 与 dense fallback。 |
| `wan_cross_kv_fusion` | 原生 Wan 文本 K/V packing。默认 `min_tokens=256`、`include_image=False`；小 context 使用原始独立投影。保留 canonical 参数，数值契约允许原生 GEMM reduction 的舍入差异。 |

EasyCache 拒绝 streaming、camera/control 子图、offload、compile、CUDA Graph、SP、其他 feature cache、近似 processor 和 inplace residual。Resident 原生 Wan2.2 双 expert 现在有下文的受限 schedule 契约。条件必须由 tensor、mapping、list/tuple 和标量组成。cache 的 block callback 必须不修改输入。Scoped attention 同样拒绝未经验证的 Graph/SP/近似 processor 组合，Wan Sol 路径还拒绝 compile。

Wan Sol 配置示例，先在隔离环境安装上游 provider：

```python
policy = RuntimePolicy(
    device="cuda", dtype=torch.bfloat16,
    options={
        "dit_weight_dtype": "bf16",
        "accelerations": {"attention_policy": {
            "self": {"backend": "sol_attn", "tau": 1.0}, "cross": "torch",
        }},
    },
)
```

验证环境为 `sol-attn 0.5.0`、PyTorch `2.10.0+cu128`、Triton `3.6.0`、CUTLASS DSL `4.8.0`、cuda-python `13.4.1` 和 apache-tvm-ffi `0.1.14.post1`。源码来自上述固定 Sol 分支的 `techniques/sparse_backends`。不要为了这个可选插件升级已有推理环境；当前通用探测至少要求 PyTorch 2.10、CUDA 12.8、Triton 3.6 与 sol-attn 0.5。

此 Sol provider 使用 BF16 Q/K/V，与选择性 FP8 投影插件分别配置。默认 `compress_kv=True` 时，`tau=0` 仍按均值阈值路由，可能压缩 K/V，不能当作 dense attention。`compress_kv=False` 显式关闭压缩，但保留 Sol kernel 及其数值舍入；仍是需要完整生成验证的近似候选。

## 选择性投影精度与 Cross-KV packing

只选择 Wan FFN 投影，不改变 attention 或 normalization 的精度：

```python
policy = RuntimePolicy(
    device="cuda", dtype=torch.bfloat16,
    options={
        "dit_weight_dtype": "bf16",
        "accelerations": {"selective_fp8": {
            "include": ["blocks.*.ffn.0", "blocks.*.ffn.2"],
            "scaling": "rowwise", "use_fast_accum": False,
        }},
    },
)
```

支持原生 WanModel、stateless Sana/SanaMS/SanaMSVideo 及其默认 block。选择必须匹配可用的普通 Linear；空匹配、共享参数存储、目标 Linear 自身的 hook、自定义 forward 和未支持的 checkpoint graph 在修改前报错。父模块的 pre/post hook 保持执行。CPU 或小 CUDA workload 可能执行保留的原始 dense 算子，回执会明确记录 fallback，不能据此报告 FP8 加速。实际 CUDA 低精度 GEMM 使用 `torch._scaled_mm`；它不是原生 packed SVDQuant kernel。

保留原 dense 权重用于准确恢复，并额外存储 FP8 执行权重与 scale；该插件优化计算，不承诺权重显存减少。它拒绝通用量化、feature/static-KV cache、近似 attention、offload、compile、Graph 和 SP。默认 SANA 逐点融合可以作为组合候选，但完整生成的组合质量仍须验证。

Wan K/V packing 可单独配置：

```python
policy = RuntimePolicy(
    device="cuda", dtype=torch.bfloat16,
    options={"accelerations": {"wan_cross_kv_fusion": {
        "min_tokens": 256, "include_image": False,
    }}},
)
```

Adapter 保留原 K/V Parameter 和 checkpoint key，只新增派生 packed tensor。Wan2.2 5B 的 width=3072、30 blocks，仅文本 K/V packing 就额外增加约 **1.1 GiB** BF16 权重。默认 cross-attention 和 static-KV cache miss 共用同一投影入口；cache hit 保持已有复用。安装前必须使旧 static-KV 条目失效；撤销会释放 packed tensor 并清空可能包含融合舍入结果的 cache，保证下一次调用恢复原投影调度。

普通参数修改、checkpoint assignment 和 dtype/device 转换通过源对象及版本刷新 packed 权重。原始 `.data` 修改需重新安装；权重或条件变化还需遵守已有 static-cache invalidation 契约。自定义 processor、带 hook 或覆盖 forward 的投影、训练、compile、capture、offload 和 SP 均拒绝。同一 cross K/V 被 `selective_fp8` 选择时，不论配置顺序，都在 activation 前判定冲突。回执分开记录 text/image packed calls 与 dense bypass。

## 匹配的 Wan2.1 LightVAE

显式 `lightvae-wan21` codec variant 使用 [LightX2V student checkpoint](https://huggingface.co/lightx2v/Autoencoders/resolve/main/lightvaew2_1.pth)：32,208,043 bytes，SHA256 `d5d6b094d4829fb03b6179be2cf4589baab21c9fea1ca70dcaa8c85ba8183ec9`。全部 **194** 个 key/shape 与原生 base24 架构匹配：24/48/96 特征通道、16 latent 通道、encoder 11 个 downsample block。沿用 Wan16 mean/std、BCTHW 布局、空间 8×/时间 4× 压缩。Teacher base96 或 Wan2.2 48-channel 权重会被严格拒绝。

它使用不同的学习权重，是 codec 架构选择。即便实现与独立 student reference 一致，报告仍始终标为 **algorithmically approximate**。恢复 teacher 需要以 teacher 权重重建 codec。首版支持 FP32 resident CPU/CUDA inference；其他 build purpose、低精度/autocast、tiling、额外 temporal chunking、parallel decode、offload、通用量化、compile、Graph 和 SP 都拒绝。

SANA-Video 480p recipe 默认使用 tiled codec，因此必须显式关闭 tiling：

```python
pipeline = NativeDiffusionPipeline.from_pretrained(
    "sana-video-2b-480p",
    policy=RuntimePolicy(device="cuda", dtype=torch.bfloat16),
    checkpoint_overrides={"codec": "/path/to/lightvaew2_1.pth"},
    component_options={"latent_encoder:codec": {
        "variant": "lightvae-wan21", "tiled": False, "dtype": torch.float32,
    }},
)
```

Wan recipe 使用已有的 `vae` checkpoint override，SANA 使用 `codec`。独立 codec 调用可用 `load_wan_video_codec(path, variant="lightvae-wan21", device="cuda", dtype=torch.float32)`；没有全局 decoder 替换。CPU/H100 测试将官方 student 与独立 `reference_21.WanVAE_(dim=24)` 对照，覆盖 first/body cache、重复调用重置、encode/decode 和实际计数。架构与实现匹配不能代替 student-vs-teacher 视频质量门禁。

## 校准插件与独立 MHA 调度

新增能力默认关闭，安装与执行回执分别记录。通用数值实现放在 `core/acceleration/quantization/` 和 `core/attention/`；Wan/SANA 图选择、checkpoint 与生命周期校验放在 `base_models/diffusion_model/optimizations/`。共享的 `projection_selection.py` 避免不同精度插件重复维护筛选规则，`guards.py` 统一固定权重生命周期保护。

| 入口 | 执行契约 | 保留的限制 |
| --- | --- | --- |
| `svdquant: {artifact: path}` | 显式离线 channel 校准、smoothing、确定性低秩分解、group-64 packed W4A4 residual；整数寄存器解包后执行 INT8 tensor-core dot；低秩 down GEMM 独立、up 融入 epilogue | 原生 Wan/SANA 的显式 Linear；CUDA SM80+、FP16/BF16、eager no-grad。没有 dense residual weight 反量化，也没有静默 dense fallback。保留原模块用于撤销，因此不宣称整体权重显存下降。 |
| `optimized_mha` | 原生 Wan self/cross 独立配置 fusion、投影精度、输出精度和 SDPA；沿用原 RMSNorm、RoPE、图像/文本划分与 canonical 参数 | `fusion=none/kv/qkv`；cross 的 qkv 表示独立 Q 加 fused KV。精度为 `native/fp8_e4m3/fp8_e5m2/int8`；FP8 E5M2 使用独立 Triton GEMM。 |
| MHA SDPA | `torch/cudnn/fa2`；`quantized_sdpa=True` 显式启用未经缩放的 E4M3 Q/K/V；pointer FA2 同时量化 P@V 的 P | FP8 SDPA 支持 pointer FA2 或可选 cuDNN Frontend。`use_tma=True` 仅支持原生精度 FA2，要求 Triton ≥3.5。旧版 Triton pointer FA2 使用已验证的固定 tile，避开 Hopper 编译器崩溃配置。 |
| `fp8_calibration=path` codec 选项 | 匹配 Wan21 LightVAE 的 encoder Conv2d/Conv3d 使用校准 E4M3 implicit GEMM；保留原 `CausalConv3d.forward` 与缓存实现 | SM90+、resident FP32、untiled。仅 encoder 卷积量化；decoder、norm、SDPA 运算、cache 保持 FP32；选中的 attention 卷积投影也会量化。不是 FlashDreams 完整 C++ codec 的移植。 |

MHA 投影的低精度调用和 dense fallback 分别统计；部分小 GEMM 可能由现有 provider 保留 dense。诊断要求每个请求配置的模块与投影都实际执行，量化投影不得有 dense/fallback 调用。不能仅凭配置名判断低精度 kernel 是否运行。

```python
policy = RuntimePolicy(
    device="cuda", dtype=torch.bfloat16,
    options={"dit_weight_dtype": "bf16", "accelerations": {
        "optimized_mha": {
            "self": {"fusion": "qkv", "sdpa_backend": "torch"},
            "cross": {"fusion": "kv", "sdpa_backend": "torch"},
        },
    }},
)
# SVDQuant 单独评估，先生成绑定当前 checkpoint 的 artifact：
svd_options = {"svdquant": {"artifact": "/path/to/svdquant.pt"}}
```

校准 artifact 用 `weights_only=True` 加载，保存源参数 SHA256、张量结构、校准来源与实际调用计数；不匹配的权重或卷积 geometry 在修改前拒绝。SVDQuant 格式为 `worldfoundry-svdquant-v1`，不能直接载入 Nunchaku 的 packed checkpoint。INT4 权重只是 residual 分支；精度由低秩分支和量化分支共同决定。

```bash
PYTHONPATH=. python benchmarks/inference/calibrate_plugins.py svdquant \
  --assets "$ASSETS" --include 'blocks.*.ffn.0' 'blocks.*.ffn.2' \
  --rank 32 --frames 17 --out /tmp/calibration-new/svdquant.pt \
  --save-references /tmp/calibration-new/rgb
PYTHONPATH=. python benchmarks/inference/calibrate_plugins.py lightvae_fp8 \
  --checkpoint /path/to/lightvaew2_1.pth \
  --reference /tmp/calibration-new/rgb/calibration_11.pt /tmp/calibration-new/rgb/calibration_12.pt \
  --include 'model.encoder.*' 'model.conv1' --frames 17 \
  --out /tmp/calibration-new/lightvae-fp8.pt
```

校准使用 seed 11/12 的不同 prompt，测试使用独立 seed 42/43。LightVAE 的 `fp8_calibration` 可以传给 `load_wan_video_codec`，或放入 codec component options；共享 runtime 名称为 `vae_fp8_calibration`，且必须显式选择 `variant="lightvae-wan21"`。

`benchmarks/inference/lightvae_fp8.py` 比较相同 student checkpoint 的 FP32 与 FP8 encoder，公共 FP32 student decoder 解码两者。此实验只隔离量化误差，不替代前文的 student/teacher 质量对照。每个选中卷积必须实际执行。输入 clipping 数量作为量化诊断记录；有限值输出可以计时，同时单独记录质量是否达标。

```bash
PYTHONPATH=. python benchmarks/inference/lightvae_fp8.py \
  --checkpoint /path/to/lightvaew2_1.pth --artifact /path/to/lightvae-fp8.pt \
  --reference /path/to/reference_42.pt /path/to/reference_43.pt \
  --rounds 3 --out /tmp/lightvae-fp8-diagnostic-new
```

这三个插件均要求固定 placement、eval 和 eager inference；先卸载，再修改权重、加载 checkpoint 或迁移模型。MHA 与 FP8 codec 保留 canonical state dict；SVDQuant wrapper 启用期间禁止 canonical checkpoint 保存。现有 cache、compile、Graph 和 SP 的禁用规则继续生效。

## Resident 双 expert EasyCache

原生 Wan2.2 routed denoiser 在首次 CFG 调用前准备不可变的完整 request schedule。单调 high-to-low schedule 将全局 step 映射到各 expert 的局部零起点 index 和 phase 长度，使 low-noise EasyCache 从零开始，warmup 与末尾 dense gate 按其自身 phase 计算。High/low 模型和 CFG branch 分别持有 residual 状态；非法 schedule、改变 timestep、重复或不连续调用、未完成 phase 都明确报错。

两个独立原生 WanDenoiser expert 必须都启用 EasyCache。支持 resident eager、dense 单 rank CFG（`cfg_parallel_degree=1`、`cfg_gate_step=1.0`），不组合其他 cache、Graph、compile、SP、近似 attention 或 inplace residual。原生 runner 自动 prepare/finalize schedule；直接调用 denoiser 时须先 `prepare_request_schedule(request_id, schedule)`，最后 `end_request`。本地测试覆盖路由、phase warmup/末尾 gate、CFG/request 隔离和异常释放；它们不能证明真实 A14B 生成质量或速度。

## 验证与性能测量

`native_plugins.py` 对原生 SANA/Wan 评估 candidate JSON；`lightvae.py` 比较 teacher/student decoder；`lightvae_encoder.py` 用公共 teacher decoder 比较两个 encoder；`lightvae_fp8.py` 比较相同 student 的 FP32/FP8 encoder。

诊断分别记录质量、实际执行和配对耗时。默认比较预算为 latent relative L2 ≤0.03、PSNR ≥33 dB、最低帧 SSIM ≥0.98。有效且输出有限的候选即使未达到这个预算，也会测量速度并标记 `measured_quality_tradeoff`；自动推荐仍要求质量达标与稳定收益。`--quality-only` 只测质量。

非有限输出、未实际执行的优化和共享 GPU 不产生有效速度结论。计时采用至少三轮交错配对，排除加载、安装和 JIT，并检查计时路径及输出与 pilot 一致。FP8 clipping 单独记录，不作为“内核未执行”的判据。

从已提交的工作树运行可复现实验。运行记录包含 Git revision、环境、配置及输入文件的大小和修改时间。输入文件变化仍会使实验失效；校准插件仍校验参数摘要。诊断不扫描其他模型的源码，也不重复读取整个 checkpoint 计算哈希。

```bash
PYTHONPATH=. python benchmarks/inference/native_plugins.py \
  --model wan2.1-t2v-1.3b --assets "$ASSETS" \
  --candidates /path/to/candidates.json --out /tmp/native-plugin-results
PYTHONPATH=. python benchmarks/inference/lightvae_encoder.py \
  --teacher /path/to/Wan2.1_VAE.pth --student /path/to/lightvaew2_1.pth \
  --reference /path/to/reference_42.pt --reference /path/to/reference_43.pt \
  --rounds 3 --out /tmp/lightvae-encoder-results
```

## H100 实测

以下记录使用实现版本 `183147e3`，Wan1.3B、320×576、20 steps、CFG 6、shift 7、seed 42/43。百分比是加速比相对 1 的增幅。原始 JSON 包含质量指标、执行记录和配对时间。

| 候选 | 结果 | 证据与限制 |
| --- | --- | --- |
| 原生精度 MHA，self QKV + cross KV，17 帧 | 两个 seed 的最终 latent/RGB 逐位一致 | **1.014243×/1.011870×**；CI95 **[1.012128, 1.017954]/[1.010975, 1.015053]**。所有计时输出与 pilot 一致，执行与 GPU 采样门禁通过。[记录](/measurements/wan-mha-quality-timing-2026-10-04.json)。 |
| 同一配置，41 帧 | 两个 seed 逐位一致 | **1.005988×/1.006554×**；CI95 **[1.003248, 1.033685]/[1.006424, 1.007259]**。[记录](/measurements/wan-mha-41f-quality-timing-2026-10-04.json)。 |
| pointer FA2、FP8 SDPA、FP8/INT8 self 投影，17 帧 | 八个测试样本均通过执行检查，质量均淘汰 | Relative L2 **0.0966–0.3870**；最小 frame SSIM **0.6442–0.9295**，不计时。[记录](/measurements/wan-mha-quality-timing-2026-10-04.json)。 |
| SVDQuant rank32：全部 FFN / 末层 FFN | 四个样本均实际执行 packed kernel，质量均淘汰 | 全部 FFN relative L2 **0.5033/0.4037**；仅 block 29 **0.0925/0.1455**。无 dense/fallback，不计时。[记录](/measurements/wan-svdquant-quality-2026-10-04.json)。 |
| LightVAE 全 encoder FP8，32 个卷积 | 两个样本均因 latent 误差淘汰 | Relative L2 **0.2568/0.2511**。PSNR、SSIM 虽通过，不能覆盖 latent 门槛；seed 42 还出现输入 clipping。[记录](/measurements/lightvae-fp8-full-quality-2026-10-04.json)。 |
| LightVAE 仅 `downsamples.0.residual.6` | 两个样本质量/执行通过，但更慢 | Relative L2 **0.01082/0.01106**；encoder 加速比 **0.95264×/0.92091×**。[记录](/measurements/lightvae-fp8-residual-quality-timing-2026-10-04.json)。 |
| LightVAE 仅 `middle.1.proj` | 两个样本质量/执行通过，无稳定速度认证 | Relative L2 **0.000979/0.000983**；encoder 加速比 **1.00769×/1.00349×**，seed 43 CI95 **[0.98503, 1.01022]** 跨过 1。[记录](/measurements/lightvae-fp8-projection-quality-timing-2026-10-04.json)。 |

SANA 原生 strides 的逐点融合保持两个种子输出逐位一致，测得 1.0051×/1.0015×；其中一个置信区间跨过 1，暂无稳定收益。[SANA 记录](/measurements/sana-vendor-norm-quality-timing-2026-10-04.json)。

## 当前限制

测量覆盖上述固定输入，尚未建立更广泛的生成质量结论。量化、缓存、稀疏注意力和轻量 encoder 的适用性需要结合实际用途检查；encoder-only 时间与完整生成时间分开比较。

原生插件的 cache/compile/Graph/SP 组合、Nunchaku checkpoint 格式和 FP8 TMA 仍需适配。现有不兼容检查保持生效；具体插件要求见配置表。保留的原模块用于卸载恢复，SVDQuant 当前不承诺整体权重显存下降。
