A few updates to the night tests (#17694)
This commit is contained in:
@@ -40,6 +40,7 @@ class AccuracyTestResult:
|
|||||||
baseline_accuracy: float
|
baseline_accuracy: float
|
||||||
error: Optional[str]
|
error: Optional[str]
|
||||||
latency: Optional[float] = None
|
latency: Optional[float] = None
|
||||||
|
variant: Optional[str] = None
|
||||||
|
|
||||||
|
|
||||||
def write_accuracy_github_summary(
|
def write_accuracy_github_summary(
|
||||||
@@ -54,16 +55,18 @@ def write_accuracy_github_summary(
|
|||||||
dataset: Dataset name used for evaluation
|
dataset: Dataset name used for evaluation
|
||||||
results: List of AccuracyTestResult objects
|
results: List of AccuracyTestResult objects
|
||||||
"""
|
"""
|
||||||
summary = f"## {test_name} - Accuracy ({dataset})\n"
|
summary = f"#### {test_name} - Accuracy ({dataset})\n"
|
||||||
summary += "| model | status | score | baseline | error |\n"
|
summary += "| config | status | score | baseline | error |\n"
|
||||||
summary += "| ----- | ------ | ----- | -------- | ----- |\n"
|
summary += "| ------ | ------ | ----- | -------- | ----- |\n"
|
||||||
|
|
||||||
for result in results:
|
for result in results:
|
||||||
status_emoji = "✅" if result.passed else "❌"
|
status_emoji = "✅" if result.passed else "❌"
|
||||||
score_str = f"{result.score:.4f}" if result.score is not None else "N/A"
|
score_str = f"{result.score:.4f}" if result.score is not None else "N/A"
|
||||||
baseline_str = f"{result.baseline_accuracy:.4f}"
|
baseline_str = f"{result.baseline_accuracy:.4f}"
|
||||||
error_str = result.error if result.error else "-"
|
error_str = result.error if result.error else "-"
|
||||||
summary += f"| {result.model} | {status_emoji} | {score_str} | {baseline_str} | {error_str} |\n"
|
# Use variant name if available, otherwise use model path
|
||||||
|
config_name = result.variant if result.variant else result.model
|
||||||
|
summary += f"| {config_name} | {status_emoji} | {score_str} | {baseline_str} | {error_str} |\n"
|
||||||
|
|
||||||
write_github_step_summary(summary)
|
write_github_step_summary(summary)
|
||||||
|
|
||||||
@@ -239,6 +242,7 @@ def run_accuracy_test(
|
|||||||
score=None,
|
score=None,
|
||||||
baseline_accuracy=params.baseline_accuracy,
|
baseline_accuracy=params.baseline_accuracy,
|
||||||
error=error,
|
error=error,
|
||||||
|
variant=model.variant,
|
||||||
)
|
)
|
||||||
|
|
||||||
# Validate against baseline
|
# Validate against baseline
|
||||||
@@ -265,4 +269,5 @@ def run_accuracy_test(
|
|||||||
baseline_accuracy=params.baseline_accuracy,
|
baseline_accuracy=params.baseline_accuracy,
|
||||||
error=error if not passed else None,
|
error=error if not passed else None,
|
||||||
latency=latency,
|
latency=latency,
|
||||||
|
variant=model.variant,
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -60,7 +60,7 @@ class TestDeepseekV31(unittest.TestCase):
|
|||||||
|
|
||||||
run_combined_tests(
|
run_combined_tests(
|
||||||
models=variants,
|
models=variants,
|
||||||
test_name="DeepSeek-V3.1 Unified",
|
test_name="DeepSeek-V3.1",
|
||||||
accuracy_params=AccuracyTestParams(
|
accuracy_params=AccuracyTestParams(
|
||||||
dataset="gsm8k", baseline_accuracy=0.935
|
dataset="gsm8k", baseline_accuracy=0.935
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -82,7 +82,7 @@ class TestDeepseekV32(unittest.TestCase):
|
|||||||
|
|
||||||
run_combined_tests(
|
run_combined_tests(
|
||||||
models=variants,
|
models=variants,
|
||||||
test_name="DeepSeek-V3.2 Unified",
|
test_name="DeepSeek-V3.2",
|
||||||
accuracy_params=AccuracyTestParams(
|
accuracy_params=AccuracyTestParams(
|
||||||
dataset="gsm8k", baseline_accuracy=GSM8K_BASELINE
|
dataset="gsm8k", baseline_accuracy=GSM8K_BASELINE
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -69,7 +69,7 @@ class TestDeepseekV32CPSingleNode(unittest.TestCase):
|
|||||||
ModelLaunchSettings(
|
ModelLaunchSettings(
|
||||||
DEEPSEEK_V32_EXP_MODEL_PATH,
|
DEEPSEEK_V32_EXP_MODEL_PATH,
|
||||||
tp_size=8,
|
tp_size=8,
|
||||||
extra_args=BASE_ARGS + ["--tp=8"] + MTP_ARGS + CP_ROUND_ROBIN_ARGS,
|
extra_args=BASE_ARGS + MTP_ARGS + CP_ROUND_ROBIN_ARGS,
|
||||||
variant="CP-round-robin-split",
|
variant="CP-round-robin-split",
|
||||||
),
|
),
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ class TestGLM46(unittest.TestCase):
|
|||||||
|
|
||||||
run_combined_tests(
|
run_combined_tests(
|
||||||
models=variants,
|
models=variants,
|
||||||
test_name="GLM-4.6 Unified",
|
test_name="GLM-4.6",
|
||||||
accuracy_params=AccuracyTestParams(dataset="gsm8k", baseline_accuracy=0.80),
|
accuracy_params=AccuracyTestParams(dataset="gsm8k", baseline_accuracy=0.80),
|
||||||
performance_params=PerformanceTestParams(
|
performance_params=PerformanceTestParams(
|
||||||
profile_dir="performance_profiles_glm_4_6",
|
profile_dir="performance_profiles_glm_4_6",
|
||||||
|
|||||||
@@ -51,7 +51,7 @@ class TestGLM46FP8(unittest.TestCase):
|
|||||||
|
|
||||||
run_combined_tests(
|
run_combined_tests(
|
||||||
models=variants,
|
models=variants,
|
||||||
test_name="GLM-4.6-FP8 Unified",
|
test_name="GLM-4.6-FP8",
|
||||||
accuracy_params=AccuracyTestParams(dataset="gsm8k", baseline_accuracy=0.80),
|
accuracy_params=AccuracyTestParams(dataset="gsm8k", baseline_accuracy=0.80),
|
||||||
performance_params=PerformanceTestParams(
|
performance_params=PerformanceTestParams(
|
||||||
profile_dir="performance_profiles_glm_4_6_fp8",
|
profile_dir="performance_profiles_glm_4_6_fp8",
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ class TestKimiK2(unittest.TestCase):
|
|||||||
|
|
||||||
run_combined_tests(
|
run_combined_tests(
|
||||||
models=variants,
|
models=variants,
|
||||||
test_name="Kimi-K2-Thinking Unified",
|
test_name="Kimi-K2-Thinking",
|
||||||
accuracy_params=AccuracyTestParams(dataset="gsm8k", baseline_accuracy=0.94),
|
accuracy_params=AccuracyTestParams(dataset="gsm8k", baseline_accuracy=0.94),
|
||||||
performance_params=PerformanceTestParams(
|
performance_params=PerformanceTestParams(
|
||||||
profile_dir="performance_profiles_kimi_k2_thinking",
|
profile_dir="performance_profiles_kimi_k2_thinking",
|
||||||
|
|||||||
@@ -44,7 +44,7 @@ class TestLlama4(unittest.TestCase):
|
|||||||
|
|
||||||
run_combined_tests(
|
run_combined_tests(
|
||||||
models=variants,
|
models=variants,
|
||||||
test_name="Llama-4-Scout Unified",
|
test_name="Llama-4-Scout",
|
||||||
accuracy_params=AccuracyTestParams(dataset="gsm8k", baseline_accuracy=0.9),
|
accuracy_params=AccuracyTestParams(dataset="gsm8k", baseline_accuracy=0.9),
|
||||||
performance_params=PerformanceTestParams(
|
performance_params=PerformanceTestParams(
|
||||||
profile_dir="performance_profiles_llama4",
|
profile_dir="performance_profiles_llama4",
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ class TestMiniMaxM2(unittest.TestCase):
|
|||||||
|
|
||||||
run_combined_tests(
|
run_combined_tests(
|
||||||
models=variants,
|
models=variants,
|
||||||
test_name="MiniMax-M2 Unified",
|
test_name="MiniMax-M2",
|
||||||
accuracy_params=AccuracyTestParams(dataset="gsm8k", baseline_accuracy=0.80),
|
accuracy_params=AccuracyTestParams(dataset="gsm8k", baseline_accuracy=0.80),
|
||||||
performance_params=PerformanceTestParams(
|
performance_params=PerformanceTestParams(
|
||||||
profile_dir="performance_profiles_minimax_m2",
|
profile_dir="performance_profiles_minimax_m2",
|
||||||
|
|||||||
@@ -76,7 +76,7 @@ class TestMistralLarge3(unittest.TestCase):
|
|||||||
|
|
||||||
run_combined_tests(
|
run_combined_tests(
|
||||||
models=variants,
|
models=variants,
|
||||||
test_name="Mistral-Large-3 Unified",
|
test_name="Mistral-Large-3",
|
||||||
accuracy_params=AccuracyTestParams(dataset="gsm8k", baseline_accuracy=0.90),
|
accuracy_params=AccuracyTestParams(dataset="gsm8k", baseline_accuracy=0.90),
|
||||||
performance_params=PerformanceTestParams(
|
performance_params=PerformanceTestParams(
|
||||||
profile_dir="performance_profiles_mistral_large3",
|
profile_dir="performance_profiles_mistral_large3",
|
||||||
|
|||||||
@@ -4,46 +4,67 @@ from sglang.test.accuracy_test_runner import AccuracyTestParams
|
|||||||
from sglang.test.ci.ci_register import register_cuda_ci
|
from sglang.test.ci.ci_register import register_cuda_ci
|
||||||
from sglang.test.performance_test_runner import PerformanceTestParams
|
from sglang.test.performance_test_runner import PerformanceTestParams
|
||||||
from sglang.test.run_combined_tests import run_combined_tests
|
from sglang.test.run_combined_tests import run_combined_tests
|
||||||
from sglang.test.test_utils import ModelLaunchSettings, is_blackwell_system
|
from sglang.test.test_utils import ModelLaunchSettings
|
||||||
|
|
||||||
# Runs on both H200 and B200 via nightly-8-gpu-common suite
|
# Runs on both H200 and B200 via nightly-8-gpu-common suite
|
||||||
register_cuda_ci(est_time=1800, suite="nightly-8-gpu-common", nightly=True)
|
register_cuda_ci(est_time=1800, suite="nightly-8-gpu-common", nightly=True)
|
||||||
|
|
||||||
QWEN3_235B_MODEL_PATH = "Qwen/Qwen3-235B-A22B-Instruct-2507"
|
QWEN3_235B_FP8_MODEL_PATH = "Qwen/Qwen3-235B-A22B-Instruct-2507-FP8"
|
||||||
|
QWEN3_235B_EAGLE3_MODEL_PATH = (
|
||||||
|
"lmsys/SGLang-EAGLE3-Qwen3-235B-A22B-Instruct-2507-SpecForge-Meituan"
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
@unittest.skipIf(not is_blackwell_system(), "Requires B200")
|
class TestQwen3235BFP8(unittest.TestCase):
|
||||||
class TestQwen3235B(unittest.TestCase):
|
"""Test class for Qwen3-235B-FP8 performance and accuracy.
|
||||||
"""Unified test class for Qwen3-235B performance and accuracy.
|
|
||||||
|
|
||||||
Single variant with simple TP=8 configuration.
|
Two variants:
|
||||||
Runs BOTH:
|
- basic: TP=8
|
||||||
|
- eagle3: TP=8 + EP=2 + EAGLE3 speculative decoding
|
||||||
|
|
||||||
|
Each variant runs BOTH:
|
||||||
- Performance test (using NightlyBenchmarkRunner)
|
- Performance test (using NightlyBenchmarkRunner)
|
||||||
- Accuracy test (using run_eval with mgsm_en)
|
- Accuracy test (using run_eval with gsm8k)
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def test_qwen3_235b(self):
|
def test_qwen3_235b_fp8_all_variants(self):
|
||||||
"""Run performance and accuracy for Qwen3-235B."""
|
"""Run performance and accuracy for Qwen3-235B-FP8."""
|
||||||
base_args = [
|
base_args = [
|
||||||
"--tp=8",
|
"--tp=8",
|
||||||
"--trust-remote-code",
|
"--trust-remote-code",
|
||||||
]
|
]
|
||||||
|
eagle3_args = [
|
||||||
|
"--ep=2",
|
||||||
|
"--speculative-algorithm=EAGLE3",
|
||||||
|
f"--speculative-draft-model-path={QWEN3_235B_EAGLE3_MODEL_PATH}",
|
||||||
|
"--speculative-num-steps=3",
|
||||||
|
"--speculative-eagle-topk=1",
|
||||||
|
"--speculative-num-draft-tokens=4",
|
||||||
|
]
|
||||||
|
|
||||||
variants = [
|
variants = [
|
||||||
|
# Variant: "basic" - TP=8
|
||||||
ModelLaunchSettings(
|
ModelLaunchSettings(
|
||||||
QWEN3_235B_MODEL_PATH,
|
QWEN3_235B_FP8_MODEL_PATH,
|
||||||
tp_size=8,
|
tp_size=8,
|
||||||
extra_args=base_args,
|
extra_args=base_args,
|
||||||
variant="TP8",
|
variant="TP8",
|
||||||
),
|
),
|
||||||
|
# Variant: "eagle3" - TP=8 + EP=2 + EAGLE3 speculative decoding
|
||||||
|
ModelLaunchSettings(
|
||||||
|
QWEN3_235B_FP8_MODEL_PATH,
|
||||||
|
tp_size=8,
|
||||||
|
extra_args=base_args + eagle3_args,
|
||||||
|
variant="TP8+EP2+EAGLE3",
|
||||||
|
),
|
||||||
]
|
]
|
||||||
|
|
||||||
run_combined_tests(
|
run_combined_tests(
|
||||||
models=variants,
|
models=variants,
|
||||||
test_name="Qwen3-235B Unified",
|
test_name="Qwen3-235B-FP8",
|
||||||
accuracy_params=AccuracyTestParams(dataset="gsm8k", baseline_accuracy=0.88),
|
accuracy_params=AccuracyTestParams(dataset="gsm8k", baseline_accuracy=0.88),
|
||||||
performance_params=PerformanceTestParams(
|
performance_params=PerformanceTestParams(
|
||||||
profile_dir="performance_profiles_qwen3_235b",
|
profile_dir="performance_profiles_qwen3_235b_fp8",
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user