Fix activation-capture throughput: 2xH100 held idle ~17h CPU-bound in #2356 P2 capture
Highlight text on any card (body, plan, or an event) to anchor a comment, or leave a whole-task comment here. Mention @claude to summon a reply.
No comments yet.
kind: infra
Goal
Fix the activation-capture throughput regression surfaced by #2356. #2356's P2 capture (context + answer residual-stream extraction via output_hidden_states) was planned at 1.3 GPU-h but ran ~17h, CPU-bound, holding a 2×H100 pod idle the whole time (GPU util mostly 0-25%; session recorded epm:compute-deviation v1). The per-row hidden-state reduction/write dominates on CPU while the GPU sits idle.
Fixes to evaluate (pick per profiling):
- Route capture off the peak-width GPU pod — capture needs a GPU forward pass but not 2×H100; a single cheap GPU (or overlapping the CPU reduction with the next batch's GPU forward) removes the idle-GPU burn.
- Batch the extraction — larger forward batches + vectorized reduction; avoid per-row Python reduction loops.
- Overlap GPU compute with CPU write (async/pipelined) so neither stalls the other.
Reusable target: the issue2356_pod.py capture path and any shared activation-capture helper future capture-heavy experiments inherit. Contrast: the #2356 fits (P6/P7) already ran correctly on a cpu-bigmem pod — only the capture stage held the wide GPU pod.
Provenance
Filed from the #2356 monitoring session after the run parked (H1 confirmed). Origin: capture-throughput lesson promised at the #2356 wrap.