From 02a37199ee6a03080afc2a2b8e7ea81661289f5d Mon Sep 17 00:00:00 2001 From: Wing Lian Date: Fri, 1 Aug 2025 09:59:45 -0400 Subject: [PATCH] prevent empty value for vllm_mode (#2998) --- src/axolotl/core/trainers/grpo/__init__.py | 3 ++- src/axolotl/utils/schemas/validation.py | 14 ++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src/axolotl/core/trainers/grpo/__init__.py b/src/axolotl/core/trainers/grpo/__init__.py index 839c20c2e..4106a2a7d 100644 --- a/src/axolotl/core/trainers/grpo/__init__.py +++ b/src/axolotl/core/trainers/grpo/__init__.py @@ -49,7 +49,8 @@ class GRPOStrategy: if trl.use_vllm: grpo_args_kwargs["use_vllm"] = trl.use_vllm - grpo_args_kwargs["vllm_mode"] = trl.vllm_mode + if trl.vllm_mode: + grpo_args_kwargs["vllm_mode"] = trl.vllm_mode if trl.vllm_mode == "colocate": grpo_args_kwargs["vllm_gpu_memory_utilization"] = ( vllm_cfg.gpu_memory_utilization diff --git a/src/axolotl/utils/schemas/validation.py b/src/axolotl/utils/schemas/validation.py index 502c18e7d..aa249c6ce 100644 --- a/src/axolotl/utils/schemas/validation.py +++ b/src/axolotl/utils/schemas/validation.py @@ -1268,6 +1268,19 @@ class DistributedValidationMixin: return self +class GRPOVllmValidationMixin: + """Validation mixin for vllm when using GRPO.""" + + @model_validator(mode="after") + def check_vllm_mode_set(self): + if self.trl and self.trl.use_vllm and not self.trl.vllm_mode: + LOG.warning( + "vllm_mode must be set to either `server` or `colocate` when using vllm, using default value `server`" + ) + self.trl.vllm_mode = "server" + return self + + # pylint: disable=too-many-ancestors class ValidationMixin( DatasetValidationMixin, @@ -1281,5 +1294,6 @@ class ValidationMixin( PretrainingValidationMixin, ModelCompatibilityValidationMixin, ComplexValidationMixin, + GRPOVllmValidationMixin, ): """Full validation mixin for Axolotl configuration."""