52 lines
1.8 KiB
Python
52 lines
1.8 KiB
Python
# SPDX-License-Identifier: Apache-2.0
|
|
# SPDX-FileCopyrightText: Copyright contributors to the vLLM project
|
|
"""Tests for the MoEKernelOracle ABC introduced in PR series for #37753.
|
|
|
|
This file contains a single canonical demonstration that
|
|
`UnquantizedMoEKernelOracle` methods delegate one-to-one to the
|
|
existing module-level functions in `oracle/unquantized.py`. Each method
|
|
on `UnquantizedMoEKernelOracle` follows the same `return module_fn(args)`
|
|
pattern, so verifying delegation for one method (`make_kernel`) gives
|
|
high confidence in the rest.
|
|
"""
|
|
|
|
from unittest.mock import patch
|
|
|
|
from vllm.model_executor.layers.fused_moe.experts.triton_moe import TritonExperts
|
|
from vllm.model_executor.layers.fused_moe.oracle import UnquantizedMoEKernelOracle
|
|
from vllm.model_executor.layers.fused_moe.oracle.unquantized import (
|
|
UnquantizedMoeBackend,
|
|
)
|
|
|
|
|
|
class TestUnquantizedDelegation:
|
|
"""UnquantizedMoEKernelOracle methods must delegate to the existing
|
|
module-level functions; behaviour is bit-identical."""
|
|
|
|
def test_make_kernel_delegates(self) -> None:
|
|
quant_config = object()
|
|
moe_config = object()
|
|
experts_cls = TritonExperts
|
|
sentinel_kernel = object()
|
|
|
|
with patch(
|
|
"vllm.model_executor.layers.fused_moe.oracle.unquantized."
|
|
"make_unquantized_moe_kernel",
|
|
return_value=sentinel_kernel,
|
|
) as mocked:
|
|
out = UnquantizedMoEKernelOracle().make_kernel(
|
|
quant_config,
|
|
moe_config,
|
|
UnquantizedMoeBackend.TRITON,
|
|
experts_cls,
|
|
)
|
|
|
|
mocked.assert_called_once_with(
|
|
quant_config,
|
|
moe_config,
|
|
UnquantizedMoeBackend.TRITON,
|
|
experts_cls,
|
|
None, # routing_tables default
|
|
)
|
|
assert out is sentinel_kernel
|