chore: import upstream snapshot with attribution
This commit is contained in:
@@ -0,0 +1,60 @@
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
# SPDX-FileCopyrightText: Copyright contributors to the vLLM project
|
||||
|
||||
import pytest
|
||||
import torch
|
||||
|
||||
from vllm.model_executor.layers.activation import (
|
||||
GeluAndMul,
|
||||
SiluAndMul,
|
||||
get_act_and_mul_fn,
|
||||
get_act_fn,
|
||||
)
|
||||
from vllm.model_executor.models.gemma3 import Gemma3MLP
|
||||
from vllm.model_executor.models.gemma4 import Gemma4MLP
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
("activation_name", "expected_type"),
|
||||
[
|
||||
("gelu_pytorch_tanh", GeluAndMul),
|
||||
("silu", SiluAndMul),
|
||||
("swish", SiluAndMul),
|
||||
],
|
||||
)
|
||||
def test_get_act_and_mul_fn_supports_gemma_hidden_act_aliases(
|
||||
activation_name: str,
|
||||
expected_type: type[torch.nn.Module],
|
||||
default_vllm_config,
|
||||
) -> None:
|
||||
assert isinstance(get_act_and_mul_fn(activation_name), expected_type)
|
||||
|
||||
|
||||
def test_get_act_fn_supports_swish_alias() -> None:
|
||||
assert isinstance(get_act_fn("swish"), torch.nn.SiLU)
|
||||
|
||||
|
||||
@pytest.mark.parametrize("mlp_cls", [Gemma3MLP, Gemma4MLP])
|
||||
@pytest.mark.parametrize(
|
||||
("activation_name", "expected_type"),
|
||||
[
|
||||
("gelu_pytorch_tanh", GeluAndMul),
|
||||
("silu", SiluAndMul),
|
||||
("swish", SiluAndMul),
|
||||
],
|
||||
)
|
||||
def test_gemma_mlp_supports_hidden_act_variants(
|
||||
mlp_cls: type[torch.nn.Module],
|
||||
activation_name: str,
|
||||
expected_type: type[torch.nn.Module],
|
||||
default_vllm_config,
|
||||
dist_init,
|
||||
) -> None:
|
||||
mlp = mlp_cls(
|
||||
hidden_size=16,
|
||||
intermediate_size=32,
|
||||
hidden_activation=activation_name,
|
||||
)
|
||||
|
||||
assert isinstance(mlp.act_fn, expected_type)
|
||||
assert mlp(torch.randn(3, 16)).shape == (3, 16)
|
||||
Reference in New Issue
Block a user