Files
esh-pfi-infrastructure/persistent-memory.d/2026-09-11-measured-two-concurrent-training-jobs-on.md
T
vh 838132cd6b memory: snapshot — FV cross-site routing fixed, fleet conventions pinned
Session captured: the FV outbound-NAT root cause and its diagnostic signature,
the fv-ml1 dead man's switch, fleet identity/group/path conventions and the
root:docker normalization, nh3-dev's ts-input reachability fix, ESPHome
modernisation and the kb KB-search tool, and the Hermes bearer rotation
release. Six new detail files.

Tried-and-abandoned gains three: probing OPNsense endpoints by POSTing at them
(which rebooted the FV firewall), advertising a /32 from nh3-dev, and the
nh3-scale remote-site masquerade rules that fired but were not the fix.

Housekeeping: 8 Recent-decisions entries archived to archival-memory.md, and 21
oversized inline entries split into detail files per the two-tier rule -- they
had been sitting fully inline in the index, which is what the split exists to
prevent. Two pointers to a detail file archived this run were repointed at
archival-memory.md.

The index is 389 lines, still over the ~300 soft cap. The archival guards stop
it there: only 4 further entries are old enough to move and every one carries an
open deferred-work pointer. An over-cap file that keeps live decisions beats a
scannable one that lost a deferred call.
2026-09-15 00:53:48 -07:00

1.4 KiB

[2026-09-11] MEASURED: two concurrent training jobs on pfi-gx10 are 13% NET SLOWER than running them back to back — VRAM is

⭐ MEASURED: two concurrent training jobs on pfi-gx10 are 13% NET SLOWER than running them back to back — VRAM is not the constraint and never was. Operator asked to run the two BabyYarros arms in parallel if VRAM allowed. It does, comfortably: 18.4 GiB per 4B LoRA job, 36 of 121 GiB with both up, 98 GiB free. But the GB10 is a capacity box, not a throughput box, and the binding constraint is memory bandwidth. Solo baseline 37.10 s/it (n=6, 0.05% spread); with a second job both arms settled at ~85 s/it — 2.29x each, so combined throughput 0.0235 vs 0.0270 steps/s solo. Not a clean 2x split: the box is past its roofline and pays a contention penalty on top. ⭐ Control: killing the second job returned the first to 37 s/it on the very next step, so the slowdown tracked contention and reversed with it. Chaining finished both arms ~43 min earlier than concurrency would have. General form: on this box, nvidia-smi free memory tells you nothing about whether a second job is affordable. Decision rule was pre-registered before the numbers were read (<55 s/it keep both, ≥2x chain). scripts/yarros-corpus/{launch-yarros-4b-base,chain-yarros-4b-base}.sh; the shared-GPU bypass is an explicit argument, never a default.