test_initialization.py 2.07 KB
Newer Older
1
2
# SPDX-License-Identifier: Apache-2.0

3
4
5
6
7
8
from unittest.mock import patch

import pytest
from transformers import PretrainedConfig

from vllm import LLM
9
10
from vllm.engine.llm_engine import LLMEngine as V0LLMEngine
from vllm.v1.engine.core import EngineCore as V1EngineCore
11
12
13
14
15
16
17

from .registry import HF_EXAMPLE_MODELS


@pytest.mark.parametrize("model_arch", HF_EXAMPLE_MODELS.get_supported_archs())
def test_can_initialize(model_arch):
    model_info = HF_EXAMPLE_MODELS.get_hf_info(model_arch)
18
19
    model_info.check_available_online(on_fail="skip")
    model_info.check_transformers_version(on_fail="skip")
20
21
22

    # Avoid OOM
    def hf_overrides(hf_config: PretrainedConfig) -> PretrainedConfig:
23
        hf_config.update(model_info.hf_overrides)
24

25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
        if hasattr(hf_config, "text_config"):
            text_config: PretrainedConfig = hf_config.text_config
        else:
            text_config = hf_config

        text_config.update({
            "num_layers": 1,
            "num_hidden_layers": 1,
            "num_experts": 2,
            "num_experts_per_tok": 2,
            "num_local_experts": 2,
        })

        return hf_config

    # Avoid calling model.forward()
41
    def _initialize_kv_caches_v0(self) -> None:
42
43
44
        self.cache_config.num_gpu_blocks = 0
        self.cache_config.num_cpu_blocks = 0

45
46
47
48
49
50
51
52
    def _initalize_kv_caches_v1(self, vllm_config):
        # gpu_blocks (> 0), cpu_blocks
        return 1, 0

    with (patch.object(V0LLMEngine, "_initialize_kv_caches",
                       _initialize_kv_caches_v0),
          patch.object(V1EngineCore, "_initialize_kv_caches",
                       _initalize_kv_caches_v1)):
53
        LLM(
54
            model_info.default,
55
56
            tokenizer=model_info.tokenizer,
            tokenizer_mode=model_info.tokenizer_mode,
57
58
59
60
            speculative_config={
                "model": model_info.speculative_model,
                "num_speculative_tokens": 1,
            } if model_info.speculative_model else None,
61
62
63
64
            trust_remote_code=model_info.trust_remote_code,
            load_format="dummy",
            hf_overrides=hf_overrides,
        )