Migrate all callers from /get_server_info to /server_info (#21463)

This commit is contained in:
David Cheung
2026-04-01 21:17:50 -07:00
committed by GitHub
parent 24997fe42c
commit ed427e1299
48 changed files with 74 additions and 70 deletions
+1 -1
View File
@@ -212,7 +212,7 @@ Please consult the documentation below and [server_args.py](https://github.com/s
| Argument | Description | Defaults | Options |
| --- | --- | --- | --- |
| `--api-key` | Set API key of the server. It is also used in the OpenAI API compatible server. | `None` | Type: str |
| `--admin-api-key` | Set **admin API key** for administrative/control endpoints (e.g., weights update, cache flush, `/get_server_info`). Endpoints marked as admin-only require `Authorization: Bearer <admin_api_key>` when this is set. | `None` | Type: str |
| `--admin-api-key` | Set **admin API key** for administrative/control endpoints (e.g., weights update, cache flush, `/server_info`). Endpoints marked as admin-only require `Authorization: Bearer <admin_api_key>` when this is set. | `None` | Type: str |
| `--served-model-name` | Override the model name returned by the v1/models endpoint in OpenAI API server. | `None` | Type: str |
| `--weight-version` | Version identifier for the model weights. Defaults to 'default' if not specified. | `default` | Type: str |
| `--chat-template` | The builtin chat template name or the path of the chat template file. This is only used for OpenAI-compatible API server. | `None` | Type: str |
+2 -2
View File
@@ -77,7 +77,7 @@ SGLang Model Gateway is a high-performance model-routing gateway for large-scale
### Control Plane
- **Worker Manager** discovers capabilities (`/get_server_info`, `/get_model_info`), tracks load, and registers/removes workers in the shared registry.
- **Worker Manager** discovers capabilities (`/server_info`, `/get_model_info`), tracks load, and registers/removes workers in the shared registry.
- **Job Queue** serializes add/remove requests and exposes status (`/workers/{worker_id}`) so clients can track onboarding progress.
- **Load Monitor** feeds cache-aware and power-of-two policies with live worker load statistics.
- **Health Checker** continuously probes workers and updates readiness, circuit breaker state, and router metrics.
@@ -552,7 +552,7 @@ Response:
| `GET` | `/engine_metrics` | Engine-level metrics from workers |
| `GET` | `/v1/models` | List available models |
| `GET` | `/get_model_info` | Get model information |
| `GET` | `/get_server_info` | Get server information |
| `GET` | `/server_info` | Get server information |
| `POST` | `/flush_cache` | Clear all caches |
| `GET` | `/get_loads` | Get all worker loads |
| `POST` | `/wasm` | Upload WASM module |
+2 -2
View File
@@ -10,7 +10,7 @@
"\n",
"- `/generate` (text generation model)\n",
"- `/get_model_info`\n",
"- `/get_server_info`\n",
"- `/server_info`\n",
"- `/health`\n",
"- `/health_generate`\n",
"- `/flush_cache`\n",
@@ -140,7 +140,7 @@
"metadata": {},
"outputs": [],
"source": [
"url = f\"http://localhost:{port}/get_server_info\"\n",
"url = f\"http://localhost:{port}/server_info\"\n",
"\n",
"response = requests.get(url)\n",
"print_highlight(response.text)"
+1 -1
View File
@@ -352,4 +352,4 @@ python3 -m sglang.bench_serving \
### Notes
- The script raises the file descriptor soft limit (`RLIMIT_NOFILE`) to help with many concurrent connections.
- For sglang, `/get_server_info` is queried post-run to report speculative decoding accept length when available.
- For sglang, `/server_info` is queried post-run to report speculative decoding accept length when available.
+2 -2
View File
@@ -1402,7 +1402,7 @@ async def benchmark(
if "sglang" in backend:
server_info = requests.get(
base_url + "/get_server_info", headers=get_auth_headers()
base_url + "/server_info", headers=get_auth_headers()
)
if server_info.status_code == 200:
server_info_json = server_info.json()
@@ -1538,7 +1538,7 @@ async def benchmark(
print("{:<40} {:<10.2f}".format("Max ITL (ms):", metrics.max_itl_ms))
print("=" * 50)
resp = requests.get(base_url + "/get_server_info", headers=get_auth_headers())
resp = requests.get(base_url + "/server_info", headers=get_auth_headers())
server_info = resp.json() if resp.status_code == 200 else None
if (
@@ -67,7 +67,7 @@ class RuntimeEndpoint(BaseBackend):
def get_server_info(self):
res = http_request(
self.base_url + "/get_server_info",
self.base_url + "/server_info",
api_key=self.api_key,
verify=self.verify,
)
@@ -531,7 +531,7 @@ class Runtime:
async def get_server_info(self):
async with aiohttp.ClientSession() as session:
async with session.get(f"{self.url}/get_server_info") as response:
async with session.get(f"{self.url}/server_info") as response:
if response.status == 200:
return await response.json()
else:
+1 -1
View File
@@ -42,7 +42,7 @@ def run_profile(
# Dump server args.
file_path = Path(output_dir) / "server_args.json"
if not file_path.exists():
response = requests.get(url + "/get_server_info")
response = requests.get(url + "/server_info")
response.raise_for_status()
server_args_data = response.json()
with open(file_path, "w") as file:
@@ -609,7 +609,7 @@ def run_one_case(
last_gen_throughput = -1
acc_length = -1
else:
response = requests.get(url + "/get_server_info", timeout=DEFAULT_TIMEOUT)
response = requests.get(url + "/server_info", timeout=DEFAULT_TIMEOUT)
response.raise_for_status()
server_info = response.json()
internal_state = server_info.get("internal_states", [{}])
@@ -793,7 +793,7 @@ def run_benchmark_internal(
skip_max_running_requests_threshold = float("inf")
else:
model_name = None
response = requests.get(base_url + "/get_server_info", timeout=DEFAULT_TIMEOUT)
response = requests.get(base_url + "/server_info", timeout=DEFAULT_TIMEOUT)
response.raise_for_status()
server_info = response.json()
if "tokenizer_path" in server_info:
+1 -1
View File
@@ -221,7 +221,7 @@ async def _send_round(
def _get_page_size(base_url: str) -> int:
"""Query server for page_size used by radix cache."""
try:
resp = requests.get(f"{base_url}/get_server_info", timeout=10)
resp = requests.get(f"{base_url}/server_info", timeout=10)
resp.raise_for_status()
info = resp.json()
return info.get("page_size", 1)
+2 -2
View File
@@ -208,7 +208,7 @@ def test_input_output_logprobs_match_helper(
def test_input_output_logprobs_match_prefill_cache_hit_helper(
base_url, ACC_THRESHOLDS, model_name, max_samples=None, max_new_tokens=8192
):
server_info = requests.get(base_url + "/get_server_info").json()
server_info = requests.get(base_url + "/server_info").json()
if server_info["disable_radix_cache"]:
print("Radix cache is disabled, skipping test")
return
@@ -261,7 +261,7 @@ def test_input_output_logprobs_match_prefill_cache_hit_helper(
def test_input_output_logprobs_match_decode_cache_hit_helper(
base_url, ACC_THRESHOLDS, model_name, max_samples=None, max_new_tokens=8192
):
server_info = requests.get(base_url + "/get_server_info").json()
server_info = requests.get(base_url + "/server_info").json()
if server_info["disable_radix_cache"]:
print("Radix cache is disabled, skipping test")
return
+1 -1
View File
@@ -324,7 +324,7 @@ class NightlyBenchmarkRunner:
The average speculative decoding accept length, or None if not available.
"""
try:
response = requests.get(f"{self.base_url}/get_server_info", timeout=10)
response = requests.get(f"{self.base_url}/server_info", timeout=10)
if response.status_code == 200:
server_info = response.json()
internal_states = server_info.get("internal_states", [])
+1 -1
View File
@@ -119,7 +119,7 @@ def send_one_batch(base_url, num_prompts, batch_size, processor, is_multimodal):
acc_length = results["accept_length"] or 1.0
avg_output_token = results["total_output_tokens"] / results["completed"]
server_info = requests.get(base_url + "/get_server_info").json()
server_info = requests.get(base_url + "/server_info").json()
# We use 20% percentile instead of median on purpose
step_time = np.percentile(
server_info["internal_states"][0]["step_time_dict"][str(batch_size)], 20
+1 -1
View File
@@ -407,7 +407,7 @@ Use upstream SGLang binaries to start dedicated worker processes.
### Worker Lifecycle & Job Queue
- `JobQueue` handles asynchronous add/remove operations to avoid blocking clients.
- `WorkerManager` inspects worker metadata (`/get_server_info`, `/get_model_info`), tracks load, and exposes `flush_cache` and `get_loads`.
- `WorkerManager` inspects worker metadata (`/server_info`, `/get_model_info`), tracks load, and exposes `flush_cache` and `get_loads`.
- Per-worker circuit breakers and health probes keep the registry healthy; load monitor feeds metrics to cache-aware and power-of-two policies.
### Administrative & Worker APIs
@@ -269,6 +269,8 @@ async def flush_cache():
return Response(status_code=200)
# TODO: Remove `/get_server_info` alias after one release-cycle deprecation window.
@app.get("/server_info")
@app.get("/get_server_info")
async def get_server_info():
prefill_infos = []
@@ -277,10 +279,10 @@ async def get_server_info():
async with aiohttp.ClientSession() as session:
for server in lb.prefill_urls:
server_info = await session.get(f"{server}/get_server_info")
server_info = await session.get(f"{server}/server_info")
prefill_infos.append(await server_info.json())
for server in lb.decode_urls:
server_info = await session.get(f"{server}/get_server_info")
server_info = await session.get(f"{server}/server_info")
info_json = await server_info.json()
decode_infos.append(info_json)
# Extract internal_states from decode servers
@@ -1223,7 +1223,7 @@ impl RouterTrait for PDRouter {
async fn get_server_info(&self, _req: Request<Body>) -> Response {
// Get info from the first decode server to match sglang's server info format
// Note: We use decode workers for server info to match expected format
self.proxy_to_first_prefill_worker("get_server_info", None)
self.proxy_to_first_prefill_worker("server_info", None)
.await
}
+1 -1
View File
@@ -724,7 +724,7 @@ impl RouterTrait for Router {
}
async fn get_server_info(&self, req: Request<Body>) -> Response {
self.proxy_get_request(req, "get_server_info").await
self.proxy_get_request(req, "server_info").await
}
async fn get_models(&self, req: Request<Body>) -> Response {
+2
View File
@@ -610,6 +610,8 @@ pub fn build_app(
.route("/engine_metrics", get(engine_metrics))
.route("/v1/models", get(v1_models))
.route("/get_model_info", get(get_model_info))
.route("/server_info", get(get_server_info))
// TODO: Remove `/get_server_info` alias after one release-cycle deprecation window.
.route("/get_server_info", get(get_server_info));
// Build admin routes with control plane auth if configured, otherwise use simple API key auth
@@ -314,7 +314,7 @@ mod model_info_tests {
let req = Request::builder()
.method("GET")
.uri("/get_server_info")
.uri("/server_info")
.body(Body::empty())
.unwrap();
@@ -445,7 +445,7 @@ mod model_info_tests {
let req = Request::builder()
.method("GET")
.uri("/get_server_info")
.uri("/server_info")
.body(Body::empty())
.unwrap();
let resp = app.clone().oneshot(req).await.unwrap();
@@ -82,7 +82,7 @@ impl MockWorker {
let app = Router::new()
.route("/health", get(health_handler))
.route("/health_generate", get(health_generate_handler))
.route("/get_server_info", get(server_info_handler))
.route("/server_info", get(server_info_handler))
.route("/get_model_info", get(model_info_handler))
.route("/generate", post(generate_handler))
.route("/v1/chat/completions", post(chat_completions_handler))
@@ -101,7 +101,7 @@ impl TlsMockWorker {
let app = Router::new()
.route("/health", get(health_handler))
.route("/health_generate", get(health_generate_handler))
.route("/get_server_info", get(server_info_handler))
.route("/server_info", get(server_info_handler))
.route("/generate", post(generate_handler))
.route("/v1/chat/completions", post(chat_completions_handler))
.with_state(config);
@@ -765,7 +765,7 @@ mod pd_routing_unit_tests {
let implemented_endpoints = vec![
("/health", "GET", true),
("/health_generate", "GET", true), // Note: Python uses POST, we use GET
("/get_server_info", "GET", true),
("/server_info", "GET", true),
("/v1/models", "GET", true),
("/get_model_info", "GET", true),
("/generate", "POST", true),
@@ -149,7 +149,7 @@ class TestQwen35FP4MTP(CustomTestCase):
print(f"{metrics=}")
self.assertGreaterEqual(metrics["score"], ACC_THRESHOLDS[self.model]["gsm8k"])
server_info = requests.get(self.base_url + "/get_server_info")
server_info = requests.get(self.base_url + "/server_info")
avg_spec_accept_length = server_info.json()["internal_states"][0][
"avg_spec_accept_length"
]
@@ -226,7 +226,7 @@ class TestQwen35FP4MTPV2(CustomTestCase):
print(f"{metrics=}")
self.assertGreaterEqual(metrics["score"], ACC_THRESHOLDS[self.model]["gsm8k"])
server_info = requests.get(self.base_url + "/get_server_info")
server_info = requests.get(self.base_url + "/server_info")
avg_spec_accept_length = server_info.json()["internal_states"][0][
"avg_spec_accept_length"
]
@@ -76,7 +76,7 @@ class TestDeepseekV32DPMTP(CustomTestCase):
metrics = run_eval(args)
print(f"{metrics=}")
server_info = requests.get(self.base_url + "/get_server_info")
server_info = requests.get(self.base_url + "/server_info")
avg_spec_accept_length = server_info.json()["internal_states"][0][
"avg_spec_accept_length"
]
@@ -163,7 +163,7 @@ class TestDeepseekV32DPMTPV2(CustomTestCase):
metrics = run_eval(args)
print(f"{metrics=}")
server_info = requests.get(self.base_url + "/get_server_info")
server_info = requests.get(self.base_url + "/server_info")
avg_spec_accept_length = server_info.json()["internal_states"][0][
"avg_spec_accept_length"
]
@@ -246,7 +246,7 @@ class TestDeepseekV32TPMTP(CustomTestCase):
metrics = run_eval(args)
print(f"{metrics=}")
server_info = requests.get(self.base_url + "/get_server_info")
server_info = requests.get(self.base_url + "/server_info")
avg_spec_accept_length = server_info.json()["internal_states"][0][
"avg_spec_accept_length"
]
@@ -330,7 +330,7 @@ class TestDeepseekV32TPMTPV2(CustomTestCase):
metrics = run_eval(args)
print(f"{metrics=}")
server_info = requests.get(self.base_url + "/get_server_info")
server_info = requests.get(self.base_url + "/server_info")
avg_spec_accept_length = server_info.json()["internal_states"][0][
"avg_spec_accept_length"
]
@@ -72,7 +72,7 @@ class TestDeepseekV3MTP(CustomTestCase):
metrics = run_eval(args)
print(f"{metrics=}")
server_info = requests.get(self.base_url + "/get_server_info")
server_info = requests.get(self.base_url + "/server_info")
avg_spec_accept_length = server_info.json()["internal_states"][0][
"avg_spec_accept_length"
]
@@ -106,7 +106,7 @@ class TestDeepseekV32TPMTP(CustomTestCase):
metrics = run_eval_few_shot_gsm8k(args)
print(f"{metrics=}")
server_info = requests.get(self.base_url + "/get_server_info")
server_info = requests.get(self.base_url + "/server_info")
avg_spec_accept_length = server_info.json()["internal_states"][0][
"avg_spec_accept_length"
]
@@ -108,7 +108,7 @@ class TestDeepseekV32TPMTP(CustomTestCase):
metrics = run_eval_few_shot_gsm8k(args)
print(f"{metrics=}")
server_info = requests.get(self.base_url + "/get_server_info")
server_info = requests.get(self.base_url + "/server_info")
avg_spec_accept_length = server_info.json()["internal_states"][0][
"avg_spec_accept_length"
]
@@ -135,7 +135,7 @@ class TestDeepseekR1MXFP4MTP(CustomTestCase):
metrics = run_eval_few_shot_gsm8k(args)
print(f"{metrics=}")
server_info = requests.get(self.base_url + "/get_server_info")
server_info = requests.get(self.base_url + "/server_info")
avg_spec_accept_length = server_info.json()["internal_states"][0][
"avg_spec_accept_length"
]
+2 -2
View File
@@ -87,7 +87,7 @@ class TestDeepseekV32DPMTP(CustomTestCase):
metrics = run_eval_few_shot_gsm8k(args)
print(f"{metrics=}")
server_info = requests.get(self.base_url + "/get_server_info")
server_info = requests.get(self.base_url + "/server_info")
avg_spec_accept_length = server_info.json()["internal_states"][0][
"avg_spec_accept_length"
]
@@ -179,7 +179,7 @@ class TestDeepseekV32TPMTP(CustomTestCase):
metrics = run_eval_few_shot_gsm8k(args)
print(f"{metrics=}")
server_info = requests.get(self.base_url + "/get_server_info")
server_info = requests.get(self.base_url + "/server_info")
avg_spec_accept_length = server_info.json()["internal_states"][0][
"avg_spec_accept_length"
]
+1 -1
View File
@@ -72,7 +72,7 @@ class TestDeepseekV3MTP(CustomTestCase):
metrics = run_eval_few_shot_gsm8k(args)
print(f"{metrics=}")
server_info = requests.get(self.base_url + "/get_server_info")
server_info = requests.get(self.base_url + "/server_info")
avg_spec_accept_length = server_info.json()["internal_states"][0][
"avg_spec_accept_length"
]
@@ -76,7 +76,7 @@ class TestDeepseekV3MTPKvFp8(CustomTestCase):
metrics = run_eval_few_shot_gsm8k(args)
print(f"{metrics=}")
server_info = requests.get(self.base_url + "/get_server_info")
server_info = requests.get(self.base_url + "/server_info")
avg_spec_accept_length = server_info.json()["internal_states"][0][
"avg_spec_accept_length"
]
+3 -3
View File
@@ -145,7 +145,7 @@ class TestMTP(CustomTestCase):
print(f"{metrics=}")
self.assertGreaterEqual(metrics["accuracy"], 0.92)
server_info = requests.get(self.base_url + "/get_server_info")
server_info = requests.get(self.base_url + "/server_info")
avg_spec_accept_length = server_info.json()["internal_states"][0][
"avg_spec_accept_length"
]
@@ -397,7 +397,7 @@ class TestMTPwithTBONormal(CustomTestCase):
print(f"{metrics=}")
self.assertGreaterEqual(metrics["accuracy"], 0.92)
server_info = requests.get(self.base_url + "/get_server_info")
server_info = requests.get(self.base_url + "/server_info")
avg_spec_accept_length = server_info.json()["internal_states"][0][
"avg_spec_accept_length"
]
@@ -457,7 +457,7 @@ class TestMTPwithTBOLowLatency(CustomTestCase):
print(f"{metrics=}")
self.assertGreaterEqual(metrics["accuracy"], 0.92)
server_info = requests.get(self.base_url + "/get_server_info")
server_info = requests.get(self.base_url + "/server_info")
avg_spec_accept_length = server_info.json()["internal_states"][0][
"avg_spec_accept_length"
]
@@ -146,7 +146,7 @@ class TestQwen3CoderNextMTP(CustomTestCase):
metrics = run_eval_few_shot_gsm8k(args)
print(f"{metrics=}")
server_info = requests.get(self.base_url + "/get_server_info")
server_info = requests.get(self.base_url + "/server_info")
avg_spec_accept_length = server_info.json()["internal_states"][0][
"avg_spec_accept_length"
]
@@ -64,7 +64,7 @@ class TestAscendWarmups(CustomTestCase):
def test_warmups_with_voice_chat(self):
# Call the get_server_info API to verify that the warmups parameter configuration takes effect.
response = requests.get(f"{DEFAULT_URL_FOR_TEST}/get_server_info")
response = requests.get(f"{DEFAULT_URL_FOR_TEST}/server_info")
self.assertEqual(response.status_code, 200)
self.assertEqual("voice_chat", response.json().get("warmups"))
@@ -92,7 +92,7 @@ class TestHybridAttnBackendBase(CustomTestCase):
self.assertGreater(metrics["score"], self.accuracy_threshold)
if self.speculative_decode:
server_info = requests.get(self.base_url + "/get_server_info")
server_info = requests.get(self.base_url + "/server_info")
avg_spec_accept_length = server_info.json()["internal_states"][0][
"avg_spec_accept_length"
]
+2 -2
View File
@@ -500,7 +500,7 @@ class TestSRTEndpoint(CustomTestCase):
self.assertEqual(send_and_check_cached_tokens(range(0, 11000)), 10000)
def test_get_server_info(self):
response = requests.get(self.base_url + "/get_server_info")
response = requests.get(self.base_url + "/server_info")
response_json = response.json()
max_total_num_tokens = response_json["max_total_num_tokens"]
@@ -630,7 +630,7 @@ class TestSRTEndpoint(CustomTestCase):
tp = ThreadPoolExecutor(max_workers=30)
def s():
server_info = requests.get(self.base_url + "/get_server_info")
server_info = requests.get(self.base_url + "/server_info")
server_info.json()
futures = []
@@ -57,13 +57,13 @@ class TestDataParallelism(CustomTestCase, GSM8KMixin):
assert response.status_code == 200
def test_get_memory_pool_size(self):
# use `get_server_info` instead since `get_memory_pool_size` is merged into `get_server_info`
response = requests.get(self.base_url + "/get_server_info")
# use `server_info` instead since `get_memory_pool_size` is merged into `server_info`
response = requests.get(self.base_url + "/server_info")
assert response.status_code == 200
time.sleep(1)
response = requests.get(self.base_url + "/get_server_info")
response = requests.get(self.base_url + "/server_info")
assert response.status_code == 200
@@ -167,7 +167,7 @@ class TestDPAttentionDP2TP2DeepseekV3MTP(
self.assertGreater(metrics["score"], 0.60)
server_info = requests.get(self.base_url + "/get_server_info")
server_info = requests.get(self.base_url + "/server_info")
avg_spec_accept_length = server_info.json()["internal_states"][0][
"avg_spec_accept_length"
]
@@ -127,7 +127,7 @@ class TestDPAttentionDP2TP2DeepseekV3MTP(
self.assertGreater(metrics["score"], 0.60)
server_info = requests.get(self.base_url + "/get_server_info")
server_info = requests.get(self.base_url + "/server_info")
avg_spec_accept_length = server_info.json()["internal_states"][0][
"avg_spec_accept_length"
]
+1 -1
View File
@@ -148,7 +148,7 @@ class TestDeepseekMTP(CustomTestCase):
self.assertGreater(metrics["score"], 0.92)
server_info = requests.get(self.base_url + "/get_server_info")
server_info = requests.get(self.base_url + "/server_info")
avg_spec_accept_length = server_info.json()["internal_states"][0][
"avg_spec_accept_length"
]
+3 -3
View File
@@ -412,7 +412,7 @@ class TestMTP(CustomTestCase):
self.assertGreater(metrics["score"], 0.60)
server_info = requests.get(self.base_url + "/get_server_info")
server_info = requests.get(self.base_url + "/server_info")
avg_spec_accept_length = server_info.json()["internal_states"][0][
"avg_spec_accept_length"
]
@@ -486,7 +486,7 @@ class TestMTPWithTBO(CustomTestCase):
self.assertGreater(metrics["score"], 0.60)
server_info = requests.get(self.base_url + "/get_server_info")
server_info = requests.get(self.base_url + "/server_info")
avg_spec_accept_length = server_info.json()["internal_states"][0][
"avg_spec_accept_length"
]
@@ -562,7 +562,7 @@ class TestMTPWithTPAttnAndTBO(CustomTestCase):
self.assertGreater(metrics["score"], 0.60)
server_info = requests.get(self.base_url + "/get_server_info")
server_info = requests.get(self.base_url + "/server_info")
avg_spec_accept_length = server_info.json()["internal_states"][0][
"avg_spec_accept_length"
]
+1 -1
View File
@@ -199,7 +199,7 @@ class TestDeepseekV3MTP(CustomTestCase):
self.assertGreater(metrics["score"], 0.60)
server_info = requests.get(self.base_url + "/get_server_info")
server_info = requests.get(self.base_url + "/server_info")
avg_spec_accept_length = server_info.json()["internal_states"][0][
"avg_spec_accept_length"
]
+1 -1
View File
@@ -115,7 +115,7 @@ class TestFlashinferMLAMTP(CustomTestCase):
self.assertGreater(metrics["score"], 0.60)
server_info = requests.get(self.base_url + "/get_server_info").json()
server_info = requests.get(self.base_url + "/server_info").json()
avg_spec_accept_length = server_info["internal_states"][0][
"avg_spec_accept_length"
]
@@ -117,7 +117,7 @@ class TestDeepseekV3MTPChannelInt8(CustomTestCase):
self.assertGreater(metrics["score"], 0.60)
server_info = requests.get(self.base_url + "/get_server_info")
server_info = requests.get(self.base_url + "/server_info")
avg_spec_accept_length = server_info.json()["internal_states"][0][
"avg_spec_accept_length"
]
@@ -221,7 +221,7 @@ class TestDeepseekV3MTPBlockInt8(CustomTestCase):
self.assertGreater(metrics["score"], 0.60)
server_info = requests.get(self.base_url + "/get_server_info")
server_info = requests.get(self.base_url + "/server_info")
avg_spec_accept_length = server_info.json()["internal_states"][0][
"avg_spec_accept_length"
]
@@ -84,7 +84,7 @@ class TestDeepseekV32FP4DPSpecV2(CustomTestCase):
metrics = run_eval(args)
print(f"{metrics=}")
server_info = requests.get(self.base_url + "/get_server_info")
server_info = requests.get(self.base_url + "/server_info")
avg_spec_accept_length = server_info.json()["internal_states"][0][
"avg_spec_accept_length"
]
@@ -175,7 +175,7 @@ class TestDeepseekV32FP4TPSpecV2(CustomTestCase):
metrics = run_eval(args)
print(f"{metrics=}")
server_info = requests.get(self.base_url + "/get_server_info")
server_info = requests.get(self.base_url + "/server_info")
avg_spec_accept_length = server_info.json()["internal_states"][0][
"avg_spec_accept_length"
]
@@ -106,7 +106,7 @@ class TestDeepseekV3W4Afp8Mtp(CustomTestCase):
metrics = run_eval(args)
print(f"{metrics=}")
server_info = requests.get(self.base_url + "/get_server_info")
server_info = requests.get(self.base_url + "/server_info")
avg_spec_accept_length = server_info.json()["internal_states"][0][
"avg_spec_accept_length"
]
@@ -87,7 +87,7 @@ class TestEAGLE3EngineDPAttention(CustomTestCase):
metrics = run_eval(args)
print(f"{metrics=}")
server_info = requests.get(self.base_url + "/get_server_info")
server_info = requests.get(self.base_url + "/server_info")
server_data = server_info.json()
# Try to get avg_spec_accept_length
@@ -33,7 +33,7 @@ def test_gsm8k(base_url: str, model: str):
num_threads=128,
)
metrics = run_eval(args)
server_info = requests.get(base_url + "/get_server_info")
server_info = requests.get(base_url + "/server_info")
avg_spec_accept_length = server_info.json()["internal_states"][0][
"avg_spec_accept_length"
]
@@ -113,7 +113,7 @@ class TestStandaloneSpeculativeDecodingBase(CustomTestCase):
metric_key = "score"
self.assertGreater(metrics[metric_key], self.accuracy_threshold)
server_info = requests.get(self.base_url + "/get_server_info")
server_info = requests.get(self.base_url + "/server_info")
avg_spec_accept_length = server_info.json()["internal_states"][0][
"avg_spec_accept_length"
]
@@ -176,7 +176,7 @@ class TestStandaloneV2SpeculativeDecodingBase(CustomTestCase):
metric_key = "score"
self.assertGreater(metrics[metric_key], self.accuracy_threshold)
server_info = requests.get(self.base_url + "/get_server_info")
server_info = requests.get(self.base_url + "/server_info")
avg_spec_accept_length = server_info.json()["internal_states"][0][
"avg_spec_accept_length"
]