Issues / #2235
#2235 [Feature]: MTP drafts in pipelined batch groups (2-GPU layer split, parallel 2)
open · @davidbhoward · 0 コメント · GitHub で見る
BenchmarksMulti-GPUNVIDIA / CUDAModels & quantsWindowsLinux
本文
### What do you want to do? Run two agents on a 2-GPU layer split and have each of them keep its MTP drafts. Rig: 2x RTX 3090, layer split 0-24 / 25-47, IQ3_S, 262144 context, `"parallel": 2`, Strata 0.1.43.1 on Linux, i7-6850K, 64 GB. With the default pipelined groups (2 groups of 1) both cards stay busy, but each slot gets one token per window. One request alone decodes at about 117 tok/s here, two together get 57-66 tok/s each. So windows per second roughly double and tokens per window drop from about 2.4 to 1, and the total stays flat. I tried `--batch-mtp --batch-groups 1`. Two streams go to 65-67 tok/s each, but a 41K prompt arriving next to a decoding stream reads at about 1,400 tok/s instead of 3,100, so for agent traffic the pipelined default is still the better choice on this box. Would drafts in the pipelined path be something you'd consider? From reading `generate.cpp` and `verify.cpp`, the blocker looks like `batch_launch` queueing the commit graph right behind the exec graph since every row is kept, which leaves no room for an accept/reject. A launch without the automatic commit, then `commit_slot_prefixes` per stage once the last stage reports, seems like the shape of it. The part I'm not sure about is keeping group A's window state alive on stage 0 while group B's window runs there. Maybe the two verifiers per stage that `--pipeline-windows` already sets up could carry that. I've forked the repo and can try a PR if you can tell me whether that approach is sane, or test builds on this box. Numbers are from `tools/strata_bench.py` plus a small two-stream client, happy to share the runs.
関連リンク
インストール・モデル・リリースへの站内リンク。