28 KiB
H3 Performance Roadmap
This document is the canonical performance plan for the direct MiniMax H3 runtime on GB10/SM121, RTX PRO 6000/SM120, and B200/SM100. It separates measured results from projections and requires numerical and visual gates before an approximate optimization becomes a default.
Executive Decision
The first component, bit-exact H3 modulation and residual-gate fusion on GB10, is complete.
This is the best first engineering target because:
- The current path spends about
39 msper representative block in modulation and residual gates, before counting the separate25.8 msSwiGLU operation. - A Triton reference with explicit BF16 rounding already exists and has been validated bit-exact against eager H3 block behavior.
- The optimization does not alter attention semantics, weights, precision, or scheduler behavior.
- The same elementwise design applies to SM100, SM120, and SM121.
- It provides a low-risk test of the profiling, fallback, parity, and deployment machinery required by later custom kernels.
The next component is NVFP4 scale, activation packing, GEMM, and epilogue fusion. Component 1 established the numerical contracts and validation infrastructure required to attempt it safely. A custom attention target follows this component and should preserve SageAttention 2.2.0's validated numerical policy while adopting zero-copy strided QKV input and SM-specific fused execution. Sol sparsity must remain experimental until full latent, audio, and visual quality gates pass.
Completed result: blocks 0, 24, and 49 are bit-exact and 3.6-3.9% faster;
the canonical 12-step sampling run is checksum-identical and improves from
310.11 s to 301.05 s (3.0%). Peak allocated memory falls by
408,825,856 bytes. Evidence is in
benchmarks/gb10-h3-fused-elementwise-1344x768-124f-seed440420.json.
Internal closeout summary:
Vortex Component 1 is complete. We implemented bit-exact H3 modulation and residual-gate fusion on GB10, reducing canonical 12-step sampling from 310.11 seconds to 301.05 seconds while retaining identical video and audio checksums. The fused runtime improves individual transformer blocks by 3.6-3.9%, reduces peak allocated memory by approximately 390 MiB, and passes 32 deployed numerical and integration tests. This establishes that Vortex can remove meaningful H3 execution overhead without changing the model's numerical program or generated output.
This is measured engineering evidence, not a projected optimization.
Measured GB10 Baseline
The representative workload is 1344x768, 124 frames, 100 synthetic refined-text tokens, and 37,810 packed tokens. Measurements use block 24 unless noted.
Warmed top-level sampling step:
| Backend | Step time | Relative to Sage2 |
|---|---|---|
| SageAttention 2.2.0 | 25.414 s |
baseline |
| Sol BF16, tau 1.3 | 21.573 s |
1.18x |
| Sol residual-INT8 Q/K, tau 1.3 | 19.774 s |
1.29x |
The denoiser consumes effectively all warmed-step time. Packing takes about
15 ms; output transformation and the RES update together take about 1.4 ms.
Representative Sage2 block:
| Component | P50 | Approximate block share |
|---|---|---|
| Attention | 259.9 ms |
50.5% |
| NVFP4 QKV/out/FC1/FC2 projections | 151.1 ms |
29.3% |
| Modulation, residual gates, and SwiGLU | 64.9 ms |
12.6% |
| QKV and output layout materialization | 20.3 ms |
4.0% |
| Norm and RoPE | 19.7 ms |
3.8% |
| Full module forward | 514.9 ms |
baseline |
SageAttention 2.2.0 internals:
| Component | P50 |
|---|---|
| Q/K INT8 quantization | 6.45 ms |
| V FP8 quantization | 10.19 ms |
| Attention forward | 239.00 ms |
| K smoothing and framework estimate | 2.98 ms |
Sol residual-INT8 Q/K internals at tau 1.3 with exact conditioning KV:
| Component | P50 |
|---|---|
| K summary and residual quantization | 4.45 ms |
| V summary | 2.45 ms |
| Q quantization and routing threshold | 4.27 ms |
| Total preparation | 11.53 ms |
| Routed forward estimate | 114.88 ms |
| Total | 126.42 ms |
INT8 P-by-V is not useful on GB10: it increases total Sol attention time to
138.65 ms.
Quality Boundary
Current Sol routing is a performance bound, not an accepted Sage2 replacement.
| Sol policy | Relative L2 versus Sage2 | Performance |
|---|---|---|
| Fully dense, tau -100 | 0.0171 |
3.2x slower than Sage2 |
| Exact conditioning KV, tau 0.8 | about 0.471 |
about 1.12x faster |
| Exact conditioning KV, tau 1.3 | about 0.626 |
about 1.87x faster in isolated attention |
No measured Sol setting is both faster than Sage2 and numerically Sage-like. Exact conditioning sinks protect prompt/audio rows but do not remove sparse video-attention error. A timestep or block hybrid therefore needs complete latent, audio, lip-sync, and visual evaluation; attention-output timing alone cannot approve it.
Opportunity Ranking
The recoverable ranges below overlap and must not be added directly.
| Priority | Target | Measured cost | Plausible saving | Risk | Portability |
|---|---|---|---|---|---|
| Complete | Fuse modulation and residual gates | 39.1 ms/block projected scope |
3.6-3.9% measured block gain |
Low | Validated on SM121 |
| 1 | Fuse NVFP4 scale, pack, GEMM, and epilogue | 151.1 ms/block projections |
30-75 ms/block |
Medium | Architecture-specific |
| 2 | Retain Vortex scale discovery | up to 21 ms/block versus Comfy scale path |
3-9% block gain already measured |
Low | SM100/120/121, retune launch |
| 4 | Sage-compatible zero-copy dense attention | 259.9 ms/block attention plus 20.3 ms layout |
70-140 ms/block |
High | Separate SM100/120/121 policy |
| 5 | Fuse SwiGLU with FC1/FC2 boundaries | 25.8 ms/block plus projection traffic |
5-15 ms/block |
Medium | SM100/120/121 |
| 6 | CUDA graphs or persistent denoiser execution | Not isolated yet | likely 1-5% sampling |
Medium | Shape-bucket-specific |
| 7 | Quality-gated sparse scheduling | up to 140 ms/block attention bound |
Unknown accepted saving | Very high | Backend-specific |
Native Sage NHD was tested and rejected as a standalone optimization. It was numerically exact but did not materially improve median path time and had worse tail latency. Eliminating layout cost requires fusion with QKV production, RMSNorm/RoPE, or the attention kernel rather than changing Sage's layout flag.
Implementation Phases
Phase 1: Exact H3 Elementwise Fusion
Status: complete on GB10/SM121. Spark deployments enable
H3_FUSED_ELEMENTWISE=1; other deployments retain the eager default until
validated on their architecture.
Implement an opt-in direct-runtime path for:
- RMSNorm output plus segmented AdaLN scale/shift modulation.
- Attention residual gate/add.
- MLP segmented scale/shift modulation.
- MLP residual gate/add.
- A request-layout segment-index cache reused by all 50 blocks and sampling steps.
Preserve explicit BF16 rounding boundaries. Keep the eager implementation as a fallback until all gates pass.
The achieved 3.0% sampling gain is materially below the original theoretical
20-35 ms/block opportunity. Before extending this fusion, profile:
- Which modulation, gate, or add launches remain outside the fused path.
- Whether tensor conversions or intermediate allocations remain.
- Whether the fused kernels are launch-bound or bandwidth-bound.
- Whether generated kernels perform unnecessary loads or stores.
- Which remaining elementwise operations can move into exact NVFP4 GEMM epilogues.
The GB10 Nsight follow-up is complete. One warmed block has 53 kernel launches.
The fused path contains exactly two modulation and two residual gate/add
launches; no modulation, gate, or add launch remains outside it. Those four
kernels still consume about 20.48 ms, showing that the residual is tensor
traffic rather than launch overhead. The four NVFP4 projections account for 32
launches across scale reduction/finalization, scalar conversions, block-scale
initialization, activation packing, and GEMM. Their current intermediate tensor
sizes sum to approximately 7.73 GB per block when counted at each projection
boundary. See
benchmarks/gb10-component2-nsys-summary-1344x768-124f-seed440420.json.
Success criteria:
- Bit-exact outputs at blocks 0, 24, and 49.
- Bit-exact one-step full-denoiser video and audio outputs.
- No change to a complete 12-step latent checksum.
- At least
5%median block improvement or3%warmed sampling improvement. - No peak-memory regression.
Phase 2: Architecture Baselines
Capture the same component report on each architecture before writing a shared kernel abstraction:
| Architecture | Required baseline |
|---|---|
| SM121 GB10 | Sage2 2.2, current Vortex scale path, 38K and 74K tokens |
| SM120 RTX PRO 6000 | SDPA, packaged Sage2 2.2, 38K and 74K tokens |
| SM100 B200 | SDPA, forced cuDNN SDPA, Sage2 if supported, 38K and 74K tokens |
Record actual kernel names, clocks, power, SM utilization, achieved bandwidth, and achieved tensor throughput. Do not infer one architecture's policy from another's result.
Phase 3: NVFP4 Fused Projection Prototype
Status: active next component on GB10/SM121.
The first profile also exposed and fixed a native activation-packer layout bug: the previous width-specific block-scale swizzle failed at the attention output's 7168-feature width. The replacement general 128-row by 4-scale-column mapping is packed-bit exact at H3 widths 5376, 7168, and 14336, and all four linear outputs now match Comfy exactly. Standalone native packing is not consistently faster, so it remains prototype infrastructure rather than a deployed backend.
Component 2 execution order, revised from the measured Nsight profile:
- Make QKV projection land directly in the attention backend's required layout, with Q/K normalization and RoPE operating there.
- Make attention output land directly in the token-major layout consumed by the output projection.
- Eliminate complete NVFP4 packed-activation and block-scale materialization through a CUTLASS/CuTe producer-consumer or persistent design.
- Integrate reference-exact residual gates into output-projection and FC2 epilogues.
- Optimize the standalone packer only after the boundary-removing paths exist.
- Recapture the complete block profile after every accepted boundary removal.
The first two layout items are complete for single-GPU Sage2 on GB10. Sage2
accepts the projection-strided NHD Q/K/V views directly, including in-place Q/K
normalization and RoPE, and emits contiguous NHD output that reshapes to
token-major rows without a copy. This removes three QKV copies and the attention
output copy without replacing the projection GEMM. Blocks 0, 24, and 49 and the
two-step and canonical 12-step trajectories are bit-exact. Canonical sampling
improves from the Component 1 baseline of 301.05 s to 290.23 s (3.6%),
with cumulative improvement of 6.4% from the original 310.11 s baseline.
The accepted Nsight recapture falls from 53 to 49 launches and contains none of
the four large BF16 layout-copy kernels.
Evidence is in
benchmarks/gb10-sage-strided-nhd-summary-1344x768-124f-seed440420.json.
The target NVFP4 dataflow is not another wrapper around
scaled_mm_nvfp4. Tensor-core GEMMs require exact packed-data and block-scale
layouts, so avoiding durable HBM intermediates likely requires an owned
CUTLASS/CuTe collective with tile-level producer-consumer execution.
Interface investigation confirms this boundary. Comfy Kitchen 0.2.31 allocates
complete QDATA, block-scale, and BF16 output tensors before invoking a cuBLAS
blockwise FP4 GEMM with fixed pointers. It cannot consume incremental tiles.
CUTLASS DSL 4.6.2's stock SM121 E2M1/E4M3 persistent kernel passes on GB10, but
its public mainloop also TMA-loads prebuilt A and SFA. The owned implementation
will follow NVFP4_STREAMING_DESIGN.md: preserve the mandatory global-scale
reduction, replace the A/SFA producer in one fixed tile, then measure multi-N
reuse before attempting full H3 shapes.
P0 is complete for the selected streamed roles. The owned CuTe bridge and
alpha-before-BF16 epilogue are bit-exact
for QKV, attention output, and FC1, proving E2M1, E4M3, and global-scale
interoperability. FC2 remains non-exact because its reference uses a different
reduction policy (max_abs=16 after the correct epilogue). Resolve that policy
or retain an explicit FC2 cuBLAS fallback before the streaming A producer begins.
FC2 fallback is selected. The streamed backend will reject FC2 dispatch and use the existing Comfy/cuBLAS implementation there; QKV, attention output, and FC1 advance to the P1 software A/SFA producer.
The fixed 128-row P1 producer-consumer checkpoint is complete. The stock kernel's 32-thread DMA warp produces four rows per lane directly into staged E2M1 A and E4M3 SFA shared memory; only B and SFB retain TMA loads. Every 128-K tile has zero packed-data and scale-byte differences for real QKV, attention-output, and FC1 activations, and all three complete GEMM outputs are bit-exact after the fused alpha epilogue. The streamed kernel receives BF16 A plus its tensor scale and has no global activation QDATA or SFA input.
The final arithmetic contract includes Comfy's --use_fast_math behavior:
encode scale must use PTX rcp.approx.ftz.f32. Correctly rounded division changes
FP4 midpoint decisions for real H3 values. CUTLASS DSL 4.6.2 also requires a
static contiguous destination view for vector FP4 stores. Evidence is in
benchmarks/gb10-cute-p1-stream-a-summary.json.
The P1 timing gate rejects direct per-output-N-CTA streaming. At 128 rows, the
exact streamed kernel is 9.14x slower than the complete reference projection
for QKV, 12.98x slower for attention output, and 12.44x slower for FC1.
Producer overhead is linear at approximately 0.56-0.60 us per (N,K) tile.
Break-even against the removed quantizer would require theoretical N reuse of
78, 28, and 102 tiles respectively, which cannot be implemented by retaining
duplicate accumulator state under the current register budget.
The next P2 prototype is a bounded global packed-tile ring or persistent work
queue. It must produce each (M,K) A tile once, expose it to all N consumers,
and recycle the slot, trading bounded global packed traffic for elimination of
the measured repeated BF16 conversion. Do not add canonical-shape runtime
dispatch for the rejected schedule. FC2 remains an explicit Comfy/cuBLAS
fallback. Evidence is in
benchmarks/gb10-cute-p1-stream-a-timing-summary.json.
The bounded-ring P2 checkpoint now uses caller-owned native QDATA/SFA buffers and
an allocation-free _into producer. A capacity sweep with one full-activation
scale selected 2048 rows. The ring occupies 6.19 MB for QKV/FC1 and 8.26 MB for
attention output. Measured chunk latency improves QKV by 10.7%, attention
output by 14.4%, and FC1 by 11.3%; modeled canonical totals improve by
10.1-12.5%. Every packed byte, scale byte, and BF16 output matches the
reference. The 4096-row point regresses, confirming that larger buffers are not
monotonically better. Evidence is in
benchmarks/gb10-cute-p2-ring-capacity-summary.json.
Complete 37,810-row projection parity now passes for QKV, attention output, and FC1 in blocks 0, 24, and 49. Every one of the 19 chunks, including the final 946-row tail, is bit-exact. QKV has a stable approximately 32 ms ring time and a positive result across all three blocks. Attention-output timing is mixed. FC1 timing is not usable from the duplicate-model harness because multi-gigabyte output pressure caused large variance and one container stop.
The opt-in QKV runtime gate is complete and rejects the current bounded-ring
schedule. An alternating baseline/ring benchmark inside one loaded block removes
the clock, allocator, input, and model-copy bias present in separate-process
profiles. Blocks 0, 24, and 49 remain bit-exact, but the 2048-row ring regresses
median block time by 0.81%, 0.52%, and 0.52%, respectively. On block 24,
3072 rows regress by 1.00%, 4096 by 0.24%, 8192 by 4.80%, and a 37888-row
full workspace by 14.49%. The isolated projection win does not survive the
chunk launch and scheduler overhead. Keep the implementation opt-in and disabled;
do not spend trajectory-validation compute until a launch-fused work queue or a
different persistent scheduler passes this same block gate. Attention output and
FC1 remain experimental, and FC2 remains the explicit Comfy/cuBLAS fallback.
Evidence is in benchmarks/gb10-cute-qkv-runtime-block-gate-summary.json.
The post-optimization profile identifies Sage2's mainloop as the largest cost.
Canonical sampling is 288.93 s; block 24 is
468.22 ms, and its production NHD Sage2 call is 258.47 ms. The existing
SM89 mainloop alone takes 238.81 ms, while Q/K and V quantization together take
18.34 ms. A direct Hopper WGMMA retarget was rejected by SM121 ptxas, and
CUTLASS SM120/121 UMMA does not support the INT8 QK operation needed for exact
Sage2 parity. Do not substitute Sage3's different FP4 algorithm under the exact
optimization contract.
The next implementable exact target was AdaLN modulation into NVFP4 production.
The MSA and MLP modulation passes cost 10.47 ms and 10.60 ms and materialize
their values in the RMSNorm buffers solely for QKV and FC1. The deployed fusion
recomputes the exact BF16 values inside Vortex scale/pack and retains Comfy
GEMMs. Complete producer bytes match in blocks 0, 24, and 49. Alternating block
medians improve by 0.28-0.79%; warmed two-step and 12-step runs improve by
0.52% and 0.56%, with bit-identical outputs. Spark deployments enable
H3_NVFP4_MODULATE_FUSION=1. Evidence is in
benchmarks/gb10-nvfp4-modulate-fusion-summary.json.
SwiGLU-to-FC2 producer fusion is complete. Recomputing the exact BF16 SiLU and
multiply boundaries inside Vortex scale/pack removes the complete intermediate
activation while retaining the reference Comfy FC2 GEMM. The real producer is
byte-exact and takes 21.93 ms. Alternating blocks 0, 24, and 49 improve by
2.14-2.26%; the warmed canonical 12-step trajectory improves by 4.07% with
identical video and audio tensors. Enable H3_NVFP4_SWIGLU_FUSION=1 for Spark
single-GPU deployments. Evidence is in
benchmarks/gb10-nvfp4-swiglu-fusion-summary.json.
The mandatory post-fusion profile supersedes the earlier approximately 515 ms
block distribution. With all production flags enabled, fresh block-24 timing is
458.78 ms median without Nsight and 465.78 ms across the Nsight GPU span.
The 41 kernels have only 0.084 ms total inter-kernel idle time, so CPU launch
gaps are not a block-level bottleneck. A complete warmed sampling step takes
23.708 s, contains 2,694 kernels, and has 12.995 ms total inter-kernel idle
time.
The fresh block kernel-time distribution is:
| Component | Time | Share |
|---|---|---|
| Sage2 preparation and mainloop | 268.22 ms |
57.60% |
| Four NVFP4 GEMMs | 125.11 ms |
26.87% |
| NVFP4 scale and packing | 41.53 ms |
8.92% |
| Norm and RoPE | 19.86 ms |
4.27% |
| Two residual gate/add kernels | 10.94 ms |
2.35% |
The one-step distribution independently matches these shares within 0.5
percentage points. The standalone modulation and SwiGLU kernels are gone.
Their remaining producer work is 13.04 ms for modulated QKV/FC1 packing and
23.04 ms for SwiGLU-to-FC2 packing. The block still records 8,009,578,496
positive self-allocated bytes, but there are no large activation-layout copy
kernels or explicit CUDA memcpy operations. Remaining conversions are small
AdaLN table and scalar operations.
GB10 exposes no direct physical DRAM-byte counter. Nsight Compute measures
320.999 GB of L2-request traffic for the block. With cache control disabled,
L2 read/write miss sectors imply a 42.117 GB off-chip request proxy: NVFP4
GEMMs account for 56.25%, packing 18.25%, Sage2 15.09%, norm/RoPE
6.54%, and gates 3.87%. This separates the time bottleneck, Sage2, from the
off-chip traffic bottleneck, the NVFP4 GEMMs. Do not select a new kernel from
the old profile. See
benchmarks/gb10-fully-fused-fresh-nsight-summary.json.
The follow-up real block-24 Sage2 decomposition now selects the next exact
kernel experiment. Manual preparation plus the existing prequantized mainloop
is byte-exact against public SageAttention 2.2.0. Uninstrumented median phase
times are 2.37 ms K smoothing, 7.63 ms combined Q/K quantization, 10.61 ms
combined V transpose/quantization, and 237.09 ms for the fused mainloop.
The full-counter mainloop capture is profiler-perturbed to 258.92 ms, so its
duration is not used as the baseline. Its ratios establish the bottleneck:
| Mainloop metric | Result |
|---|---|
| Registers per thread | 255 |
| Dynamic shared memory per CTA | 32 KiB |
| Achieved occupancy | 16.83% / 8.08 warps per SM |
| Scheduler cycles with no eligible warp | 63.53% |
| INT8 QK tensor-pipe utilization | 37.77% of elapsed cycles |
| FP8 PV tensor-pipe utilization | 37.77% of elapsed cycles |
| Combined tensor-pipe utilization | 75.54% |
| Memory throughput | 31.61% |
| L2 hit rate | 98.84% |
| L2 request traffic | 161.50 GB |
| Off-chip request proxy | 1.85 GB |
| Excess shared-memory wavefronts | 7.68% |
This explains why high SM activity did not imply a saturated tensor pipeline.
QK and PV alternate on separate INT and FP tensor sub-pipelines, while online
softmax, scaling, conversion, and synchronization occupy scalar pipelines.
Only 0.46 warps per scheduler are eligible on average. Fixed-latency
dependencies consume 2.01 of the 5.48 cycles between issued instructions,
and math-pipe throttle consumes another 1.24; memory scoreboards are much
smaller. The 255-register footprint limits the kernel to two CTAs per SM, so it
cannot hide these dependencies. Q and KV tail sweeps each add less than 1 ms and
exclude tail scheduling as the primary target.
The source-identical classic SM89 P0 is complete and rejected. The exact
three-CTA cliff is 168 registers/thread, not approximately 170: 170 still has
two CTAs and 16.67% theoretical occupancy, while 168 reaches 25% at the cost
of 4.95 billion local spill requests and 78.79% no-eligible cycles. Caps from
240 through 170 never change residency and progressively worsen scheduler
eligibility.
Byte-exact source variants also missed the 3% gate. Narrowed scopes reduced
static spills from 44/44 to 12/12 bytes and dynamic spill requests by 73%, but
improved interleaved latency by only 0.06%. In-place score storage was
+0.01%; early K prefetch was -0.30%; independent softmax-chain interleaving
was -0.02%. The persistent 128-register FP32 output fragment plus exact QK or
instantaneous PV fragments prevents a source-only lifetime cleanup from
reaching the next residency tier.
The shared-memory follow-up is also closed. Source attribution maps all
626,970,624 excessive wavefronts to four repeated V-staging LDGSTS.128
instructions. A 128-byte padded V stride raised dynamic shared memory from 32
to 40 KiB but left the excess count exactly unchanged and changed latency by
-0.04%. No complete-block benchmark or deployment was run because no mainloop
variant crossed 3%. Evidence is in
benchmarks/gb10-sage2-p0-register-scheduler-analysis.json, the per-variant
latency JSON files, and the P0 NCU reports.
Materializing the optional BF16 LoRA input while these fused producers pack
NVFP4 was also tested against the official Turbo-4 adapter. The isolated
1344x768, 124-frame trajectory was bit-exact but regressed from 131.11 s to
135.14 s (3.08%). Reject this implementation: its extra BF16 writes cost
more than the removed standalone producer. Active LoRA must retain the existing
materialized fallback unless a future design consumes the producer values
without global-memory materialization. Evidence is in
benchmarks/gb10-nvfp4-lora-producer-fusion-turbo4-isolated.json.
An exact residual-gate epilogue must preserve this numerical program:
- Complete NVFP4 GEMM accumulation.
- Convert to the reference BF16 GEMM output.
- Apply the reference-equivalent gate multiplication and its BF16 boundary.
- Add the BF16 residual using the reference operation order.
- Round the final output to BF16.
Bit-exact GEMM output alone is insufficient. Validate randomized epilogues, representative real blocks, all 50 blocks in one denoiser step, a two-step trajectory, and the canonical 12-step trajectory before enabling an epilogue.
The direct-layout target extends naturally to distributed execution: QKV tiles must be able to land in rank-destined Ulysses buffers, and attention output must land in the output projection's local token-major layout without an intervening transpose or contiguous copy.
Prototype behind Nvfp4Linear so model code remains unchanged. Compare:
- Comfy Kitchen baseline.
- Vortex scale plus Comfy pack/GEMM.
- Fused scale and activation pack.
- Fused scale, pack, GEMM, bias, and output epilogue.
- Transformer Engine or CUTLASS reference where supported.
Gate every variant on packed activation identity, linear output error, block output error, full denoiser-step error, and final media quality.
Phase 4: Dense Sage-Compatible Attention
The first owned attention kernel should remain dense and target Sage2 behavior:
- Consume strided BSHD views directly from fused QKV output.
- Preserve Sage2 per-warp INT8 Q/K quantization and FP8 V policy.
- Preserve its accumulation and K-smoothing behavior.
- Fuse Q/K/V preparation with the attention launch where profitable.
- Emit token-major output suitable for the NVFP4 output projection without an intermediate transpose/contiguous allocation.
- Tune independently for SM100, SM120, and SM121.
The initial goal is 1.5x attention speedup with bit-exact Sage2 output where
the operation order permits it; any nonzero tolerance must be declared and
quality-gated before implementation. A 2x attention target is stretch.
Phase 5: Sparse Hybrid Research
Only after the dense backend passes:
- Keep early quality-sensitive sampling steps dense.
- Keep first/last sensitive transformer blocks dense.
- Force text, reference, and audio conditioning KV blocks exact.
- Sweep tau by timestep using complete generated media, not random attention tensors alone.
- Reject any policy that degrades prompt adherence, identity, lip sync, audio onset, or temporal stability.
Performance Targets
GB10 / SM121
The current two-step profile implies roughly 305 s for a warmed 12-step
1344x768/124-frame sampling run.
| Target | Estimated sampling | Speedup |
|---|---|---|
| Conservative | 215-240 s |
1.3-1.4x |
| Engineering | 170-195 s |
1.6-1.8x |
| Stretch | 130-145 s |
2.1-2.3x |
| Aggressive ceiling | about 120 s |
about 2.5x |
Use 1.5x as the commitment target, 1.8x as the engineering target, and
2.3x as stretch. Do not plan around a 5x end-to-end gain.
RTX PRO 6000 / SM120
These projections have lower confidence because the measured RTX baseline uses PyTorch SDPA rather than packaged Sage2.
| Workload | Current SDPA | Engineering target | Stretch target |
|---|---|---|---|
| 1344x768, 124 frames | 97.94 s |
45-60 s |
35-45 s |
| 1344x768, 243 frames | 311.02 s |
120-170 s |
90-120 s |
Packaging and profiling Sage2 2.2 on SM120 is the first RTX action. Expected
overall improvement is 1.6-2.2x at 124 frames and 1.8-2.6x at 243 frames;
stretch ranges are 2.2-2.8x and 2.6-3.5x respectively. These are planning
ranges, not commitments.
B200 / SM100
Measured B200 SDPA sampling is 79.72 s at 124 frames and 257.86 s at 243
frames, only 1.23x and 1.21x faster than RTX PRO 6000 despite much larger
theoretical FP4 and memory-bandwidth capability. No optimized B200 target is
assigned until component profiling confirms actual SDPA dispatch, NVFP4 kernel
selection, clocks, power, utilization, and achieved throughput.
The current B200 result measures this runtime path, not B200's hardware ceiling.
Evidence
benchmarks/gb10-sampling-component-profile-1344x768-124f-seed440420.jsonbenchmarks/gb10-37810-token-optimization-profile-seed440420.jsonbenchmarks/rtxpro6000-server-1v2-sdpa-scaling-seed440420.jsonbenchmarks/b200-vs-rtxpro6000-server-sdpa-1344x768-seed440420.jsontools/profile_h3_block.pytools/profile_attention_components.pytools/profile_hybrid_attention.pytools/profile_sampling_stages.py
Component timings use synchronized probes for attribution. End-to-end claims must use separate uninstrumented runs. Resident services remained loaded during GB10 profiling, so medians are preferred over means and final claims require an isolated rerun.