feat(nh3-ml1): second TEI embed/rerank backend live on nh3-pve; parity-verified vs esh-ml1
NH3 site visit done: Secure Boot off, iGPU restored as boot VGA, AMT port cabled. - nh3-pve: NVIDIA 580.178.04 (DKMS, open modules) via pve-nvidia-host.yaml. - nh3-ml1 = CT 109 @ 10.100.50.80 via gpu-lxc.yaml; embed-rerank (TEI 1.9.4) deployed with HOST_NAME/HOST_IP labels. - Parity vs esh-ml1 (1,126 texts, 2 runs/host, controls): embed cosine min 0.999993 = own noise floor; overlap@10 1.000 vs MRL-256 positive control 0.684; rerank top-1 1.00, max diff 0.0014 vs floor 0.0020. On-box speed identical within rep spread. - gpu-lxc.yaml: first step upgrades lxc-pve to >= 6.0.0-2 (Proxmox fix #7006). With 6.0.0-1 every docker run in a nesting CT failed on runc 1.5's sysctl reopen; applied on nh3-pve (one package). - pve-nvidia-host.yaml: document that the headers meta drags in the newest kernel (nh3-pve went 6.8.12-11 -> -43 at the next reboot). - Monitoring: Beszel NVIDIA agent + 5 alerts, Kuma #29/#30, Homepage nh3-ml1-docker, Dozzle agent (hub 8 clients). DNS nh3-ml1.nh3.internal. - nh3-pve README: SB/IGFX/driver/kernel state, btmtk oops on -4x kernels, AMT cabled but unreachable on the network. Gateway routing to nh3-ml1 is not changed.
This commit is contained in:
@@ -0,0 +1,89 @@
|
||||
# `[2026-09-25]` nh3-ml1 LIVE after the NH3 site visit
|
||||
|
||||
**Prime, ~1524 PT:** "secure boot disabled, amt enabled, card plugged." This is the
|
||||
resume of `2026-09-25-nh3-ml1-standup.md`. nh3-pve came up at 1523.
|
||||
|
||||
## Post-boot checklist: all green
|
||||
|
||||
- Uplink is `enp2s0f1np1`. Guests 100, 101, 102, 105 and CTs 103, 106, 107 are up;
|
||||
104 and 108 are off as expected.
|
||||
- NFS automounts are good on nh3-docker, nh3-dev and pbs-nh3. The post office is
|
||||
push/reachable. The 14 queued althing messages were all Beszel/Kuma "UP"
|
||||
recoveries, so nothing needed acting on.
|
||||
- Secure Boot is disabled. `00:02.0` is back with `boot_vga=1` and i915 loaded.
|
||||
|
||||
## Build (elway, both playbooks idempotent)
|
||||
|
||||
1. `pve-nvidia-host.yaml`: the driver installed (DKMS, 36 s), 6/6 verify.
|
||||
2. `gpu-lxc.yaml`: CT 109 built, then **verify 3 FAILED**. `docker run` died with
|
||||
`open sysctl net.ipv4.ip_unprivileged_port_start file: reopen fd 8: permission
|
||||
denied`.
|
||||
- The cause is the lxc-pve version, not runc. Both CTs run runc 1.5.1. nh3-pve
|
||||
(PVE 8.4.1) had lxc-pve **6.0.0-1**, and esh-pve (8.4.20) has **6.0.0-2**,
|
||||
whose changelog is Proxmox "fix #7006: do not restrict /proc or /sys if
|
||||
nesting is enabled".
|
||||
- **Decided autonomously:** upgrade that one package (a dry-run showed
|
||||
1 upgraded, 0 new, 0 removed) and `pct reboot 109`. GPU-in-docker then passed.
|
||||
ops-log recorded.
|
||||
- The playbook gained a first step that upgrades lxc-pve when it is below
|
||||
6.0.0-2, with a quoted name, because an unquoted `#7006` truncated it as a YAML
|
||||
comment. The re-run was 5/5 verify OK. The guard skips on esh-pve (tested).
|
||||
3. `embed-rerank` deploy. `deploy-stack.sh --yes` was **denied by the auto-mode
|
||||
classifier as a blind apply**, so the pattern now is: preview with
|
||||
`echo n | deploy-stack.sh …` (it shows the diff and aborts), then `echo y |`.
|
||||
`.env` = example + `HOST_NAME=nh3-ml1`, `HOST_IP=10.100.50.80`. Healthy in about
|
||||
120 s including the image pull; 2.7 GB VRAM.
|
||||
|
||||
## Parity and speed (vs esh-ml1)
|
||||
|
||||
Script: session scratchpad, not committed. Corpus: 1,120 repo-doc paragraphs
|
||||
plus 6 fixed texts, 2 runs per host, 50 queries.
|
||||
- Embedding cosine esh↔nh3: median 0.999998, min 0.999993. The floors are esh
|
||||
0.999995 and nh3 0.999993.
|
||||
- Negative control (different texts): median 0.50.
|
||||
- overlap@10 = 1.000 both ways. Positive control, MRL-256: 0.684.
|
||||
- Rerank, 100×20: top-1 1.00, max score diff 0.0014 (the esh-esh floor is
|
||||
0.0020). Positive control, a 4-word query: top-5 order 0.09, max diff 0.97.
|
||||
- Speed on-box, 3 interleaved reps: short embed p50 6.6–6.7 vs 7.0 ms; bulk
|
||||
104–105 vs 106–108 passages/s; rerank-20 p50 156–159 vs 152–161 ms. The same.
|
||||
|
||||
## Monitoring and wiring
|
||||
|
||||
- Beszel: agent (`hosts/nh3-ml1.yaml`, same hub key as esh-ml1), system
|
||||
`1feeeq61g4mkqre`, 5 alerts, GPU samples present.
|
||||
- ⚠ zsh gotcha: `for a in "X 1 2"; do set -- $a` does NOT word-split in zsh, so
|
||||
the first batch of alert POSTs failed silently (empty fields). Use a function
|
||||
with explicit args.
|
||||
- Kuma #29/#30 (the seed also refreshed the esh-ml1 descriptions). Homepage
|
||||
`nh3-ml1-docker` shows 2 cards with no restart. Dozzle agent added, and the hub
|
||||
`.env` backed up as `.env.bak-20260925-nh3ml1` before the edit.
|
||||
- DNS `nh3-ml1.nh3.internal` on all 3 resolvers. `~/.ssh/config` `Host nh3-ml1`;
|
||||
`servers/nh3-ml1/` has ssh-target, system-details and README.
|
||||
|
||||
## Found along the way
|
||||
|
||||
- **Kernel 6.8.12-43 came from our own playbook.** The headers step's
|
||||
`proxmox-headers-6.8` install upgraded the `proxmox-kernel-6.8` meta
|
||||
(apt history 14:19:23). The visit reboot booted it. Documented in
|
||||
`pve-nvidia-host.yaml`.
|
||||
- **btmtk Bluetooth oops on every -4x boot** (2/2 lines on each of 3 -43 boots,
|
||||
0 on the -11 boots; esh-pve -42 is the same). It taints `D`. Only the BT worker
|
||||
dies. Proposed fix: blacklist btusb on both PVE hosts. Not done.
|
||||
- **AMT is not reachable.**
|
||||
- The LM port has a 1 Gb carrier (brief unbridged `ip link up` with IPv6
|
||||
disabled, then restored; ops-log recorded).
|
||||
- No UDM client or lease for `58:47:ca:76:96:0e`.
|
||||
- A /dev/tcp sweep of 16992/16993 over 10.100.{0,10,50,250}.0/24 found nothing.
|
||||
Its positive controls, :8390 and :8006, did answer.
|
||||
- The USW Pro 24's up ports (19, 22, 23, 26) are all other devices. So the cable
|
||||
is probably on nh3-sw1 (`10.100.250.2`), where SSH times out and no creds are
|
||||
held.
|
||||
- Asked Prime.
|
||||
|
||||
## Open (Prime's)
|
||||
|
||||
- Gateway routing for `qwen3-embedding` / `reranker`. Recommendation: load-share
|
||||
(identical cards, and a second site).
|
||||
- AMT network settings and switch port. The NanoKVM stays on nh3-pve until AMT KVM
|
||||
shows the console.
|
||||
- btusb blacklist on nh3-pve and esh-pve. Low priority.
|
||||
Reference in New Issue
Block a user