Repository navigation
Conversation
…(from Strata-DualGPU) The drafter's draft head and its logits are allocated when it binds, after the expert caches are sized. One GPU already keeps their room out of its cache (Niko1221#199); a split's last stage did not, so on a card without a display they had to come out of a 300 MiB reserve - or not fit at all. The last stage's cache now leaves room for them, as on one GPU. Measured on RTX 5080 + RTX 4060 Ti / 32 GB, Swift 1.5 IQ2_XS, 64K, q4_0 KV, --pipeline-windows 2, --layer-split auto, no --vram-reserve-later-mib: the engine starts, runs and survives a full bench suite (three generations, health 200) with the last card at 433 MiB free, decoding 76.9 tok/s on a 2.7K-token answer.
Author
|
Backend note per the guide: the change is host-side arithmetic in the stage cache sizing (no CUDA/HIP-specific code), but I could only build and run the CUDA engine here (MSVC/Ninja/CUDA 13.4, arch 89;120 - validation lists it). If a HIP check is required I will mark this draft, or a maintainer's HIP run would close the gap. |
This was referenced Oct 29, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem and result
A layer split's last stage also runs the drafter, and the drafter's draft head and its logits are allocated when it binds - after the expert caches are sized. One GPU already keeps their room out of its cache (#199); a split's last stage does not, so on a card without a display (the server reserves only 300 MiB there) they had to come out of that reserve, and on two 16 GB cards the engine stopped with "mtp: the draft head does not fit". With this change the last stage's cache leaves room for them, as on one GPU.
Related discussion
From Hardin22's Strata-DualGPU (
5a20ec58, part of what #642 described). The same two-16-GB-cards scenario is in our benchmark thread #4470.Approach
Seven lines: in the per-stage cache sizing loop, subtract
mtp.bind_bytes(st.head.row_bytes(), n_vocab)from the last stage's room. Main already declareslast_stand usesbind_byteselsewhere; this is the same subtraction #199 applies on one GPU, applied to the split's last card. No new flags, no behaviour change beyond the placement.Validation
Engine built from main at 46c152a (MSVC 19.51 / Ninja / CUDA 13.4, arch 89;120). Host:
serve/server.pywith--pipeline-windows 2,--layer-split auto; rates read from the engine log. Rig: RTX 5080 + RTX 4060 Ti 16 GB (chipset slot), Ryzen 7 9800X3D, 32 GB RAM, Windows 11; Swift 1.5 IQ2_XS, 64K, q4_0 KV, stock MTP draft.Passed:
431 MiB of VRAM freeon CUDA1 (no--vram-reserve-later-mib); a full bench suite (short + long greedy generations) completes, health 200 throughout.--pipeline-windows 2on the same rig: 34-39 tok/s).Failed:
Not run:
Limits
The room subtracted is the draft head and its logits only (
bind_bytes); the second verifier of--pipeline-windowsand its graphs are not in this subtraction (the fork carries a separate change for that, which I can bring if this is welcome).