diff --git a/test/registered/models_e2e/test_deepseek_v4_flash_fp4_b200.py b/test/registered/models_e2e/test_deepseek_v4_flash_fp4_b200.py index 4fa3fc7b6..5e659af08 100644 --- a/test/registered/models_e2e/test_deepseek_v4_flash_fp4_b200.py +++ b/test/registered/models_e2e/test_deepseek_v4_flash_fp4_b200.py @@ -120,6 +120,42 @@ class TestDSV4FlashFP4B200Balanced( kill_process_tree(cls.process.pid) +class TestDSV4FlashFP4NonMTPB200( + BasicDecodeCorrectnessMixin, GSM8KMixin, CustomTestCase +): + """Non-MTP recipe: TP=4, DP=4, DeepEP, no speculative decoding.""" + + gsm8k_accuracy_thres = 0.93 + + @classmethod + def setUpClass(cls): + cls.model = try_cached_model(MODEL) + cls.base_url = DEFAULT_URL_FOR_TEST + cls.process = popen_launch_server( + cls.model, + cls.base_url, + timeout=SERVER_LAUNCH_TIMEOUT, + other_args=[ + "--trust-remote-code", + "--tp", + "4", + "--dp", + "4", + "--enable-dp-attention", + "--moe-a2a-backend", + "deepep", + "--deepep-config", + DEEPEP_CONFIG, + ], + env=_DEEPEP_ENV, + ) + + @classmethod + def tearDownClass(cls): + if hasattr(cls, "process") and cls.process: + kill_process_tree(cls.process.pid) + + class TestDSV4FlashFP4B200Balanced_CP( BasicDecodeCorrectnessMixin, GSM8KMixin, diff --git a/test/registered/models_e2e/test_deepseek_v4_flash_fp4_h200.py b/test/registered/models_e2e/test_deepseek_v4_flash_fp4_h200.py index 674a48668..51d352667 100644 --- a/test/registered/models_e2e/test_deepseek_v4_flash_fp4_h200.py +++ b/test/registered/models_e2e/test_deepseek_v4_flash_fp4_h200.py @@ -131,5 +131,37 @@ class TestDSV4FlashFP4H200FlashInferCutlass( kill_process_tree(cls.process.pid) +class TestDSV4FlashFP4NonMTPH200( + BasicDecodeCorrectnessMixin, GSM8KMixin, CustomTestCase +): + """LowLatency recipe without MTP: TP=4, Marlin FP4, no speculative decoding.""" + + gsm8k_accuracy_thres = 0.93 + + @classmethod + def setUpClass(cls): + cls.model = try_cached_model(MODEL) + cls.base_url = DEFAULT_URL_FOR_TEST + cls.process = popen_launch_server( + cls.model, + cls.base_url, + timeout=SERVER_LAUNCH_TIMEOUT, + other_args=[ + "--trust-remote-code", + "--tp", + "4", + "--moe-runner-backend", + "marlin", + "--watchdog-timeout", + "900", + ], + ) + + @classmethod + def tearDownClass(cls): + if hasattr(cls, "process") and cls.process: + kill_process_tree(cls.process.pid) + + if __name__ == "__main__": unittest.main()