79 lines
3.7 KiB
Python
79 lines
3.7 KiB
Python
# SPDX-License-Identifier: Apache-2.0
|
|
# SPDX-FileCopyrightText: Copyright contributors to the vLLM project
|
|
"""Unit tests for OmniDiffusionConfig.is_moe (fix is_moe type and threshold, 6663c0b)."""
|
|
|
|
import pytest
|
|
|
|
from vllm_omni.diffusion.data import OmniDiffusionConfig, TransformerConfig
|
|
|
|
pytestmark = [pytest.mark.core_model, pytest.mark.cpu]
|
|
|
|
|
|
class TestOmniDiffusionConfigIsMoE:
|
|
"""Tests for OmniDiffusionConfig.is_moe property.
|
|
|
|
Covers commit 6663c0b: fix is_moe type and threshold
|
|
- num_experts must be (list, tuple, int); otherwise return False.
|
|
- Threshold: is_moe is True when num_experts > 0 (not > 1).
|
|
"""
|
|
|
|
def test_is_moe_missing_num_experts_returns_false(self):
|
|
"""When num_experts is absent, is_moe should be False."""
|
|
tf_config = TransformerConfig.from_dict({})
|
|
config = OmniDiffusionConfig(model="test", tf_model_config=tf_config)
|
|
assert config.is_moe is False
|
|
|
|
def test_is_moe_none_num_experts_returns_false(self):
|
|
"""When num_experts is explicitly None (e.g. in params), is_moe should be False."""
|
|
tf_config = TransformerConfig.from_dict({"num_experts": None})
|
|
config = OmniDiffusionConfig(model="test", tf_model_config=tf_config)
|
|
assert config.is_moe is False
|
|
|
|
def test_is_moe_non_allowed_type_returns_false(self):
|
|
"""When num_experts is not int/list/tuple (e.g. str), is_moe should be False."""
|
|
tf_config = TransformerConfig.from_dict({"num_experts": "2"})
|
|
config = OmniDiffusionConfig(model="test", tf_model_config=tf_config)
|
|
assert config.is_moe is False
|
|
|
|
def test_is_moe_int_zero_returns_false(self):
|
|
"""num_experts int 0 should yield is_moe False (threshold > 0)."""
|
|
tf_config = TransformerConfig.from_dict({"num_experts": 0})
|
|
config = OmniDiffusionConfig(model="test", tf_model_config=tf_config)
|
|
assert config.is_moe is False
|
|
|
|
def test_is_moe_int_one_returns_true(self):
|
|
"""num_experts int 1 should yield is_moe True (threshold > 0, not > 1)."""
|
|
tf_config = TransformerConfig.from_dict({"num_experts": 1})
|
|
config = OmniDiffusionConfig(model="test", tf_model_config=tf_config)
|
|
assert config.is_moe is True
|
|
|
|
def test_is_moe_int_gt_one_returns_true(self):
|
|
"""num_experts int > 1 should yield is_moe True."""
|
|
tf_config = TransformerConfig.from_dict({"num_experts": 2})
|
|
config = OmniDiffusionConfig(model="test", tf_model_config=tf_config)
|
|
assert config.is_moe is True
|
|
|
|
def test_is_moe_list_all_zero_returns_false(self):
|
|
"""num_experts list with all <= 0 should yield is_moe False."""
|
|
tf_config = TransformerConfig.from_dict({"num_experts": [0]})
|
|
config = OmniDiffusionConfig(model="test", tf_model_config=tf_config)
|
|
assert config.is_moe is False
|
|
|
|
def test_is_moe_list_has_positive_returns_true(self):
|
|
"""num_experts list with any int > 0 should yield is_moe True."""
|
|
tf_config = TransformerConfig.from_dict({"num_experts": [0, 1]})
|
|
config = OmniDiffusionConfig(model="test", tf_model_config=tf_config)
|
|
assert config.is_moe is True
|
|
|
|
def test_is_moe_tuple_has_positive_returns_true(self):
|
|
"""num_experts tuple with any int > 0 should yield is_moe True."""
|
|
tf_config = TransformerConfig.from_dict({"num_experts": (0, 2)})
|
|
config = OmniDiffusionConfig(model="test", tf_model_config=tf_config)
|
|
assert config.is_moe is True
|
|
|
|
def test_is_moe_list_non_int_ignored(self):
|
|
"""num_experts list with only non-int entries should yield is_moe False."""
|
|
tf_config = TransformerConfig.from_dict({"num_experts": ["a", 0.0]})
|
|
config = OmniDiffusionConfig(model="test", tf_model_config=tf_config)
|
|
assert config.is_moe is False
|