Skip to content

engine: report COMBINED-static layer-split capability truthfully#33

Draft
ddvnguyen wants to merge 1 commit into
hydra-forkfrom
claude/ggml-cuda-pdl-rebase-vuj4ib
Draft

engine: report COMBINED-static layer-split capability truthfully#33
ddvnguyen wants to merge 1 commit into
hydra-forkfrom
claude/ggml-cuda-pdl-rebase-vuj4ib

Conversation

@ddvnguyen

Copy link
Copy Markdown
Owner

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:

ctx_server.set_hydra_capabilities(true, flags.rpc_engine_peer, false, "", "solo");

even when launched with --rpc-engine PEER --tensor-split R0/R1 — i.e. the peer was registered as an RPC device before load_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_reachable now reflects whether the peer actually registered (was always false — 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_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). 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

Requirements


Generated by Claude Code

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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants