| # Performance report |
|
|
| Measurements were collected on one NVIDIA GB10 (SM 12.1) with CUDA 13.0, |
| PyTorch 2.13.0+cu130, Triton 3.7.1, comfy-kitchen 0.2.27, and SageAttention |
| 2.2.0. The production workload is 864x480, 124 frames, 24 fps, 20 denoising |
| steps, and 20,423 sequence rows. |
|
|
| ## Profile-guided lever order |
|
|
| The original one-evaluation profile at 20,393 rows totaled 12.294 s and |
| 16,624 CUDA launches. Work proceeded in descending measured cost: attention, |
| NVFP4 activation preparation, dynamic `abs+amax`, SwiGLU, segmented |
| modulation, RMS/AdaLN preparation, and residual-gate transitions. |
|
|
| SageAttention quality routing, exact modulation fusion, and token-major NHD |
| layout reduced the profiled evaluation to 8.968 s, a 27.1% reduction. On the |
| 20,423-row serving workload, the warm production ladder moved from 9.21 |
| s/step with stock dynamic preparation to 8.47 s/step with native SwiGLU, |
| 8.24 s/step with direct QKV/out/FC1 preparation, and 8.01 s/step with the |
| staged exact AdaLN producer. That last 20-step run measured 186.66 s executor |
| time versus 191.6 s for the direct-auto baseline. |
|
|
| ## Latest exact operator gates |
|
|
| These are isolated CUDA-event or one-shot producer measurements. Projections |
| multiply the observed per-path delta by the exact eligible call count; they |
| are not end-to-end render deltas. |
|
|
| | Lever at 20,423 rows | Reference -> candidate | Projected opportunity | State | |
| |---|---:|---:|---| |
| | Dynamic RMS+AdaLN -> NVFP4 v2 | 4.231872 -> 2.339328 ms | 3.785 s / render | promoted | |
| | Attention gate -> dynamic RMS+AdaLN -> FC1 | 5.186528 -> 4.477152 ms | 0.709 s / render | promoted | |
| | Q RMSNorm+rot96 RoPE -> Sage Q INT8 | 7.417600 -> 6.193312 ms | 1.224 s / render | promoted | |
| | One-pass supplied-scale RMS+AdaLN | 2.339328 -> 1.604224 ms | 1.470 s / render | accepted in final static run | |
| | Gate -> supplied-scale RMS+AdaLN -> FC1 | 4.354976 -> 3.840608 ms | 0.514 s / render | accepted in final static run | |
| | Cross-block final gate -> next QKV | qualified producers reused | 0.512 s / render (projection) | warm FixedRef A/B +1.7 s; default **HOLD** | |
|
|
| The Q release gate was intentionally one-shot: no warmup and no timing loop. |
| It completed in 2.8 seconds and passed exact Q INT8, Q scale, transformed K, |
| BF16 attention output, output-amax marker, dynamic/supplied consumer triplet, |
| and tensor version-delta checks on default and non-default streams. The sealed |
| receipt is `labs/q_rms_rope_int8/release_qualification_s20423.json`. |
|
|
| The static gate ran once with zero warmup and one repetition. It completed in |
| 1.231 seconds, advanced the residual version once, and produced byte-exact |
| residual, rstd, packed E2M1, and E4M3 scales. The compact result is |
| `labs/gate_rms_adaln_nvfp4_static/gate_static_20423.json`. |
|
|
| The cross-block estimate combines 47 static transitions at 0.514368 ms saved |
| and two dynamic transitions at 0.709376 ms saved: 25.594 ms/evaluation, or |
| 0.511881 s across 20 evaluations. That figure remains a **kernel projection**. |
| A paired full-FixedRef executor A/B on the same warm dynamic stack did **not** |
| show a 0.51 s end-to-end win. |
|
|
| | Live cross-block check (2026-08-12) | Result | |
| |---|---| |
| | 2-step sampler-only smoke | success; 50.1 s wall / 46.8 s executor | |
| | 20-step FixedRef auto (after smoke) | success; executor 182.8 s | |
| | 20-step FixedRef stock (warm twin) | success; executor 179.1 s | |
| | 20-step FixedRef auto (warm rematch) | success; executor 180.8 s | |
| | Warm pair delta (auto − stock) | **+1.7 s** (executor, includes VAE/MP4) | |
| | Stack | sage2-quality, exact, SwiGLU/RMS/Q auto, cache off, **dynamic** NVFP4 | |
| | Static FixedRef attempt | refused: architecture fingerprint mismatch vs live `model.py` | |
| | Serving default | still `stock` / HOLD | |
|
|
| Receipts: `labs/crossblock_gate_qkv/live_chef_20260812.json`, |
| `labs/crossblock_gate_qkv/live_ab_20260812.json`. The +1.7 s executor |
| delta is not a kernel regression proof and is not compared to the accepted |
| static FixedRef 213.0 s. Do not promote the serving default. |
|
|
| ## Static activation boundary |
|
|
| Static source and binaries are integrated. The final path-neutral receipt is |
| `labs/nvfp4_static/final_rebind_receipt.json`: decision GO, source |
| `d7b196cc...`, architecture `b5808954...`, artifact `b3b4aee7...`, 196 layers, |
| 3,920 calls, and max observed ratio 0.917149. The required dynamic exclusions |
| are: |
|
|
| ```text |
| blocks.10.attn.qkv_proj |
| blocks.11.attn.qkv_proj |
| blocks.22.mlp.fc2 |
| blocks.46.mlp.fc2 |
| ``` |
|
|
| ## Final exact acceptance render |
|
|
| The final 864x480, 124-frame, six-reference fixed-reference workload run used 20 denoising |
| steps and source `d7b196cc...`. It completed successfully: |
|
|
| | Metric | Result | |
| |---|---:| |
| | Sampler | 147.0 s total / 7.35 s per step | |
| | Executor | 213.0 s | |
| | Wall | 213.8 s | |
| | Static routing | 196 layers applied; 4 required dynamic fallbacks | |
|
|
| This is a measured acceptance result, not an isolated projection. Executor |
| time includes non-sampler work and is not compared to warm ladder rows. The |
| receipt is `docs/final_acceptance_receipt.json`; the MP4 itself is excluded. |
|
|
| ## Accepted-stack profile (2026-08-12) |
|
|
| One warm DiT evaluation on the live accepted stack (sage2-quality, exact |
| modulation, SwiGLU/RMS/Q auto, cross-block **stock**, dynamic NVFP4). |
| Sampler-only 3-step, profiler wait=2 / active=1. Measured sequence **20,393** |
| rows (not the 20,423-row isolated-gate shape). Compact receipt: |
| `benchmarks/profiles/accepted_stack_20260812.json`. Chrome trace stays |
| outside Git. |
|
|
| | Rank | Kernel / boundary | Self CUDA / eval | Notes | |
| |---|---|---:|---| |
| | 1 | Sage INT8/FP8 attn + output-amax | 3.316 s | forbidden to reopen Sage3 | |
| | 2 | CUTLASS NVFP4 GEMM (4 linears) | 2.396 s | kitchen `scaled_mm`; FC1 993 ms | |
| | 3 | Command Buffer Full | 1.625 s | launch/sync; torch.compile forbidden | |
| | 4 | Q RMS-RoPE INT8 | 315 ms | already promoted | |
| | 5 | SwiGLU amax + NVFP4 pack | 283 + 261 ms | **largest remaining owned kernel** | |
| | 6 | TransposePadPermute | 150 ms | compact-K/V forbidden | |
| | 7 | RMS/AdaLN + gate producers | 147 + 143 + 132 ms | already promoted / cross-block HOLD | |
|
|
| Largest remaining *attackable* measured boundary was the dynamic SwiGLU |
| two-pass (amax then pack). A one-SwiGLU store+pack producer was implemented |
| in `labs/swiglu_nvfp4/native_cuda/` (`swiglu_nvfp4_dynamic_oneshot`). At |
| 20,423 x 28,672 it is **byte-exact** vs the two-pass producer and vs eager |
| kitchen (packed FP4, E4M3, global scale) but **slower**: 11.969 ms vs |
| 10.660 ms. Writing/rereading the 558 MiB BF16 activation costs more than |
| recomputing SiLU. Receipt: |
| `labs/swiglu_nvfp4/native_cuda/gate_oneshot_20423.json`. Serving is |
| unchanged. Next owned identity is not this workspace path. Do not reopen |
| Sage3, torch.compile, cuDNN SDPA, K-smooth, compact-K, or CTA Q=256. |
|
|
| The five-attribute bridge includes the exact plan-owned pre/post hook IDs. Any |
| extra local, backward, or global hook; stale scale object; partial bridge; |
| replacement; patch; dtype/shape/device mismatch; or identity mismatch rejects |
| the static producer before mutation. Failures after mutation propagate and do |
| not replay stock work. |
|
|
| ## Correctness policy |
|
|
| - Native NVFP4 gates require zero packed-byte and block-scale mismatches and |
| exact scalar-scale bits. |
| - Q promotion requires exact attention and consumer parity on two streams, |
| not only producer-local equality. |
| - Static scales require source/checkpoint/workload binding and held-out |
| validation; a kernel byte gate alone does not validate a calibration. |
| - Cold runs, calibration runs, changed seeds used to invalidate caches, and |
| changed reference sizes are labeled and never mixed into clean deltas. |
| - Full renders are reserved for final acceptance after seconds-scale gates. |
|
|