Repository navigation
Conversation
Port the original slot-isolation fix onto the rewritten upstream main, reconcile verifier fusion guards, and scope batch-MTP graph recordings. Validate vision records and retain shared draft-head format metadata. Original-author-commit: 10114f8 Superseded-PR: Niko1221#994 Talos-validation: CUDA build, focused regressions and 13 model checks passed
|
Follow-up: #1253 adds opt-in batch MTP across serial multi-GPU layer splits ( Talos validation passed all 11 model runs, including five-slot rotation, greedy/seeded lifecycle restores, and synthetic/real mixed images; host native checks also passed. Both matched-expert-profile benchmarks showed no throughput gain over ordinary batching, and pipelined batching was faster. The new PR stays draft with the measurements and limits documented: wider hardware/model/context coverage remains unrun, and helpers/shared-device stages/pipelined speculative groups retain guards. |
|
Running this instead of my own port of #994 (I had resolved the #783 fused norm-rope conflict the same way, by guarding the fused paths when rows need slot-local tables). Rig: 4× RTX 5080 16 GB (PCIe Gen3), i9-10920X, Qwen3.8-Flash-Next IQ3_S, 262K, int8 KV,
|
|
Thanks for this. We found the same problem in a code review on v0.1.43 (4x RTX 3090, Our fix takes a different route:
What it does not cover: record validation and the pipelined Validation (greedy, 640x480 and 512x512 pictures; replies up to 96 tokens in the text A/B, and in the mixed checks image replies up to 126 tokens and text replies up to 352):
In production since 2026-10-13 22:35 CEST: 399 image requests in about 5.6 h, no engine errors. We did not log how many of them decoded next to text slots, and their output was not checked. @blange48, on staggered admission: our checks admit requests while other slots decode and match solo with Patches: 0049 (regions), 0050 (opt-in), 0051 (GPU check tool, built around our patch). I'm happy to run #1242 on our 4x 3090 (sm_86) pipelined split (on 0.1.44 that is 8 slots in 4 groups of 2) with its own |
|
This is a correctness fix without a speed claim, so it is outside the speed pass; it stays on the list for the fix review. |
|
Thanks for the pull request. We're resetting the tracker for 0.2.0-beta. There are more than 1,300 open issues and pull requests, too many for us to review properly, so we're closing everything that isn't being worked on right now. Closed here does not mean rejected. To reopen it takes about two minutes:
The rules are in CONTRIBUTING.md. |
|
This still reproduces on v0.2.2, so the fix looks needed. On a single RTX PRO 6000 Blackwell (sm_120) running v0.2.2 with Applying this PR to v0.2.2 conflicts in @ilumn, a rebase onto v0.2.2 would let this be re-tested. I'm not the author so I can't use |
With
--visionand concurrent batching, admitting another image or a text request could overwrite the image-position table still used by an active slot's captured decode graph. This PR gives each slot its own table so another admission or slot reuse cannot change that slot's rotary positions. It applies the same isolation to batch-MTP drafting and rejects malformed vision records before they can affect a later valid request.This is the replacement for #994, which GitHub automatically closed after the upstream history rewrite. The recreation of the PR was requested here. It ports original commit 10114f8 onto the rewritten
mainat82f46a8c8f475f001ad76d92f58f4a4f8ffb0253.Changes
-1, so the first batch-MTP admission failed withunsupported native MMVQ GGML type. Copying that metadata fixes admission with the original subset head and the optional Q4 draft head.Validation on Talos
All 13 model-backed runs passed, with each checked batch token stream matching its solo reference:
--batch-mtpMixed tests admit a different-grid image and text after the first image starts decoding. Greedy and seeded sampling, malformed-record rejection followed by valid recovery, cancellation, image-slot reuse, and image-to-text reuse all match their solo token references. Exactness controls include
STRATA_IQ_MT_MIN=1,--pcie-frac 0,--adapt-every 1000000, and--no-prefill-borrow.sm_120) succeeded; the rebuild after the draft-head metadata correction also succeeded.vision_records_test,mrope_slot_graph_test, andrope_parity, with both GPUs visible.detect_leaks=0; leak checking was not run).ple_parity,expert_parity, andpool_testlack their required development fixtures;iq_parity_fixturesandiq_parityskipped for unavailable fixtures. This inventory was run before the metadata correction; focused CUDA checks and affected model checks were rerun afterward.Scope and coverage limits
--batch-mtpwhen a layer split or helper GPU is configured; its current slot drafter setup uses the first stage's sessions and head. That guard is unchanged by this PR.BYIELD/resume was not validated. In the upstream interleave harness, the idle split-stage prompt path bypassed the chunk-boundary yield handling. The supported staggered-admission and next-turn sections passed in a scoped derivative of that harness; the later yield/resume and checkpoint sections were not counted as passing on two GPUs.