engine: report COMBINED-static layer-split capability truthfully#33
Draft
ddvnguyen wants to merge 1 commit into
Draft
engine: report COMBINED-static layer-split capability truthfully#33ddvnguyen wants to merge 1 commit into
ddvnguyen wants to merge 1 commit into
Conversation
The unified engine's model-loaded path hard-coded set_hydra_capabilities(... peer_reachable=false, combined_pattern="", split_mode="solo") even when it was launched with --rpc-engine PEER + --tensor-split, i.e. the peer was registered as an RPC device BEFORE load and llama.cpp's stock allocator placed whole layers across CUDA0 + RPC0 (COMBINED-static layer-split, ggml-org#383). Report the real state instead: - peer_reachable now reflects whether the peer actually registered (was always false, a reporting bug — /health and INFO claimed the peer was unreachable even while layers were split onto it). - split_mode="layer" when a peer registered before load with a tensor-split, so Hydra Core can route to the layer-split engine instead of the runtime expert path (the add-RPC-after-load path that causes the 35-graph-split regression + recurrent-state corruption on dense/SSM models). - combined_pattern kept EMPTY on purpose: it is the expert regex consumed by SET_EXPERT_MODE("combined") -> llama_hydra_rebind_combined_experts (server-context.cpp:3651); a non-empty value would trigger the after-load expert re-partition that layer-split exists to avoid. Observability/routing only; no compute-path change. Not compiled in this environment (no CUDA/2-GPU host) — needs a build_sm86_sm120 build to confirm. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012d7PtURptwKpgMcFZ2MvYn
6 tasks
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.
Overview
Follow-up to the spike-ggml-org#381 reconciliation on #31 (the "PDL crash" was a misdiagnosis; PR #32 closed as inert). This is the first, safe step toward driving dense-model COMBINE through the layer-split path (ggml-org#383) instead of the runtime expert path.
The unified engine's model-loaded path hard-coded:
even when launched with
--rpc-engine PEER --tensor-split R0/R1— i.e. the peer was registered as an RPC device beforeload_model(llama-engine.cpp:311-322) and llama.cpp's stock allocator placed whole layers across CUDA0 + RPC0 (COMBINED-static layer-split). So/health+ INFO reported the engine as SOLO with an unreachable peer while it was actually layer-splitting onto that peer.Change
Report the real startup state:
peer_reachablenow reflects whether the peer actually registered (was alwaysfalse— a reporting bug).split_mode="layer"when a peer registered before load with a tensor-split, so Hydra Core can route to the layer-split engine instead of the runtime expert path (the add-RPC-after-load path behind the 35-graph-split regression + recurrent-state corruption on dense/SSM models).combined_patternkept empty on purpose: it is the expert regex consumed bySET_EXPERT_MODE("combined")→llama_hydra_rebind_combined_experts(server-context.cpp:3651). Putting the tensor-split ratio there would trigger the after-load expert re-partition that layer-split exists to avoid.Observability/routing only — no compute-path change.
Additional information
graph_computedegrade-to-solo fix (ggml_backend_rpc_graph_compute→GGML_STATUS_FAILEDinstead ofGGML_ABORT, peer serve-loopbreaknotreturn). It interacts with the fire-and-forget GRAPH_COMPUTE protocol and a client-only change is incomplete (the nextRPC_STATUS_ASSERTstill aborts), so it should be done + hardware-verified together. Tracked as hydra_vortex#395 Step 4.--rpc-engine PEER --tensor-split 21/44(spike Doesn't compile due to missing headers for memcpy and assert ggml-org/llama.cpp#381's MTP-headroom winner) and stop sending expert-mode COMBINED requests for it.cmake --build build_sm86_sm120 --target llama-engine, then confirm/healthreportssplit_mode:"layer"andpeer_reachable:trueunder the spike-Doesn't compile due to missing headers for memcpy and assert ggml-org/llama.cpp#381 config.Requirements
Generated by Claude Code