docs: the LLM index and the cooperation page catch up with layer split
The LLM index still opened with vllm-radiance as frank-medium's runtime and drew the replica pair in its topology diagram; the cooperation page's thesis (collectives are impossible, so the answer is hardware) now has to name the path the fleet actually took: llama.cpp's layer split, which launches no RCCL kernel on either card. That reframes the M.2 riser as a means to TENSOR parallelism rather than a means to using both cards at all.
This commit is contained in:
1 parent
87492c7b10
commit
c97e359bc2
2 files changed
+49
-19
No files matched your search
@@ -123,11 +123,11 @@ sudo lspci -vv -s <card2> | grep AtomicOpsCtl # want: ReqEn+
|
||||
```
|
||||
|
||||
If that reads `ReqEn+`, the rest is mechanical: `--tensor-parallel-size 2` with
|
||||
`HIP_VISIBLE_DEVICES=0,1`, then the same benchmark set used for the replicas
|
||||
(`scripts/bench-vllm-corpus.py` / `bench-turn-latency.py`) so the two
|
||||
architectures are compared on identical workloads. If it still reads `ReqEn-`,
|
||||
the card is still on a non-atomic path — check `lspci -tv` for the bridge chain
|
||||
rather than assuming the move worked.
|
||||
`HIP_VISIBLE_DEVICES=0,1`, then the same benchmark set
|
||||
(`scripts/bench-turn-latency.py`, and the endpoint's own `timings` block) so the
|
||||
two architectures are compared on identical workloads. If it still reads
|
||||
`ReqEn-`, the card is still on a non-atomic path — check `lspci -tv` for the
|
||||
bridge chain rather than assuming the move worked.
|
||||
|
||||
**Rule for any future multi-GPU collective experiment: stop and mask the
|
||||
production service first** (`sudo systemctl stop frank-medium && sudo systemctl
|
||||
@@ -138,6 +138,29 @@ power cycle). The mechanism is not proven, but a hung AQL dispatch wedging the
|
||||
GPU driver is a plausible cause and this host has precedent for going
|
||||
unreachable until a power cycle.
|
||||
|
||||
|
||||
## The third path, and the one in production: llama.cpp's layer split
|
||||
|
||||
Everything above is about *collectives*, and vLLM cannot proceed without them
|
||||
in any of its parallelisms — TP needs a per-layer allreduce, and PP's stage
|
||||
handoff is a p2p `send`/`recv` of the hidden state, the primitive this host
|
||||
also fails. **llama.cpp's `--split-mode layer` needs no collective at all**:
|
||||
layers are distributed across the cards and the boundary activation is a
|
||||
plain per-backend copy, once per forward pass. No RCCL kernel is ever launched
|
||||
on the second card, so the atomics gate never comes up.
|
||||
|
||||
That is what `frank-medium` runs today ([[frank-medium-llamacpp-dflash2]]): one
|
||||
process, one model, both cards, 262144 context. Measured against tensor split
|
||||
on this host: 1991 t/s prefill / 18.8 tok/s decode layer-split, against 272 /
|
||||
26.3 tensor (butterfly fallback, no RCCL). Tensor would still win decode on a
|
||||
build with a working RCCL — which is exactly what the M.2 riser or a board swap
|
||||
in [the short answer](#the-short-answer) would buy.
|
||||
|
||||
So the ranking changed on 2026-09-16: software already gets both cards onto one
|
||||
model, and the hardware fix is no longer a means to that end — it is a means to
|
||||
*tensor* parallelism, which buys ~40 % decode and would let this runtime drop
|
||||
layer-split's serial stages entirely.
|
||||
|
||||
## What would change the answer
|
||||
|
||||
- An RCCL build whose kernels stop declaring a hostcall buffer — the one
|
||||
|
||||
Reference in new issue
Block a user