Skip to content

[AMD][dsv4] fix 2P1D eval 503 "all circuits open" (readiness canary + faster CB recovery)#2255

Open
inkcherry wants to merge 1 commit into
SemiAnalysisAI:mainfrom
inkcherry:pr/dsv4-eval503-fix
Open

[AMD][dsv4] fix 2P1D eval 503 "all circuits open" (readiness canary + faster CB recovery)#2255
inkcherry wants to merge 1 commit into
SemiAnalysisAI:mainfrom
inkcherry:pr/dsv4-eval503-fix

Conversation

@inkcherry

@inkcherry inkcherry commented Jul 17, 2026

Copy link
Copy Markdown

Problem

On the 2P1D dsv4 gsm8k eval at concurrency 500, every request gets 503 "No available prefill workers (all circuits open or unhealthy)" from the first request and never recovers, so the eval produces no results.

server_sglang.sh declares the router ready as soon as /readiness returns 200, which only means the router process is up — not that it can actually reach a prefill worker and finish a generation. The eval fires 500 concurrent requests into a prefill path that isn't serving yet, trips both prefill circuit breakers, and the default breaker timeout (60s) is longer than the client retry budget (~31s), so the circuits never reclose.

Changed

  • Gate "ready" on one real generation through the router (POST /v1/chat/completions, max_tokens=1) instead of just /readiness.
  • Shorten the router circuit-breaker recovery window (--cb-timeout-duration-secs 15 --retry-max-retries 3). Breaker and health checks are otherwise unchanged; concurrency and the eval itself are untouched.

Validated

conc-500 and conc-512 gsm8k both complete, exact_match ≈ 0.958, no 503s, circuits stay closed.
cc @Duyi-Wang @billishyahao

…recovery

Run 28696443568 (dsv4 2P1D gsm8k eval, c=500x512) failed: from request SemiAnalysisAI#1 the
router returned 503 "No available prefill workers (all circuits open or
unhealthy)" for all 1319 requests and never recovered, so lm_eval produced 0
result files and "Verify eval scores" failed. The launch script declared "Router
is ready for benchmarking" as soon as the router /readiness endpoint returned 200
-- which only proves the router process is up, not that it can actually reach a
prefill worker and complete a generation. The eval therefore fired into a
router whose prefill path was not yet serving, tripped both circuits, and with
the default cb-timeout-duration-secs=60 the circuits stayed open past the client
retry budget (~31s) so nothing ever recovered.

Fix (server-stability / readiness, no eval concurrency lowered, breaker still
fully enabled):
- Add an end-to-end readiness canary: require ONE successful generation THROUGH
  the router (POST /v1/chat/completions, max_tokens=1) before "ready for
  benchmarking", so the eval never starts against a non-serving prefill path.
- Speed circuit-breaker recovery (--cb-timeout-duration-secs 15,
  --retry-max-retries 3) so a transient trip re-closes inside the client retry
  budget instead of losing the whole eval. Thresholds unchanged.

Satisfies MOTIVATION_RULES clause 3 (Fix) via the approved levers "health-endpoint
responsiveness" and "circuit-breaker recovery tuning"; no anti-cheat shortcut
(concurrency stays 500/512, breaker + score check remain enabled).

@claude claude Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Claude Code Review

This pull request is from a fork — automated review is disabled. A repository maintainer can comment @claude review to run a one-time review.

@inkcherry inkcherry changed the title [AMD][dsv4] gate 2P1D eval on end-to-end router readiness + speed CB … [AMD][dsv4] fix 2P1D eval 503 "all circuits open" (readiness canary + faster CB recovery) Jul 17, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: No status

Development

Successfully merging this pull request may close these issues.

1 participant