Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions deepspeed/inference/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -310,6 +310,12 @@ def validate_dtype(cls, field_value, values):
return field_value
raise TypeError(f"Invalid type for dtype: {type(field_value)}")

@field_validator("max_out_tokens")
def validate_max_out_tokens(cls, field_value, values):
if field_value <= 0:
raise ValueError(f"max_out_tokens must be a positive integer, got {field_value}")
return field_value

@field_validator("moe")
def moe_backward_compat(cls, field_value, values):
if isinstance(field_value, bool):
Expand Down
24 changes: 24 additions & 0 deletions tests/unit/inference/test_inference_config.py
Original file line number Diff line number Diff line change
Expand Up @@ -82,3 +82,27 @@ def test_moe_backward_compat_bool(self):
config = DeepSpeedInferenceConfig(moe=value)
assert isinstance(config.moe, DeepSpeedMoEConfig)
assert config.moe.enabled == value


@pytest.mark.inference
class TestInferenceConfigValidation:
"""CPU-only validation tests for DeepSpeedInferenceConfig."""

def test_negative_max_out_tokens_rejected(self):
# Regression test for https://github.com/deepspeedai/DeepSpeed/issues/8339
from deepspeed.inference.config import DeepSpeedInferenceConfig

with pytest.raises(ValueError, match="max_out_tokens must be a positive integer"):
DeepSpeedInferenceConfig(max_out_tokens=-1)

def test_zero_max_out_tokens_rejected(self):
from deepspeed.inference.config import DeepSpeedInferenceConfig

with pytest.raises(ValueError, match="max_out_tokens must be a positive integer"):
DeepSpeedInferenceConfig(max_out_tokens=0)

def test_positive_max_out_tokens_accepted(self):
from deepspeed.inference.config import DeepSpeedInferenceConfig

config = DeepSpeedInferenceConfig(max_out_tokens=128)
assert config.max_out_tokens == 128
Loading