01 / 完整覆盖
以请求到输出为边界,不以某个模块为中心
| 阶段 | 必须捕获 | 关键问题 |
|---|---|---|
| 输入与条件准备 | 预处理、文本 / 图像编码、VAE 编码、H2D、分配 | CPU、I/O 与 GPU 的等待是谁引入的?缓存命中如何改变路径? |
| DiT 去噪 | 投影、Attention、MLP、Norm、RoPE、残差、调度器更新 | 计算、带宽、tile 利用率、并行度还是 launch 限制? |
| 缓存与分布式执行 | clean KV commit、KV 更新、重排、NCCL、rank / stream 同步 | 真实通信字节与关键路径暴露时间多少?谁在等待哪个 rank? |
| 解码与输出 | VAE 解码、格式转换、D2H、视频编码、交付 | 哪些工作可重叠?输出何时真正可用? |
未启用阶段标为 N/A;无法采集标为 missing,不能填零。首请求、稳态、缓存增长、缓存满、去噪与 commit 分开分析。CPU / I/O 无 GPU kernel 时保留时间线事件。
旧结果仅作背景索引;重新核对 checkpoint、代码、配置、采样边界后才能成为当前证据。计划页不沿用历史实验数字作为新结论。
实验基线 / 2026-09-08 Rebase 记录
Case D 是复现基线;新版源码先验证,再做 Profiling
依据用户指定的 /data/zhoutaichang/feature/Lingbot_world_realtime/runs/D_EXPERIMENT_BASE_HANDOFF.md。以下记录实验起点与源码迁移,不改变全流水线逐 kernel 分析的研究范围。
冻结的 Case D
同四卡顺序执行 USP4 DiT,再执行四 rank 宽度空间分片解码;不是 channel / weight TP4。480×832、BF16 DiT、FP32 untiled decode,4 次 DMD forward + clean KV commit,seed 42。
原始 checkout:/data/zhoutaichang/feature/vllm-omni-uspbench。Detached HEAD:b9cdea7b6da42d51cd5772548c616655fec21668,加归档 source.diff;原目录和补丁保持不变。
后续分析候选源码
分支:codex/lingbot-case-d-latest-main
Checkout:/data/zhoutaichang/feature/vllm-omni-lingbot-case-d-main
新 HEAD:c59234d1974fe280116c1b77473d110ab53766e3
上游:vllm-project/vllm-omni 的 main,本次核验版本 f3fabe4145df06947bc853a808928caa037f5e8f。这是时间点快照,不代表之后始终最新。
保留 8 个原分支提交及 1 个归档 executor shutdown 补丁提交。KV-cache 冲突保留 owning K/V pool 语义,并适配上游回归测试。
301 passed · 14 skipped
CPU 回归通过;独立 U4 pilot 已验证实际 world size / Ulysses 配置与同 latent 解码。此结果不证明完整 DiT 等价或性能不回退。新旧版本各三次的 matched baseline 已启动;本页为状态快照,不是实时监控。
源证据:runs/kernel_analysis_20260908/rebased_pilot_guarded/ 与 matched_baselines/。历史与新版输出存在差异,需要同版本跨 launch 对照和逐层定位;旧 Case D 数字不能标为新版实测。kernel MFU 尚未完成采集。
复现身份与进入 K0 的前置验证
补丁:runs/async_vae_usp4_spatial4_20260908/measured/D_r0/source.diff(相对 Lingbot_world_realtime);SHA256:99d92c019b5f968ce691ff5f80f635bf272a2b29dd294f78c4f8dfa8f8724a05。优先使用 D_r0 的冻结脚本与 provenance,不默认当前 runner / 环境与当时一致。
- 固定新旧版本、权重、输入和完整协议;检查 frozen runner 与新源码接口兼容,使用新输出目录,不覆盖原始结果。检查真正传入引擎的 parallel_config 与各 rank 日志,不以命令行 U4 标签代替验证。
- 先复现 480×832 Case D:3 次独立重复,每次 1 次 warmup + 20 个 reset sessions,每 session 117 帧;稳态采用 delivery intervals 5–8。此协议每次只有 80 个稳态间隔,仍须扩样才能验收 P95 / P99。
- 边界仍是解码 rank0 的 CPU-ready uint8:包含 latent materialization、IPC/broadcast、H2D、halo、gather、decode/conversion/D2H;不包含后续 RGB IPC、视频编码和网络。完整服务边界另测,不混称客户端 FPS。
- 保留 fill/drain 与长尾停顿;比较同 latent 解码、新旧完整 DiT 输出、同版本跨 launch 波动。误差容忍度须在候选判定前声明,不能依据观察到的差异临时放宽。
- GPU 正确性与同口径性能 A/B 通过后锁定 manifest;未通过仍可做标为 diagnostic 的定位,但不能称新版已接受基线。704×1280 与其他并行 shape 独立采集,不从 Case D 外推。
四卡实验通过 gpu run 持有资源,结束按任务生命周期释放;不抢占他人作业。页面改写不重启正在运行的基线任务,也不修改其冻结源码与配置。
外部参考 / 不是 LingBot 实测
借鉴方法,不搬用速度、硬件上限或模型假设
官方博客报告 · 未本地复现 vLLM-Omni:MiniMax H3 / FastH3 生产服务优化(2026-09-01)。重点参考通信布局、算子融合、并行解码和紧凑输出链路。文章的 FastH3 实时口径是完整 MP4,而非流式首帧;硬件为八张 B300,不能换算成四张 H200 的结论。
博客 §6.3 标注原始 benchmark bundle 待发布;报告数字只作为外部参考,不用于拟合本机 MFU、推导 P99 或承诺加速。蒸馏、量化、稀疏与缓存近似不混入保持语义的运行时优化。参考实现和提案需分别核验,不能把未来工作标成已实现。
源码审计先于迁移
逐项记录 H3 的代码位置、必要条件、LingBot 对应算子、当前是否已启用及差异。仅对尚未实现且语义匹配的部分创建优化实验;已有优化只计增量,不能重复认领收益。
保持 LingBot 模型不变
主线固定现有 checkpoint、四次 DMD forward 与 clean KV commit。H3 的蒸馏产物、音频路径和专用编码器不属于本轮对象;不能通过减少步数“证明”kernel 优化。
两套输出验收
Case D 的 CPU-ready 吞吐与完整服务交付分别报告;同时保留 TTFC、稳态交付间隔、完整 rollout、帧数和编码后媒体校验。平均 FPS 达标不等于尾延迟或流式体验达标。
02 / 可比、可复现、不过度解释
把正确性、计数器分析和干净计时分开
固定实验身份
分辨率 480×832 与 704×1280;记录实际张量形状、帧数 / chunk、步数、CFG、dtype、seed、输入、缓存状态、编译模式与 checkpoint / 代码 SHA。H200 身份按用户确认记录,保留驱动原始标识、UUID、拓扑、时钟与功耗,不能仅凭 L20 标签选峰值。
独立重复与尾延迟
每个配置 3 次独立重复;预热到编译及缓存稳定后计时。筛选每次至少 300 个稳态样本;最终候选每次至少 1,000 个,若 P99 不稳定则扩样。逐次报告 P50 / P95 / P99、样本数、置信区间及会话相关性,不能用 3 个总耗时估计 P99。
结果口径
区分 isolated kernel、集成算子、GPU-ready、CPU-ready 与编码 / 交付完成。FPS = 有效输出帧数 / 对应墙钟时间,同时报告 chunk 延迟与帧间隔。阶段 P99 不相加;多卡以真实关键路径计时,重叠区间不重复求和。
MFU 与 Roofline 的统一定义
算子有效 FLOP 利用率 = 算法有效 FLOPs /(同一测量范围的 GPU 时间 × 对应 dtype 的 dense 峰值)。模型 MFU 另按模型 FLOPs 和端到端时间计算。硬件执行 FLOPs、Tensor Core 活跃度与模型 MFU 是不同指标;禁止互相替代。融合、padding、重算分别记录有效工作与实际执行工作。
同时绘制规格峰值与本机同 dtype 校准上限;测量 DRAM / L2 字节并明确算术强度对应哪层存储。拷贝、通信等不适合 MFU 的 kernel 标 N/A,改看有效带宽、延迟与重叠。低 MFU 本身不是瓶颈结论。
03 / 研究工作包
从完整调用账本到可验证的优化
先定位整条流水线的等待与关键路径
校验 Nsight Systems、Nsight Compute、驱动、权限与多进程捕获能力。记录 GPU 共享负载、时钟、功耗、温度与拓扑;受外部任务干扰的样本保留标记并另行重测。使用已授权四卡;8 卡最低优先级。
当前限制:本机 NCU probe 返回 ERR_NVGPUCTRPERM。硬件计数器归因需管理员授权;不修改共享驱动策略。可先做时间线、shape 捕获和干净计时,但不能用这些替代 NCU 计数器,未取得的指标标 missing。
采集方法与产物
- 用 NVTX 标记 request / chunk / step / stage / rank,并关联 PyTorch 算子、CUDA launch、stream、event 和 NCCL。
- Nsight Systems 捕获 CPU 调度、GPU 时间线、内存传输、空洞和多卡重叠;用 CUDA events 与墙钟双口径校验。
- 冷启动 / 编译单独采样;稳态覆盖首块、缓存增长和满缓存。采集未覆盖的执行分支列入缺口表。
- 产物:环境清单、端到端 trace、关键路径图、各阶段 exclusive / inclusive 时间及覆盖率。
建立完整 Kernel inventory,不只列 Top 10
保留每次 kernel invocation;按 kernel 名称 + shape + dtype + stride / layout + 阶段 + backend + 并行上下文分组。融合 kernel 保留原始算子映射;同名不同 shape 不混合。
每组必需字段
调用次数、每次时间、总 GPU 时间、关键路径暴露时间、输入 / 输出大小、grid / block、寄存器 / shared memory、rank / stream、去噪步与缓存阶段、源码位置或库版本、原始 trace 定位。另列 unknown kernel,不能以 other 丢失明细。
报告三类覆盖:调用次数覆盖、GPU 时间覆盖、shape / 上下文组覆盖。所有组都给出分析状态;高耗时优先深挖不等于免除长尾。未能取得可靠计数器的组保持 unresolved。
回答“为什么不能更快”,并设计反证实验
Nsight Compute 对每个代表性组采集适用计数器;CUPTI 可用于补充关联。记录工具版本与本机支持的实际 metric 名称,权限不足不得写成零。
| 候选瓶颈 | 需要的证据 | 对照 / 证伪 |
|---|---|---|
| 计算吞吐 / 指令混合 | Tensor / CUDA pipe 吞吐、指令、有效 FLOPs、Roofline | 同 dtype 更优 tile / kernel;区分有效与冗余计算 |
| DRAM / L2 / 数据复用 | 字节、带宽、命中率、访存效率、算术强度 | 改变 layout / 融合 / 重用;比较访存量与时延是否同步下降 |
| 并行度 / 资源限制 | occupancy、waves、寄存器、shared memory、spill、warp stall | 改变 tile / block / 批量;区分小 grid 与资源占用过高 |
| launch / 同步 / 依赖 | CPU-GPU 空洞、event wait、短 kernel 链、stream 依赖 | CUDA Graph、融合或移除冗余同步;检查端到端而非单 kernel |
| 通信 / rank 不均衡 | 实际 payload、链路流量、collective 时间、rank skew、暴露时间 | 单独通信与计算重叠对照;固定拓扑、消息大小及并行策略 |
每组输出:主 / 次瓶颈、计数器证据、替代解释、对照结果、可达到的上限区间、优化动作、预计端到端收益和置信度。不能仅凭某个 stall 或 occupancy 数值下结论。
计数器 replay 可能改变缓存、并发与运行时间。保留 replay 配置,对照完整上下文与 isolated replay;多 rank 通信使用兼容捕获方案。最终时延只取关闭 profiler 的实跑。
并行策略改变了输入,后端排名必须重新测
先从实跑导出每个 rank 的真实 attention 输入,再构建 replay。不能只按分辨率猜序列长度,也不能假定 TP / SP 只等比例切分一个维度。
源码发现:LingBot paged self-attention 绕过通用 Attention 后端选择器;在 LINGBOT_KV_GATHER=1 时先 gather KV,再调用 vLLM FlashAttention varlen。仅修改通用 backend 参数不是有效 self-attention A/B。Cross-attention 必须单独捕获和验证 dispatch。
实验矩阵与正确性门槛
- 两种分辨率 × 单卡 / TP2/TP4 / SP2/SP4 / 已实现的混合并行 × 首块 / 增长缓存 / 满缓存 × 去噪 / commit。仅执行实现支持且显存可容纳的组合。
- 捕获 QKV all-to-all 前后,以及 paged cache / gather 后的真实 Q/K/V;记录 B、Hq / Hkv、Sq / Skv、head dim、dtype、stride、mask / causal、window、cache layout、padding、scale、有效长度、block table 与实际 dispatch kernel。保存有预算上限的代表性张量,列出未捕获组。
- 枚举 FlashAttention 2/3、PyTorch SDPA math / flash / efficient / cuDNN;TRTLLM_ATTN 作为兼容性候选而非默认胜者。检查 H200、dtype、head dim、varlen、mask 和 paged / dense 接口约束,不接受静默 fallback。未安装 / 不支持标 unsupported,OOM 单列。
- 同一 captured shape 使用相同张量及有效长度;以高精度抽样数学参考和当前实际后端双重校验,报告绝对 / 相对误差、NaN / Inf。先声明容忍度,再判断候选;还需多 seed 长 rollout、动作响应与缓存一致性校验。
- 拆成核心 kernel、含 gather / padding / 重排的集成算子、含通信的流水线三层。dense 与 paged 对照不得只给一方省略转换成本;诊断捕获与干净计时分开。
- 逐点报告延迟、有效 FLOPs、MFU、DRAM / L2 带宽及瓶颈;扫真实 shape 邻域检查 tile 拐点。MFU 缺计数器或峰值校准证据时明确限制,不补造数据。
把同一分析方法扩展到主要算子族
根据 K1 的累计耗时和关键路径影响选优先级,但保持全量账本。GEMM / projection / MLP 扫 M、N、K 和 dtype;卷积扫实际时空维度、通道、stride 与 layout;Norm / RoPE / residual / activation 扫元素数和融合组合;copy / transpose / cache 扫字节、stride 和 cache 状态;NCCL 扫消息大小、rank 数与拓扑。
每个性能点绑定可复现 replay、原始输入元数据和计数器报告;同精度同语义才比较速度。不同算法、精度或输出质量用独立系列。
以关键路径收益排序,不按局部 MFU 排序
先单变量 A/B,再组合优化;比较优化前后正确性、峰值显存、各 rank 时间、关键路径、P95 / P99 和有效 FPS。保留回滚版本。局部加速若被重排、通信、同步或其他阶段抵消,明确记录“局部有效,端到端无收益”。
用测量到的占比与可改善部分估计收益上限,并解释重叠导致的偏差。目标是找出达到 FPS > 12 的可验证配置与剩余差距,不给任何单一组件预设耗时预算。
H0–H5 / 基于参考的 LingBot 实验设计
把参考优化变成有输入、对照和退出条件的实验
下列均为本轮研究假设,不是 H3 或 LingBot 已测收益。H0 可先做源码映射;H1–H5 的优化实施须由 K1/K2 的瓶颈证据触发,不能绕过全量 kernel 分析。
核验实现,而不是照抄开关
| 参考入口 | LingBot 核验点 | 不成立时的处理 |
|---|---|---|
| H3 博客 §3:长度、布局、融合、输出链路 | 逐条映射到已冻结源码和实际 kernel dispatch,标 existing / candidate / incompatible | 不把参考能力当作当前配置已启用 |
| Fast Ulysses #6340 | 区分 NCCL 布局融合与 native SymmMem transport;核验 5D fused QKV、进程组、buffer 生命周期及 graph 安全 | 不兼容路径不强开;先保留当前通信作为基线 |
| H3 VAE 算子入口 #6607 | 审计 pinned source 的 minimax_h3/ops/vae 与 LingBot Wan VAE;对照算子类型、权重精度、shape 和 fallback | 模型专用算子不硬移植;仅借鉴匹配的数据移动与融合机会 |
| 分块输出重叠 RFC #6872 | 独立设计 LingBot chunk 的依赖、event、缓冲区所有权与背压 | 提案不是已部署收益;先实现可验证的最小实验 |
产物 optimization_transfer_matrix.json:reference_url / inspected_sha / local_symbol / preconditions / already_enabled / hypothesis / experiment_id / rejection_reason。外部 PR 网页状态不能代替本地源码核验。
少搬一次数据,是否比换 Attention kernel 更重要?
在 A0 的相同 QKV、缓存长度、TP/SP 配置下,比较当前 gather + attention、直接 paged、受支持的替代 dense 后端;再独立比较当前 all-to-all 与兼容的布局融合 / transport。不能同时改变后端、精度和通信来宣称单项收益。
- 测量有效 token 与 padding token 的 FLOPs,gather / pack / transpose 字节、临时 HBM、NCCL payload、rank skew、SM 占用和通信暴露时间。
- 依次 A/B:只换后端 → 只减重排 → 只换 transport → 合并胜出项;保持 KV owning storage、slot 写入、历史可见性和 clean commit 语义。
- 证伪:重排减少但注意力访存变差,或通信更快却占用更多 SM,造成集成时间不降。输出“局部加速 / 集成无收益”,不隐藏失败配置。
只有实际出现的 kernel 才进入融合候选
按 inventory 核验 Norm、RoPE、modulation、residual、activation 与投影的邻接关系;先检查 torch.compile 是否已融合,避免重复开发。SwiGLU 仅在真实激活语义匹配时比较,不能替换模型激活。
- 对相同张量比较当前实现与单个融合候选,记录 launch 数、DRAM 字节、寄存器、spill、occupancy 和有效吞吐。检查 FP32 累积、epsilon、广播和 residual 精度。
- 检查 embedding / RoPE / 输出投影是否可以只构造 rank-local 数据或在较小表示上通信;先证明数学等价与分片边界,不假定 H3 的张量维度适用于 LingBot。
- 证伪:减少 launch 却增加寄存器压力、重复计算或 graph break;报告 isolated 与完整 chunk 的差异。输出 fusion on/off × shape × dtype 的延迟、MFU 和字节图。
先完成解码 kernel 归因,再决定改哪里
本地 H3 adapter 的 decoder 专用优化包含权重 materialization 与融合路径;LingBot Case D 则是 FP32、untiled、四 rank 宽度空间分片。两者不是同一 decoder,不把 H3 tile parallel 当作可直接替换的实现。
- 以同一组保存的 latent 对照串行参考与 Case D;逐块列出卷积、Norm、上采样、激活、拼接、halo、gather、布局转换和分配,不遗漏编码侧出现的 kernel。
- 先测每组耗时、MFU / 带宽、tile 利用率、workspace、重复 cast / contiguous 和 rank 不均衡;确定计算、访存、halo 或同步的主因。
- 按证据做独立实验:编译 / 融合、稳定 layout、消除重复 materialization、halo 打包、缓冲复用;只有存在合法实现时才比较 tile 或其他空间划分,并保留边界正确性检查。
- 主线保留 FP32 语义。更低精度是独立质量实验,不能借 H3 的精度约定将 Wan decoder 强制转 FP16 后标为等价优化。
- 同 latent 数值误差、空间接缝、时间连续性和 chunk cache 检查通过后,再做完整 rollout。局部 decode 加速还须考虑 halo / gather / conversion / D2H 总成本。
图谱:卷积实际时空尺寸 / 通道 × kernel 时间 / MFU;并行粒度 × 计算 / halo / gather 暴露时间;显存–延迟 Pareto。预算由完整关键路径反推,不预设解码耗时阈值。
按字节核对每一份输出,而不是只计 decode
Case D 已以 CPU-ready uint8 为边界,因此先盘点现有转换,不能重复认领已有压缩收益。为每次 FP32 / uint8、BCTHW / BTHWC、device / host / IPC 转换建立生产者与消费者表。
- 比较同一已解码张量的当前输出路径与候选:转换融合、避免重复 contiguous、pinned D2H、复用 staging buffer。计实际 payload、CPU copy、分配次数、GPU copy engine 活跃与等待。
- 分别计 GPU-ready、CPU-ready、跨进程接收、编码完成;编码实验固定编码器、线程数、像素格式、质量参数及 CPU affinity,避免把质量降低计为吞吐优化。
- 校验 clip / round / channel order、帧序和媒体可解码性;有损编码不要求压缩文件字节相同,但必须在固定设置下比较解码帧与质量。
从逐段串行到可审计的分块依赖图
先保存串行基线,再比较 decode 与 D2H、D2H 与 IPC / encode 的单对重叠,最后组合。DiT 与 VAE 共用四卡时,另测资源争用,不能假定异步就更快。只改变调度,不改变模型计算。
- 定义 chunk_id、CUDA event、buffer owner、完成信号、有限队列和背压;测试慢消费者、错误退出、取消、末块 flush、首块 fill、帧丢失 / 重复和状态泄漏。
- 用 Nsys 显示真实 overlap、SM / copy engine 争用、队列等待与关键路径;分别比较 TTFC、P95 / P99、rollout FPS 和完整服务时间。
- 根据可重叠区间求收益上限,不能相加阶段时长或引用外部收益百分比。若收益被争用 / buffer 成本抵消,则保留串行实现并说明原因。
主线之外:明确不混入结果
FP8 / 稀疏注意力 / 近似缓存是独立质量–性能研究,不参与同精度等语义排名;需另立配置和多 seed 验收。Offload 仅在容量成为实测限制时进入容量分支,不能自动称为加速。H3 专用蒸馏和音频优化不纳入 LingBot 本轮工作。
04 / 图谱交付规格
每个点来自 GPU 实测,每次比较有共同口径
以下是待交付图表规格,不是现有性能曲线。数据不足时留空并标原因,不生成示意数值、不跨缺失点插值。
| 图 | 坐标与系列 | 解决的问题 |
|---|---|---|
| Attention 后端延迟曲线 | X:真实 Sq / Skv,其他维度固定或分面;Y:P50 / P95 / P99;系列:backend | 哪些 shape 出现交叉点?误差区间是否支持“更快”? |
| Attention MFU–Shape 曲线 | X:真实 Sq / Skv;Y:有效 FLOP 利用率;系列:backend;按 TP/SP、dtype、mask、head dim 分面 | 同一 shape 谁更接近上限?padding、gather 与通信是否抵消核心效率?与延迟图联动。 |
| 最快后端热力图 | X:shape ID;Y:TP / SP 配置;颜色:通过正确性验证的最快后端 | 给每种并行 shape 选择后端;差异不显著标并列 / 不确定 |
| 相对加速热力图 | X:shape ID;Y:backend;颜色:同 shape 相对固定基线的加速比 | 收益是否稳健?失败、unsupported、缺失用独立标记 |
| Roofline 散点 | X:FLOPs / byte;Y:有效 FLOPs / s;颜色:算子族 / backend;大小:时间占比 | 离计算或带宽上限多远?区分 DRAM / L2 层级与 dtype |
| 集成开销与关键路径 | X:配置;Y:墙钟时间;时间线 / 分组条:kernel、重排、缓存、通信、等待 | isolated 胜者在完整流水线中是否仍胜出?重叠单独显示 |
| 重要算子 Shape 曲线 | GEMM:M/N/K;卷积:实际尺寸 / 通道;elementwise:元素数;copy / NCCL:字节 | 时延、有效吞吐 / 带宽、效率如何随规模变化? |
| 迁移优化消融与输出重叠图 | X:H1–H5 单变量 / 组合配置;Y:核心、集成和交付墙钟时间;并列 Nsys 时间线 | 收益来自哪里,是否重复计算已有优化?GPU 争用和背压是否恶化 P99? |
交互筛选:分辨率、TP / SP、dtype、阶段、缓存状态、backend、计时口径与分位数。悬浮显示完整 shape、3 次重复、样本数、置信区间、运行时间和原始证据链接;支持导出 CSV。理论上限用虚线并注明来源,不与实测点混色。
05 / 依赖与退出条件
先完成全流水线 kernel 归因,再按证据优化
1 · 基线与参考核验
新旧 Case D 各三次对照;完整 DiT 正确性通过才锁定基线。H0 同步完成源码映射,不改正在运行的基线。
2 · 全路径 Profiling
K0 → K1 → K2:完整时间线、全量 kernel invocation、逐组计数器归因。权限未开放的项目明确 missing;不能宣称完成硬件分析。
3 · 实际 Shape 图谱
A0 + G0:两种分辨率、有效 TP/SP、各缓存阶段的后端延迟 / MFU,以及重要算子曲线。微基准可先行,完整归因仍是硬门槛。
4 · 有证据的优化
H1–H5 按关键路径可改善部分排序;每个候选须有 K2 瓶颈卡、正确性门槛和单变量 A/B。解码不抢占全路径分析优先级。
5 · 集成与尾延迟
G1:单项通过后组合,检查输出、背压与取消。两种分辨率各三次独立重复,最终每次至少 1,000 个稳态样本并检验 P99 稳定性。
6 · 发布结论与缺口
逐组瓶颈卡、理论/实验 × 计算/通信图、迁移消融表、可复跑配置和媒体证据。未归因、未测与失败单列,全部门槛通过才宣布完成。
06 / 可审计交付
不仅有一张图,还有解释这张图的证据链
manifest.json:环境、硬件身份、源码 / 权重版本、完整配置、输入哈希、测量边界、seed、工具版本与干扰状态。kernel_invocations.jsonl/kernel_groups.csv:每次调用与每个 shape / 上下文组;coverage.json:调用、时间、分组覆盖和未知项。bottlenecks.json:逐组瓶颈、计数器证据、替代解释、反证实验、上限、优化建议与 unresolved 原因。timings.jsonl:无 profiler 原始样本与 repeat ID;graph_points.jsonl:图表点、统计方法、置信区间、理论 / 实测标签与证据链接。- Nsight Systems / Nsight Compute 原始报告、shape replay 脚本、正确性报告、优化 A/B 记录及端到端输出校验。
验收:每次调用可定位;每个分组有归因或明确未解决原因;所有图点可复跑;每个“更快”结论同时说明正确性、局部收益和端到端收益。没有足够证据就不宣布分析完成。
参考方法:NVIDIA Nsight Compute Profiling Guide · PyTorch SDPA。执行时核对本机工具版本与可用 metric / backend,不把文档示例当作实测。