Conversation
Decision sequences live on the main context only; propagating n_seq_max = n_parallel + n_seq_decision to the MTP draft context violates the n_outputs_max assert (n_outputs_max <= cparams.n_outputs_max). Verified: MTP + /v1/decision coexist after this fix (no assert crash).
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Advanced Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
Hi @thecodacus — a gentle nudge on this one (and on #14). We've been running the No pressure at all — even a quick "not interested" would be enough for us to plan (we'd just keep maintaining the fork privately). If you are open to it, the patch also rebases cleanly onto current ggml-org master (verified 2026-09-25), so a joint upstream PR is an option too. Thanks! |
Hi Anirban —
I've been running your
parallel-decisionwork in production: thePOST /v1/decisionendpoint on Qwen3.8-27B (2x RTX 3090, fully local),plugged into a LangGraphJS workflow engine. For closed decision tasks
(routing / classification / scoring) it has been a structural fix —
~18-20x faster per decision vs json_mode, zero output tokens, and it
eliminated three silent data-loss paths we were hitting in production.
This PR: with MTP speculative decoding (
--spec-type draft-mtp),the decision path propagates
n_seq_decisioninto the speculativecontext and hits an assert. A one-line guard fixes it. Verified with a
production MTP config: MTP +
/v1/decisioncoexist, no assert crash.Repro
Before this patch, the server does not start with MTP + decision sequences:
-> dies at startup on the
n_outputs_max <= cparams.n_outputs_maxassert incommon/speculative.cpp—common_base_params_to_speculativepropagatesn_seq_max = n_parallel + n_seq_decisioninto the MTP draft context.After: the same command starts, and decisions work next to MTP:
Verified on master
e85e15c(CPU build, Qwen3.8-27B-UD-Q4_K_XL): MTP draftcontext created, clear inputs score as expected (p=0.9991 / 0.9998,
ambiguous 0.7908), grid number field stays on-grid.
Separately I opened #14 with a hybrid decision extension (closed
fields + one bounded open field in a single call) — feel free to close
it if it is not wanted.
The question before I go further: are you interested in upstreaming
/v1/decisionto ggml-org/llama.cpp? Your patches are already rebasedonto current master (clean apply, compile + functional verification
pass) — happy to prepare a joint PR with proper credit, or you can drive
and I'll support. If not, no pressure: we'll keep running the fork and
contribute fixes here. I'm also writing up the production experience as
an article (links to your repo).
Either way, thanks for the work — it is doing real production duty.