Flat bands (FFN/MoE, projections, Gated-DeltaNet recurrence, norms) are per-token constant — they cost the same whether the new chunk sits at depth 0 or 40k. Only the attention core rises, because each new token's flash-attention sweeps the growing KV of the 10 full-attention layers — while the 30 Gated-DeltaNet layers carry an O(1) state and stay flat regardless of depth. The dashed line marks where the rising attention band overtakes FFN/MoE.
Same data, un-stacked. The attention-core line climbs from 0.11 ms/tok at depth 0 to 12.66 ms/tok at 40k and crosses the flat FFN/MoE line (4.26 ms/tok) at L ≈ 13.6k tokens. Below the crossover the model is FFN/MoE-bound; above it, attention-bound — the regime almost every multi-step OSWorld task lives in once a few screenshots accumulate.
| depth L | total ms/tok | FFN / MoE experts | Gated-DeltaNet recurrence | Q/K/V/O projections | norms / embed / LM head | attention core (QKᵀ·softmax·V) |
|---|---|---|---|---|---|---|
| 0.0k | 8.19 | 4.09 | 3.17 | 0.62 | 0.21 | 0.11 |
| 2.5k | 9.09 | 4.13 | 3.23 | 0.63 | 0.20 | 0.89 |
| 5.1k | 9.81 | 4.13 | 3.19 | 0.63 | 0.20 | 1.65 |
| 7.6k | 10.74 | 4.20 | 3.26 | 0.64 | 0.20 | 2.43 |
| 10.2k | 11.47 | 4.18 | 3.24 | 0.63 | 0.20 | 3.21 |
| 12.8k | 12.31 | 4.21 | 3.26 | 0.63 | 0.20 | 4.00 |
| 15.3k | 13.14 | 4.26 | 3.22 | 0.64 | 0.20 | 4.82 |
| 17.9k | 14.25 | 4.37 | 3.31 | 0.66 | 0.21 | 5.71 |
| 20.4k | 14.74 | 4.29 | 3.24 | 0.64 | 0.21 | 6.36 |
| 23.0k | 15.72 | 4.27 | 3.35 | 0.65 | 0.21 | 7.24 |
| 25.6k | 16.53 | 4.26 | 3.36 | 0.65 | 0.21 | 8.04 |
| 28.1k | 17.22 | 4.25 | 3.25 | 0.65 | 0.21 | 8.85 |
| 30.7k | 17.89 | 4.24 | 3.24 | 0.65 | 0.21 | 9.55 |
| 33.2k | 18.83 | 4.25 | 3.31 | 0.65 | 0.21 | 10.41 |
| 35.8k | 19.63 | 4.25 | 3.26 | 0.65 | 0.21 | 11.26 |
| 38.4k | 20.45 | 4.27 | 3.28 | 0.65 | 0.21 | 12.04 |
| 40.4k | 21.17 | 4.26 | 3.38 | 0.65 | 0.21 | 12.66 |
build-cpu libraries and sets the
public llama_context_params.cb_eval callback. In TIMED mode the callback returns
true for every node, which makes the scheduler compute each ggml node alone and synchronise
after it (ggml-backend.cpp compute-splits) — so observe−ask is that node's
wall time. In FUSED mode it returns false, nodes fuse and run at native speed; we wrap
llama_decode with a monotonic clock for the true marginal prefill time of a 512-token
chunk at depth L.blk.<L>.attn_q/…),
its ggml op (FLASH_ATTN_EXT→attention core, GATED_DELTA_NET/SSM_CONV→GDN,
MUL_MAT_ID→MoE experts), and the layer's recurrent/attention type. Coverage of timed wall
by the five bands is 100% — nothing falls through.FLASH_ATTN_EXT op per attention layer, so the
"attention core" band already includes its softmax and the value sweep — it is not decomposed further.
Quality is irrelevant to op timing (these matmul/softmax/scan kernels are data-independent), so the probe
uses filler tokens. Measured CPU-only, -t 8 / -tb 16, matching the production server; clean
room (server stopped), 3 cycles, median per depth. The 4 slow LP-E cores are inside the
16-thread batch set, identical for both modes, so they add wall jitter but cannot bias the shares.model Holo3-35B-A3B.i1-Q4_K_M.gguf · n_ctx 41984 · ubatch 512 ·
80 depths to 40k · cycles 3
cb_eval per-node timing ·
raw per-node JSON + categoriser in the run folder · 🤖 Generated with Claude Code