Files
sglang/test/registered/vlm/test_evs.py

61 lines
1.8 KiB
Python

from dataclasses import asdict, dataclass
from types import SimpleNamespace
import pytest
from sglang.test.ci.ci_register import register_amd_ci, register_cuda_ci
from sglang.test.test_utils import run_doctests
register_cuda_ci(est_time=20, suite="stage-b-test-small-1-gpu")
register_amd_ci(est_time=20, suite="stage-b-test-small-1-gpu-amd")
def test_resolve_evs_config():
from sglang.srt.multimodal.evs import EVS, EVSConfig, EVSProcessor
@dataclass(frozen=True, kw_only=True)
class EVSModelConfig:
video_pruning_rate: float = 0.1
spatial_merge_size: int = 2
class EVSModel(EVS):
@staticmethod
def create_evs_config(hf_config: EVSModelConfig) -> EVSConfig:
return EVSConfig(
video_pruning_rate=hf_config.video_pruning_rate,
spatial_merge_size=hf_config.spatial_merge_size,
)
processor = EVSProcessor(
hf_config=EVSModelConfig(spatial_merge_size=3),
config_to_evs_model={EVSModelConfig: EVSModel},
)
expected = EVSConfig(video_pruning_rate=0.1, spatial_merge_size=3)
assert asdict(processor.evs_config) == asdict(expected)
# No EVS for pruning rate 0.0
processor = EVSProcessor(
hf_config=EVSModelConfig(video_pruning_rate=0.0),
config_to_evs_model={EVSModelConfig: EVSModel},
)
assert processor.evs_config is None
# No EVS for non-EVS config
processor = EVSProcessor(
hf_config=SimpleNamespace(),
config_to_evs_model={EVSModelConfig: EVSModel},
)
assert processor.evs_config is None
def test_replace_offsets_with_tokens_per_frame():
from sglang.srt.multimodal.evs.evs_core import replace_offsets_with_tokens_per_frame
run_doctests(replace_offsets_with_tokens_per_frame)
if __name__ == "__main__":
import sys
sys.exit(pytest.main([__file__]))