11"""Validation functions for model configuration."""
22
3- from .model import InternalModelConfig
3+ from .model import InternalModelConfig , RolloutWeightsMode
4+
5+ QWEN3_5_MOE_MODELS = {
6+ "Qwen/Qwen3.5-35B-A3B" ,
7+ "Qwen/Qwen3.5-397B-A17B" ,
8+ }
49
510
611def is_dedicated_mode (config : InternalModelConfig ) -> bool :
712 """Return True if the config specifies dedicated mode (separate training and inference GPUs)."""
813 return "trainer_gpu_ids" in config and "inference_gpu_ids" in config
914
1015
16+ def _rollout_weights_mode (config : InternalModelConfig ) -> RolloutWeightsMode :
17+ mode = config .get ("rollout_weights_mode" , "lora" )
18+ if mode in {"lora" , "merged" }:
19+ return mode
20+ raise ValueError ("rollout_weights_mode must be either 'lora' or 'merged'" )
21+
22+
23+ def _is_qwen3_5_moe_model (config : InternalModelConfig ) -> bool :
24+ model_name = config .get ("engine_args" , {}).get ("model" )
25+ return model_name in QWEN3_5_MOE_MODELS
26+
27+
1128def validate_dedicated_config (config : InternalModelConfig ) -> None :
1229 """Validate dedicated mode GPU configuration.
1330
@@ -16,12 +33,19 @@ def validate_dedicated_config(config: InternalModelConfig) -> None:
1633 """
1734 has_trainer = "trainer_gpu_ids" in config
1835 has_inference = "inference_gpu_ids" in config
36+ rollout_weights_mode = _rollout_weights_mode (config )
1937
2038 if has_trainer != has_inference :
2139 raise ValueError (
2240 "trainer_gpu_ids and inference_gpu_ids must both be set or both unset"
2341 )
2442
43+ if rollout_weights_mode == "merged" and not has_trainer :
44+ raise ValueError (
45+ "rollout_weights_mode='merged' requires dedicated mode "
46+ "(set both trainer_gpu_ids and inference_gpu_ids)"
47+ )
48+
2549 if not has_trainer :
2650 return
2751
@@ -65,3 +89,9 @@ def validate_dedicated_config(config: InternalModelConfig) -> None:
6589 "enable_sleep_mode is incompatible with dedicated mode "
6690 "(dedicated mode runs vLLM on a separate GPU, sleep/wake is not needed)"
6791 )
92+
93+ if _is_qwen3_5_moe_model (config ) and rollout_weights_mode == "lora" :
94+ raise ValueError (
95+ "Qwen3.5-MoE models require rollout_weights_mode='merged' with the "
96+ "current vLLM version because direct LoRA inference is currently broken"
97+ )
0 commit comments