diff --git a/python/sglang/multimodal_gen/configs/pipeline_configs/minimax_h3.py b/python/sglang/multimodal_gen/configs/pipeline_configs/minimax_h3.py index 7e30540a9086..59571a9993ab 100644 --- a/python/sglang/multimodal_gen/configs/pipeline_configs/minimax_h3.py +++ b/python/sglang/multimodal_gen/configs/pipeline_configs/minimax_h3.py @@ -160,6 +160,7 @@ def validate_quality_deployment(self, server_args) -> None: "is_dit_layerwise_offload_selected": ( server_args.is_dit_layerwise_offload_selected ), + "lora_path": server_args.lora_path, "model_variant": model_variant, "num_gpus": server_args.num_gpus, "performance_mode": server_args.performance_mode, @@ -170,6 +171,7 @@ def validate_quality_deployment(self, server_args) -> None: "ring_degree": server_args.ring_degree, "sp_degree": server_args.sp_degree, "tp_size": server_args.tp_size, + "transformer_weights_path": server_args.transformer_weights_path, "ulysses_degree": server_args.ulysses_degree, "use_fsdp_inference": server_args.use_fsdp_inference, } @@ -183,6 +185,7 @@ def validate_quality_deployment(self, server_args) -> None: "enable_breakable_cuda_graph": False, "enable_torch_compile": False, "is_dit_layerwise_offload_selected": False, + "lora_path": None, "model_variant": "fl2va", "num_gpus": 4, "performance_mode": "speed", @@ -193,6 +196,7 @@ def validate_quality_deployment(self, server_args) -> None: "ring_degree": 1, "sp_degree": 4, "tp_size": 1, + "transformer_weights_path": None, "ulysses_degree": 4, "use_fsdp_inference": False, } diff --git a/python/sglang/multimodal_gen/test/unit/test_minimax_h3_admission.py b/python/sglang/multimodal_gen/test/unit/test_minimax_h3_admission.py index a3cfe95c267c..8c0a4fcf846a 100644 --- a/python/sglang/multimodal_gen/test/unit/test_minimax_h3_admission.py +++ b/python/sglang/multimodal_gen/test/unit/test_minimax_h3_admission.py @@ -367,6 +367,7 @@ def _quality_server_args(): enable_breakable_cuda_graph=False, enable_torch_compile=False, is_dit_layerwise_offload_selected=False, + lora_path=None, minimax_h3_adaln_online=False, performance_mode="speed", quantization=None, @@ -543,6 +544,32 @@ def test_quality_admission_fails_closed_outside_validated_request(): stage.forward(batch, server_args) +@pytest.mark.parametrize( + ("field", "value"), + [ + ("lora_path", "larryvrh/MiniMax-H3-Turbo-Lora"), + ("transformer_weights_path", "/weights/dit.safetensors"), + ], +) +def test_quality_admission_rejects_substituted_dit_weights(field, value): + config = MiniMaxH3PipelineConfig() + server_args = _quality_server_args() + + with ( + patch.object(current_platform, "is_cuda", return_value=True), + patch.object(current_platform, "get_device_name", return_value="NVIDIA H200"), + patch.object( + current_platform, + "get_device_capability", + return_value=_HopperCapability(), + ), + ): + config.validate_quality_deployment(server_args) + setattr(server_args, field, value) + with pytest.raises(ValueError, match=field): + config.validate_quality_deployment(server_args) + + def test_validate_server_args_requires_packed_varlen_backend(): config = MiniMaxH3PipelineConfig() server_args = SimpleNamespace(