registry.py 41.1 KB
Newer Older
1
# SPDX-License-Identifier: Apache-2.0
2
# SPDX-FileCopyrightText: Copyright contributors to the vLLM project
3

4
from collections.abc import Mapping, Set
5
from dataclasses import dataclass, field
6
from typing import Any, Literal, Optional
7

zhuwenwen's avatar
zhuwenwen committed
8
import os
9
10
11
import pytest
from packaging.version import Version
from transformers import __version__ as TRANSFORMERS_VERSION
zhuwenwen's avatar
zhuwenwen committed
12
# from ..utils import models_path_prefix
13

zhuwenwen's avatar
zhuwenwen committed
14
models_path_prefix = os.getenv('VLLM_OPTEST_MODELS_PATH') or os.getenv("OPTEST_MODELS_PATH")
15

16
17
from vllm.config import TokenizerMode

zhuwenwen's avatar
zhuwenwen committed
18

19
20
21
22
23
24
25
26
27
28
29
@dataclass(frozen=True)
class _HfExamplesInfo:
    default: str
    """The default model to use for testing this architecture."""

    extras: Mapping[str, str] = field(default_factory=dict)
    """Extra models to use for testing this architecture."""

    tokenizer: Optional[str] = None
    """Set the tokenizer to load for this architecture."""

30
    tokenizer_mode: TokenizerMode = "auto"
31
32
33
34
35
36
37
38
    """Set the tokenizer type for this architecture."""

    speculative_model: Optional[str] = None
    """
    The default model to use for testing this architecture, which is only used
    for speculative decoding.
    """

39
40
41
42
43
    min_transformers_version: Optional[str] = None
    """
    The minimum version of HF Transformers that is required to run this model.
    """

44
45
46
47
48
49
50
51
52
53
    max_transformers_version: Optional[str] = None
    """
    The maximum version of HF Transformers that this model runs on.
    """

    transformers_version_reason: Optional[str] = None
    """
    The reason for the minimum/maximum version requirement.
    """

54
55
56
57
58
59
60
61
62
63
64
    is_available_online: bool = True
    """
    Set this to ``False`` if the name of this architecture no longer exists on
    the HF repo. To maintain backwards compatibility, we have not removed them
    from the main model registry, so without this flag the registry tests will
    fail.
    """

    trust_remote_code: bool = False
    """The ``trust_remote_code`` level required to load the model."""

65
66
67
    v0_only: bool = False
    """The model is only available with the vLLM V0 engine."""

68
69
70
    hf_overrides: dict[str, Any] = field(default_factory=dict)
    """The ``hf_overrides`` required to load the model."""

71
72
73
74
75
76
    max_model_len: Optional[int] = None
    """
    The maximum model length to use for this model. Some models default to a
    length that is too large to fit into memory in CI.
    """

77
78
79
80
81
82
    revision: Optional[str] = None
    """
    The specific revision (commit hash, tag, or branch) to use for the model.
    If not specified, the default revision will be used.
    """

83
84
85
86
87
88
89
90
91
    def check_transformers_version(
        self,
        *,
        on_fail: Literal["error", "skip"],
    ) -> None:
        """
        If the installed transformers version does not meet the requirements,
        perform the given action.
        """
92
93
        if (self.min_transformers_version is None
                and self.max_transformers_version is None):
94
95
96
            return

        current_version = TRANSFORMERS_VERSION
97
        cur_base_version = Version(current_version).base_version
98
99
100
        min_version = self.min_transformers_version
        max_version = self.max_transformers_version
        msg = f"`transformers=={current_version}` installed, but `transformers"
101
102
103
        # Only check the base version for the min/max version, otherwise preview
        # models cannot be run because `x.yy.0.dev0`<`x.yy.0`
        if min_version and Version(cur_base_version) < Version(min_version):
104
            msg += f">={min_version}` is required to run this model."
105
        elif max_version and Version(cur_base_version) > Version(max_version):
106
107
108
            msg += f"<={max_version}` is required to run this model."
        else:
            return
109

110
111
112
113
114
115
116
        if self.transformers_version_reason:
            msg += f" Reason: {self.transformers_version_reason}"

        if on_fail == "error":
            raise RuntimeError(msg)
        else:
            pytest.skip(msg)
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133

    def check_available_online(
        self,
        *,
        on_fail: Literal["error", "skip"],
    ) -> None:
        """
        If the model is not available online, perform the given action.
        """
        if not self.is_available_online:
            msg = "Model is not available online"

            if on_fail == "error":
                raise RuntimeError(msg)
            else:
                pytest.skip(msg)

134
135
136
137

# yapf: disable
_TEXT_GENERATION_EXAMPLE_MODELS = {
    # [Decoder-only]
zhuwenwen's avatar
zhuwenwen committed
138
    "AquilaModel": _HfExamplesInfo(os.path.join(models_path_prefix, "BAAI/AquilaChat-7B"),
139
                                   trust_remote_code=True),
zhuwenwen's avatar
zhuwenwen committed
140
    "AquilaForCausalLM": _HfExamplesInfo(os.path.join(models_path_prefix, "BAAI/AquilaChat2-7B"),
141
                                         trust_remote_code=True),
142
    "ArceeForCausalLM": _HfExamplesInfo(os.path.join(models_path_prefix, "arcee-ai/AFM-4.5B-Base"),
Raghav Ravishankar's avatar
Raghav Ravishankar committed
143
                                        is_available_online=False),
zhuwenwen's avatar
zhuwenwen committed
144
    "ArcticForCausalLM": _HfExamplesInfo(os.path.join(models_path_prefix, "Snowflake/snowflake-arctic-instruct"),
145
                                         trust_remote_code=True),
zhuwenwen's avatar
zhuwenwen committed
146
    "BaiChuanForCausalLM": _HfExamplesInfo(os.path.join(models_path_prefix, "baichuan-inc/Baichuan-7B"),
147
                                         trust_remote_code=True),
zhuwenwen's avatar
zhuwenwen committed
148
    "BaichuanForCausalLM": _HfExamplesInfo(os.path.join(models_path_prefix, "baichuan-inc/Baichuan2-7B-chat"),
149
                                         trust_remote_code=True),
150
    "BailingMoeForCausalLM": _HfExamplesInfo(os.path.join(models_path_prefix, "inclusionAI/Ling-lite-1.5"),
151
                                         trust_remote_code=True),
152
153
154
155
    "BambaForCausalLM": _HfExamplesInfo(os.path.join(models_path_prefix, "ibm-ai-platform/Bamba-9B"),
                                        extras={"tiny": os.path.join(models_path_prefix, "hmellor/tiny-random-BambaForCausalLM")}),  # noqa: E501
    "BloomForCausalLM": _HfExamplesInfo(os.path.join(models_path_prefix, "bigscience/bloom-560m"),
                                        {"1b": os.path.join(models_path_prefix, "bigscience/bloomz-1b1")}),
zhuwenwen's avatar
zhuwenwen committed
156
    "ChatGLMModel": _HfExamplesInfo(os.path.join(models_path_prefix, "THUDM/chatglm3-6b"),
157
                                    trust_remote_code=True,
158
                                    max_transformers_version="4.48"),
zhuwenwen's avatar
zhuwenwen committed
159
    "ChatGLMForConditionalGeneration": _HfExamplesInfo(os.path.join(models_path_prefix, "thu-coai/ShieldLM-6B-chatglm3"),  # noqa: E501
160
                                                       trust_remote_code=True),
zhuwenwen's avatar
zhuwenwen committed
161
    "CohereForCausalLM": _HfExamplesInfo(os.path.join(models_path_prefix, "CohereForAI/c4ai-command-r-v01"),
162
                                         trust_remote_code=True),
zhuwenwen's avatar
zhuwenwen committed
163
    "Cohere2ForCausalLM": _HfExamplesInfo(os.path.join(models_path_prefix, "CohereForAI/c4ai-command-r7b-12-2024"), # noqa: E501
164
                                         trust_remote_code=True),
zhuwenwen's avatar
zhuwenwen committed
165
166
    "DbrxForCausalLM": _HfExamplesInfo(os.path.join(models_path_prefix, "databricks/dbrx-instruct")),
    "DeciLMForCausalLM": _HfExamplesInfo(os.path.join(models_path_prefix, "nvidia/Llama-3_3-Nemotron-Super-49B-v1"), # noqa: E501
167
                                         trust_remote_code=True),
zhuwenwen's avatar
zhuwenwen committed
168
169
    "DeepseekForCausalLM": _HfExamplesInfo(os.path.join(models_path_prefix, "deepseek-ai/deepseek-llm-7b-chat")),
    "DeepseekV2ForCausalLM": _HfExamplesInfo(os.path.join(models_path_prefix, "deepseek-ai/DeepSeek-V2-Lite-Chat"),  # noqa: E501
170
                                         trust_remote_code=True),
zhuwenwen's avatar
zhuwenwen committed
171
    "DeepseekV3ForCausalLM": _HfExamplesInfo(os.path.join(models_path_prefix, "deepseek-ai/DeepSeek-V3"),  # noqa: E501
Robert Shaw's avatar
Robert Shaw committed
172
                                         trust_remote_code=True),
173
    "Ernie4_5_ForCausalLM": _HfExamplesInfo(os.path.join(models_path_prefix, "baidu/ERNIE-4.5-0.3B-PT"),
174
                                            min_transformers_version="4.54"),
175
    "Ernie4_5_MoeForCausalLM": _HfExamplesInfo(os.path.join(models_path_prefix, "baidu/ERNIE-4.5-21B-A3B-PT"),
176
                                               min_transformers_version="4.54"),
177
178
179
180
181
    "ExaoneForCausalLM": _HfExamplesInfo(os.path.join(models_path_prefix, "LGAI-EXAONE/EXAONE-3.0-7.8B-Instruct")),  # noqa: E501
    "Exaone4ForCausalLM": _HfExamplesInfo(os.path.join(models_path_prefix, "LGAI-EXAONE/EXAONE-4.0-32B")),  # noqa: E501
    "Fairseq2LlamaForCausalLM": _HfExamplesInfo(os.path.join(models_path_prefix, "mgleize/fairseq2-dummy-Llama-3.2-1B")),  # noqa: E501
    "FalconForCausalLM": _HfExamplesInfo(os.path.join(models_path_prefix, "tiiuae/falcon-7b")),
    "FalconH1ForCausalLM":_HfExamplesInfo(os.path.join(models_path_prefix, "tiiuae/Falcon-H1-0.5B-Base"),
182
                                          min_transformers_version="4.53"),
zhuwenwen's avatar
zhuwenwen committed
183
184
185
    "GemmaForCausalLM": _HfExamplesInfo(os.path.join(models_path_prefix,"google/gemma-1.1-2b-it")),
    "Gemma2ForCausalLM": _HfExamplesInfo(os.path.join(models_path_prefix,"google/gemma-2-9b")),
    "Gemma3ForCausalLM": _HfExamplesInfo(os.path.join(models_path_prefix,"google/gemma-3-1b-it")),
zhuwenwen's avatar
zhuwenwen committed
186
    "Gemma3nForConditionalGeneration": _HfExamplesInfo(os.path.join(models_path_prefix,"google/gemma-3n-E2B-it"),    # noqa: E501
Robert Shaw's avatar
Robert Shaw committed
187
                                          min_transformers_version="4.53"),
zhuwenwen's avatar
zhuwenwen committed
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
    "GlmForCausalLM": _HfExamplesInfo(os.path.join(models_path_prefix,"THUDM/glm-4-9b-chat-hf")),
    "Glm4ForCausalLM": _HfExamplesInfo(os.path.join(models_path_prefix,"THUDM/GLM-4-9B-0414")),
    "GPT2LMHeadModel": _HfExamplesInfo(os.path.join(models_path_prefix,"openai-community/gpt2"),
                                       {"alias": os.path.join(models_path_prefix,"gpt2")}),
    "GPTBigCodeForCausalLM": _HfExamplesInfo(os.path.join(models_path_prefix,"bigcode/starcoder"),
                                             {"tiny": os.path.join(models_path_prefix,"bigcode/tiny_starcoder_py")}),  # noqa: E501
    "GPTJForCausalLM": _HfExamplesInfo(os.path.join(models_path_prefix,"Milos/slovak-gpt-j-405M"),
                                       {"6b": os.path.join(models_path_prefix,"EleutherAI/gpt-j-6b")}),
    "GPTNeoXForCausalLM": _HfExamplesInfo(os.path.join(models_path_prefix,"EleutherAI/pythia-70m"),
                                          {"1b": os.path.join(models_path_prefix,"EleutherAI/pythia-1.4b")}),
    "GraniteForCausalLM": _HfExamplesInfo(os.path.join(models_path_prefix,"ibm/PowerLM-3b")),
    "GraniteMoeForCausalLM": _HfExamplesInfo(os.path.join(models_path_prefix,"ibm/PowerMoE-3b")),
    "GraniteMoeHybridForCausalLM": _HfExamplesInfo(os.path.join(models_path_prefix,"ibm-granite/granite-4.0-tiny-preview")),  # noqa: E501
    "GraniteMoeSharedForCausalLM": _HfExamplesInfo(os.path.join(models_path_prefix,"ibm-research/moe-7b-1b-active-shared-experts")),  # noqa: E501
    "Grok1ModelForCausalLM": _HfExamplesInfo(os.path.join(models_path_prefix,"hpcai-tech/grok-1"),
Michael Goin's avatar
Michael Goin committed
203
                                             trust_remote_code=True),
zhuwenwen's avatar
zhuwenwen committed
204
    "HunYuanMoEV1ForCausalLM": _HfExamplesInfo(os.path.join(models_path_prefix,"tencent/Hunyuan-A13B-Instruct"),
205
                                               trust_remote_code=True),
206
    "HunYuanDenseV1ForCausalLM":_HfExamplesInfo(os.path.join(models_path_prefix, "tencent/Hunyuan-7B-Instruct-0124"),
207
                                               trust_remote_code=True),
208
    "InternLMForCausalLM": _HfExamplesInfo(os.path.join(models_path_prefix, "internlm/internlm-chat-7b"),
209
                                           trust_remote_code=True),
zhuwenwen's avatar
zhuwenwen committed
210
    "InternLM2ForCausalLM": _HfExamplesInfo(os.path.join(models_path_prefix, "internlm/internlm2-chat-7b"),
211
                                            trust_remote_code=True),
zhuwenwen's avatar
zhuwenwen committed
212
    "InternLM2VEForCausalLM": _HfExamplesInfo(os.path.join(models_path_prefix, "OpenGVLab/Mono-InternVL-2B"),
213
                                              trust_remote_code=True),
zhuwenwen's avatar
zhuwenwen committed
214
    "InternLM3ForCausalLM": _HfExamplesInfo(os.path.join(models_path_prefix, "internlm/internlm3-8b-instruct"),
215
                                            trust_remote_code=True),
zhuwenwen's avatar
zhuwenwen committed
216
217
218
219
    "JAISLMHeadModel": _HfExamplesInfo(os.path.join(models_path_prefix,"inceptionai/jais-13b-chat")),
    "JambaForCausalLM": _HfExamplesInfo(os.path.join(models_path_prefix,"ai21labs/AI21-Jamba-1.5-Mini"),
                                        extras={"tiny": os.path.join(models_path_prefix,"ai21labs/Jamba-tiny-dev")}),  # noqa: E501
    "LlamaForCausalLM": _HfExamplesInfo(os.path.join(models_path_prefix,"meta-llama/Llama-3.2-1B-Instruct"),
zhuwenwen's avatar
zhuwenwen committed
220
221
222
                                        extras={"guard": os.path.join(models_path_prefix,"meta-llama/Llama-Guard-3-1B",  # noqa: E501
                                                "hermes": os.path.join(models_path_prefix,"NousResearch/Hermes-3-Llama-3.1-8B"), # noqa: E501
                                                "fp8": os.path.join(models_path_prefix,"RedHatAI/Meta-Llama-3.1-8B-Instruct-FP8")}),  # noqa: E501
zhuwenwen's avatar
zhuwenwen committed
223
    "LLaMAForCausalLM": _HfExamplesInfo(os.path.join(models_path_prefix,"decapoda-research/llama-7b-hf"),
224
                                        is_available_online=False),
zhuwenwen's avatar
zhuwenwen committed
225
226
227
228
    "MambaForCausalLM": _HfExamplesInfo(os.path.join(models_path_prefix,"state-spaces/mamba-130m-hf")),
    "Mamba2ForCausalLM": _HfExamplesInfo(os.path.join(models_path_prefix,"mistralai/Mamba-Codestral-7B-v0.1")),
    "FalconMambaForCausalLM": _HfExamplesInfo(os.path.join(models_path_prefix,"tiiuae/falcon-mamba-7b-instruct")),  # noqa: E501
    "MiniCPMForCausalLM": _HfExamplesInfo(os.path.join(models_path_prefix,"openbmb/MiniCPM-2B-sft-bf16"),
229
                                         trust_remote_code=True),
zhuwenwen's avatar
zhuwenwen committed
230
    "MiniCPM3ForCausalLM": _HfExamplesInfo(os.path.join(models_path_prefix, "openbmb/MiniCPM3-4B"),
231
                                         trust_remote_code=True),
232
    "MiniMaxForCausalLM": _HfExamplesInfo(os.path.join(models_path_prefix, "MiniMaxAI/MiniMax-Text-01-hf"),
233
                                          min_transformers_version="4.53"),
zhuwenwen's avatar
zhuwenwen committed
234
    "MiniMaxText01ForCausalLM": _HfExamplesInfo(os.path.join(models_path_prefix, "MiniMaxAI/MiniMax-Text-01"),
235
236
                                                trust_remote_code=True,
                                                revision="a59aa9cbc53b9fb8742ca4e9e1531b9802b6fdc3"),  # noqa: E501
237
    "MiniMaxM1ForCausalLM": _HfExamplesInfo(os.path.join(models_path_prefix, "MiniMaxAI/MiniMax-M1-40k"),
238
                                            trust_remote_code=True),
zhuwenwen's avatar
zhuwenwen committed
239
240
    "MistralForCausalLM": _HfExamplesInfo(os.path.join(models_path_prefix, "mistralai/Mistral-7B-Instruct-v0.1")),
    "MixtralForCausalLM": _HfExamplesInfo(os.path.join(models_path_prefix, "mistralai/Mixtral-8x7B-Instruct-v0.1"),  # noqa: E501
zhuwenwen's avatar
zhuwenwen committed
241
                                          {"tiny": os.path.join(models_path_prefix, "TitanML/tiny-mixtral")}),  # noqa: E501
zhuwenwen's avatar
zhuwenwen committed
242
243
244
245
    "QuantMixtralForCausalLM": _HfExamplesInfo(os.path.join(models_path_prefix, "mistral-community/Mixtral-8x22B-v0.1-AWQ")),  # noqa: E501
    "MptForCausalLM": _HfExamplesInfo(os.path.join(models_path_prefix, "mpt"), is_available_online=False),
    "MPTForCausalLM": _HfExamplesInfo(os.path.join(models_path_prefix, "mosaicml/mpt-7b")),
    "NemotronForCausalLM": _HfExamplesInfo(os.path.join(models_path_prefix, "nvidia/Minitron-8B-Base")),
zhuwenwen's avatar
zhuwenwen committed
246
    "NemotronHForCausalLM": _HfExamplesInfo(os.path.join(models_path_prefix, "nvidia/Nemotron-H-8B-Base-8K"),
Luis Vega's avatar
Luis Vega committed
247
                                            trust_remote_code=True),
zhuwenwen's avatar
zhuwenwen committed
248
    "OlmoForCausalLM": _HfExamplesInfo(os.path.join(models_path_prefix, "allenai/OLMo-1B-hf")),
zhuwenwen's avatar
zhuwenwen committed
249
    "Olmo2ForCausalLM": _HfExamplesInfo(os.path.join(models_path_prefix, "allenai/OLMo-2-0425-1B")),
zhuwenwen's avatar
zhuwenwen committed
250
251
252
253
    "OlmoeForCausalLM": _HfExamplesInfo(os.path.join(models_path_prefix, "allenai/OLMoE-1B-7B-0924-Instruct")),
    "OPTForCausalLM": _HfExamplesInfo(os.path.join(models_path_prefix, "facebook/opt-125m"),
                                      {"1b": os.path.join(models_path_prefix, "facebook/opt-iml-max-1.3b")}),
    "OrionForCausalLM": _HfExamplesInfo(os.path.join(models_path_prefix, "OrionStarAI/Orion-14B-Chat"),
254
                                        trust_remote_code=True),
255
256
257
258
    "PersimmonForCausalLM": _HfExamplesInfo(os.path.join(models_path_prefix, "adept/persimmon-8b-chat")),
    "PhiForCausalLM": _HfExamplesInfo(os.path.join(models_path_prefix, "microsoft/phi-2")),
    "Phi3ForCausalLM": _HfExamplesInfo(os.path.join(models_path_prefix, "microsoft/Phi-3-mini-4k-instruct")),
    "Phi4FlashForCausalLM": _HfExamplesInfo(os.path.join(models_path_prefix, "microsoft/Phi-4-mini-flash-reasoning"), # noqa: E501
259
260
261
                                        trust_remote_code=True,
                                        v0_only=True,
                                        max_model_len=10240),
262
    "PhiMoEForCausalLM": _HfExamplesInfo(os.path.join(models_path_prefix, "microsoft/Phi-3.5-MoE-instruct"),
263
                                         trust_remote_code=True),
zhuwenwen's avatar
zhuwenwen committed
264
    "Plamo2ForCausalLM": _HfExamplesInfo(os.path.join(models_path_prefix, "pfnet/plamo-2-1b"),
Shinichi Hemmi's avatar
Shinichi Hemmi committed
265
                                        trust_remote_code=True),
zhuwenwen's avatar
zhuwenwen committed
266
    "QWenLMHeadModel": _HfExamplesInfo(os.path.join(models_path_prefix, "Qwen/Qwen-7B-Chat"),
267
                                       trust_remote_code=True),
zhuwenwen's avatar
zhuwenwen committed
268
    "Qwen2ForCausalLM": _HfExamplesInfo(os.path.join(models_path_prefix,"Qwen/Qwen2-0.5B-Instruct"),
269
                                        extras={"2.5": "Qwen/Qwen2.5-0.5B-Instruct"}), # noqa: E501
270
271
272
273
274
275
276
277
278
    "Qwen2MoeForCausalLM": _HfExamplesInfo(os.path.join(models_path_prefix, "Qwen/Qwen1.5-MoE-A2.7B-Chat")),
    "Qwen3ForCausalLM": _HfExamplesInfo(os.path.join(models_path_prefix, "Qwen/Qwen3-8B")),
    "Qwen3MoeForCausalLM": _HfExamplesInfo(os.path.join(models_path_prefix, "Qwen/Qwen3-30B-A3B")),
    "RWForCausalLM": _HfExamplesInfo(os.path.join(models_path_prefix, "tiiuae/falcon-40b")),
    "StableLMEpochForCausalLM": _HfExamplesInfo(os.path.join(models_path_prefix, "stabilityai/stablelm-zephyr-3b")),  # noqa: E501
    "StableLmForCausalLM": _HfExamplesInfo(os.path.join(models_path_prefix, "stabilityai/stablelm-3b-4e1t")),
    "Starcoder2ForCausalLM": _HfExamplesInfo(os.path.join(models_path_prefix, "bigcode/starcoder2-3b")),
    "SolarForCausalLM": _HfExamplesInfo(os.path.join(models_path_prefix, "upstage/solar-pro-preview-instruct")),
    "TeleChat2ForCausalLM": _HfExamplesInfo(os.path.join(models_path_prefix, "Tele-AI/TeleChat2-3B"),
279
                                            trust_remote_code=True),
zhuwenwen's avatar
zhuwenwen committed
280
    "TeleFLMForCausalLM": _HfExamplesInfo(os.path.join(models_path_prefix, "CofeAI/FLM-2-52B-Instruct-2407"),
281
                                            trust_remote_code=True),
zhuwenwen's avatar
zhuwenwen committed
282
    "XverseForCausalLM": _HfExamplesInfo(os.path.join(models_path_prefix, "xverse/XVERSE-7B-Chat"),
zhuwenwen's avatar
zhuwenwen committed
283
                                         tokenizer=os.path.join(models_path_prefix, "meta-llama/Llama-2-7b"),
284
                                         trust_remote_code=True),
zhuwenwen's avatar
zhuwenwen committed
285
    "Zamba2ForCausalLM": _HfExamplesInfo(os.path.join(models_path_prefix, "Zyphra/Zamba2-7B-instruct")),
286
287
288
289
    "Ernie4_5_ForCausalLM": _HfExamplesInfo(os.path.join(models_path_prefix, "baidu/ERNIE-4.5-0.3B-PT"),
                                        trust_remote_code=True),
    "Ernie4_5_MoeForCausalLM": _HfExamplesInfo(os.path.join(models_path_prefix, "baidu/ERNIE-4.5-21B-A3B-PT"),
                                        trust_remote_code=True),
zhuwenwen's avatar
zhuwenwen committed
290
    "MiMoForCausalLM": _HfExamplesInfo(os.path.join(models_path_prefix, "XiaomiMiMo/MiMo-7B-RL"),
291
                                        trust_remote_code=True),
292
293
    "Dots1ForCausalLM": _HfExamplesInfo("rednote-hilab/dots.llm1.inst",
                                        min_transformers_version="4.53"),
294
    # [Encoder-decoder]
zhuwenwen's avatar
zhuwenwen committed
295
296
    "BartModel": _HfExamplesInfo(os.path.join(models_path_prefix, "facebook/bart-base")),
    "BartForConditionalGeneration": _HfExamplesInfo(os.path.join(models_path_prefix, "facebook/bart-large-cnn")),
297
298
299
300
}

_EMBEDDING_EXAMPLE_MODELS = {
    # [Text-only]
301
302
303
304
    "BertModel": _HfExamplesInfo(os.path.join(models_path_prefix, "BAAI/bge-base-en-v1.5"), v0_only=True),
    "Gemma2Model": _HfExamplesInfo(os.path.join(models_path_prefix, "BAAI/bge-multilingual-gemma2"), v0_only=True),  # noqa: E501
    "GritLM": _HfExamplesInfo(os.path.join(models_path_prefix, "parasail-ai/GritLM-7B-vllm")),
    "GteModel": _HfExamplesInfo(os.path.join(models_path_prefix, "Snowflake/snowflake-arctic-embed-m-v2.0"),
305
                                               trust_remote_code=True),
zhuwenwen's avatar
zhuwenwen committed
306
    "GteNewModel": _HfExamplesInfo(os.path.join(models_path_prefix, "Alibaba-NLP/gte-base-en-v1.5"),
307
                                   trust_remote_code=True,
308
                                   hf_overrides={"architectures": ["GteNewModel"]}),  # noqa: E501
zhuwenwen's avatar
zhuwenwen committed
309
    "InternLM2ForRewardModel": _HfExamplesInfo(os.path.join(models_path_prefix, "internlm/internlm2-1_8b-reward"),
310
                                               trust_remote_code=True),
311
312
313
314
    "JambaForSequenceClassification": _HfExamplesInfo(os.path.join(models_path_prefix, "ai21labs/Jamba-tiny-reward-dev")),  # noqa: E501
    "LlamaModel": _HfExamplesInfo(os.path.join(models_path_prefix, "llama"), is_available_online=False),
    "MistralModel": _HfExamplesInfo(os.path.join(models_path_prefix, "intfloat/e5-mistral-7b-instruct")),
    "ModernBertModel": _HfExamplesInfo(os.path.join(models_path_prefix, "Alibaba-NLP/gte-modernbert-base"),
315
                                trust_remote_code=True, v0_only=True),
316
    "NomicBertModel": _HfExamplesInfo(os.path.join(models_path_prefix, "nomic-ai/nomic-embed-text-v2-moe"),
317
                                               trust_remote_code=True, v0_only=True),  # noqa: E501
318

zhuwenwen's avatar
zhuwenwen committed
319
320
321
322
323
324
    "Qwen2Model": _HfExamplesInfo(os.path.join(models_path_prefix,"ssmits/Qwen2-7B-Instruct-embed-base")),
    "Qwen2ForRewardModel": _HfExamplesInfo(os.path.join(models_path_prefix,"Qwen/Qwen2.5-Math-RM-72B")),
    "Qwen2ForProcessRewardModel": _HfExamplesInfo(os.path.join(models_path_prefix,"Qwen/Qwen2.5-Math-PRM-7B")),
    "RobertaModel": _HfExamplesInfo(os.path.join(models_path_prefix,"sentence-transformers/stsb-roberta-base-v2"), v0_only=True),  # noqa: E501
    "RobertaForMaskedLM": _HfExamplesInfo(os.path.join(models_path_prefix,"sentence-transformers/all-roberta-large-v1"), v0_only=True),  # noqa: E501
    "XLMRobertaModel": _HfExamplesInfo(os.path.join(models_path_prefix,"intfloat/multilingual-e5-small"), v0_only=True),  # noqa: E501
325
    # [Multimodal]
zhuwenwen's avatar
zhuwenwen committed
326
327
    "LlavaNextForConditionalGeneration": _HfExamplesInfo(os.path.join(models_path_prefix, "royokong/e5-v")),
    "Phi3VForCausalLM": _HfExamplesInfo(os.path.join(models_path_prefix, "TIGER-Lab/VLM2Vec-Full"),
328
                                         trust_remote_code=True),
zhuwenwen's avatar
zhuwenwen committed
329
    "Qwen2VLForConditionalGeneration": _HfExamplesInfo(os.path.join(models_path_prefix, "MrLight/dse-qwen2-2b-mrl-v1")), # noqa: E501
zhuwenwen's avatar
zhuwenwen committed
330
    "PrithviGeoSpatialMAE": _HfExamplesInfo(os.path.join(models_path_prefix, "ibm-nasa-geospatial/Prithvi-EO-2.0-300M-TL-Sen1Floods11"), # noqa: E501
331
                                            is_available_online=False),  # noqa: E501
332
333
}

334
335
_SEQUENCE_CLASSIFICATION_EXAMPLE_MODELS = {
    # [Decoder-only]
336
    "GPT2ForSequenceClassification": _HfExamplesInfo(os.path.join(models_path_prefix, "nie3e/sentiment-polish-gpt2-small")),  # noqa: E501
337
338

    # [Cross-encoder]
zhuwenwen's avatar
zhuwenwen committed
339
    "BertForSequenceClassification": _HfExamplesInfo(os.path.join(models_path_prefix, "cross-encoder/ms-marco-MiniLM-L-6-v2"), v0_only=True),  # noqa: E501
340
    "ModernBertForSequenceClassification": _HfExamplesInfo(os.path.join(models_path_prefix, "Alibaba-NLP/gte-reranker-modernbert-base"), v0_only=True), # noqa: E501
zhuwenwen's avatar
zhuwenwen committed
341
342
    "RobertaForSequenceClassification": _HfExamplesInfo(os.path.join(models_path_prefix, "cross-encoder/quora-roberta-base"), v0_only=True),  # noqa: E501
    "XLMRobertaForSequenceClassification": _HfExamplesInfo(os.path.join(models_path_prefix, "BAAI/bge-reranker-v2-m3"), v0_only=True),  # noqa: E501
343
344
}

345
346
_AUTOMATIC_CONVERTED_MODELS = {
    # Use as_seq_cls_model for automatic conversion
347
    "GemmaForSequenceClassification": _HfExamplesInfo(os.path.join(models_path_prefix, "BAAI/bge-reranker-v2-gemma)",  # noqa: E501
348
349
350
351
                                                      v0_only=True,
                                                      hf_overrides={"architectures": ["GemmaForSequenceClassification"], # noqa: E501
                                                                    "classifier_from_token": ["Yes"],  # noqa: E501
                                                                    "method": "no_post_processing"}),  # noqa: E501
352
353
354
    "LlamaForSequenceClassification": _HfExamplesInfo(os.path.join(models_path_prefix, "Skywork/Skywork-Reward-V2-Llama-3.2-1B")),  # noqa: E501
    "Qwen2ForSequenceClassification": _HfExamplesInfo(os.path.join(models_path_prefix, "jason9693/Qwen2.5-1.5B-apeach")),  # noqa: E501
    "Qwen3ForSequenceClassification": _HfExamplesInfo(os.path.join(models_path_prefix, "tomaarsen/Qwen3-Reranker-0.6B-seq-cls")),  # noqa: E501
355
356
}

357
358
_MULTIMODAL_EXAMPLE_MODELS = {
    # [Decoder-only]
zhuwenwen's avatar
zhuwenwen committed
359
360
361
    "AriaForConditionalGeneration": _HfExamplesInfo(os.path.join(models_path_prefix,"rhymes-ai/Aria")),
    "AyaVisionForConditionalGeneration": _HfExamplesInfo(os.path.join(models_path_prefix,"CohereForAI/aya-vision-8b")), # noqa: E501
    "Blip2ForConditionalGeneration": _HfExamplesInfo(os.path.join(models_path_prefix,"Salesforce/blip2-opt-2.7b"),  # noqa: E501
zhuwenwen's avatar
zhuwenwen committed
362
                                                     extras={"6b": os.path.join(models_path_prefix,"Salesforce/blip2-opt-6.7b")}),  # noqa: E501
zhuwenwen's avatar
zhuwenwen committed
363
364
365
    "ChameleonForConditionalGeneration": _HfExamplesInfo(os.path.join(models_path_prefix,"facebook/chameleon-7b")),  # noqa: E501
    "DeepseekVLV2ForCausalLM": _HfExamplesInfo(os.path.join(models_path_prefix,"deepseek-ai/deepseek-vl2-tiny"),  # noqa: E501
                                                extras={"fork": os.path.join(models_path_prefix,"Isotr0py/deepseek-vl2-tiny")},  # noqa: E501
366
367
                                                max_transformers_version="4.48",  # noqa: E501
                                                transformers_version_reason="HF model is not compatible.",  # noqa: E501
368
                                                hf_overrides={"architectures": ["DeepseekVLV2ForCausalLM"]}),  # noqa: E501
zhuwenwen's avatar
zhuwenwen committed
369
370
371
372
    "FuyuForCausalLM": _HfExamplesInfo(os.path.join(models_path_prefix,"adept/fuyu-8b")),
    "Gemma3ForConditionalGeneration": _HfExamplesInfo(os.path.join(models_path_prefix,"google/gemma-3-4b-it")),
    "GraniteSpeechForConditionalGeneration": _HfExamplesInfo(os.path.join(models_path_prefix,"ibm-granite/granite-speech-3.3-2b")),  # noqa: E501
    "GLM4VForCausalLM": _HfExamplesInfo(os.path.join(models_path_prefix,"THUDM/glm-4v-9b"),
373
374
                                        trust_remote_code=True,
                                        hf_overrides={"architectures": ["GLM4VForCausalLM"]}),  # noqa: E501
375
376
    "Glm4vForConditionalGeneration": _HfExamplesInfo(os.path.join(models_path_prefix, "THUDM/GLM-4.1V-9B-Thinking"), min_transformers_version="4.53"),  # noqa: E501
    "Glm4MoeForCausalLM": _HfExamplesInfo(os.path.join(models_path_prefix, "THUDM/GLM-4.5"),
zhuwenwen's avatar
zhuwenwen committed
377
378
                                          min_transformers_version="4.54",
                                          is_available_online=False),   # noqa: E501
379
380
    "H2OVLChatModel": _HfExamplesInfo(os.path.join(models_path_prefix, "h2oai/h2ovl-mississippi-800m"),
                                      extras={"2b": os.path.join(models_path_prefix, "h2oai/h2ovl-mississippi-2b")},  # noqa: E501
381
382
                                      max_transformers_version="4.48",  # noqa: E501
                                      transformers_version_reason="HF model is not compatible."),  # noqa: E501
zhuwenwen's avatar
zhuwenwen committed
383
    "InternVLChatModel": _HfExamplesInfo(os.path.join(models_path_prefix, "OpenGVLab/InternVL2-1B"),
zhuwenwen's avatar
zhuwenwen committed
384
385
                                         extras={"2B": os.path.join(models_path_prefix, "OpenGVLab/InternVL2-2B"),
                                                 "3.0": os.path.join(models_path_prefix, "OpenGVLab/InternVL3-1B")},  # noqa: E501
386
                                         trust_remote_code=True),
zhuwenwen's avatar
zhuwenwen committed
387
388
    "Idefics3ForConditionalGeneration": _HfExamplesInfo(os.path.join(models_path_prefix, "HuggingFaceM4/Idefics3-8B-Llama3"),  # noqa: E501
                                                        {"tiny": os.path.join(models_path_prefix, "HuggingFaceTB/SmolVLM-256M-Instruct")}),  # noqa: E501
389
    "KeyeForConditionalGeneration": _HfExamplesInfo(os.path.join(models_path_prefix, "Kwai-Keye/Keye-VL-8B-Preview"), # noqa: E501
390
                                                    trust_remote_code=True),
zhuwenwen's avatar
zhuwenwen committed
391
392
    "KimiVLForConditionalGeneration": _HfExamplesInfo(os.path.join(models_path_prefix, "moonshotai/Kimi-VL-A3B-Instruct"),  # noqa: E501
                                                      extras={"thinking": os.path.join(models_path_prefix, "moonshotai/Kimi-VL-A3B-Thinking")},  # noqa: E501
393
                                                      trust_remote_code=True),
394
    "Llama4ForConditionalGeneration": _HfExamplesInfo(os.path.join(models_path_prefix, "meta-llama/Llama-4-Scout-17B-16E-Instruct"),   # noqa: E501
395
                                                      max_model_len=10240),
zhuwenwen's avatar
zhuwenwen committed
396
397
398
399
400
401
402
    "LlavaForConditionalGeneration": _HfExamplesInfo(os.path.join(models_path_prefix, "llava-hf/llava-1.5-7b-hf"),
                                                     extras={"mistral": os.path.join(models_path_prefix, "mistral-community/pixtral-12b"), # noqa: E501
                                                             "mistral-fp8": os.path.join(models_path_prefix, "nm-testing/pixtral-12b-FP8-dynamic")}),  # noqa: E501
    "LlavaNextForConditionalGeneration": _HfExamplesInfo(os.path.join(models_path_prefix, "llava-hf/llava-v1.6-mistral-7b-hf")),  # noqa: E501
    "LlavaNextVideoForConditionalGeneration": _HfExamplesInfo(os.path.join(models_path_prefix, "llava-hf/LLaVA-NeXT-Video-7B-hf")),  # noqa: E501
    "LlavaOnevisionForConditionalGeneration": _HfExamplesInfo(os.path.join(models_path_prefix, "llava-hf/llava-onevision-qwen2-0.5b-ov-hf")),  # noqa: E501
    "MantisForConditionalGeneration": _HfExamplesInfo(os.path.join(models_path_prefix, "TIGER-Lab/Mantis-8B-siglip-llama3"),  # noqa: E501
403
404
                                                      max_transformers_version="4.48",  # noqa: E501
                                                      transformers_version_reason="HF model is not compatible.",  # noqa: E501
405
                                                      hf_overrides={"architectures": ["MantisForConditionalGeneration"]}),  # noqa: E501
zhuwenwen's avatar
zhuwenwen committed
406
    "MiniCPMO": _HfExamplesInfo(os.path.join(models_path_prefix, "openbmb/MiniCPM-o-2_6"),
407
                                trust_remote_code=True),
zhuwenwen's avatar
zhuwenwen committed
408
409
    "MiniCPMV": _HfExamplesInfo(os.path.join(models_path_prefix, "openbmb/MiniCPM-Llama3-V-2_5"),
                                extras={"2.6": os.path.join(models_path_prefix, "openbmb/MiniCPM-V-2_6")},  # noqa: E501
410
                                trust_remote_code=True),
zhuwenwen's avatar
zhuwenwen committed
411
    "MiniMaxVL01ForConditionalGeneration": _HfExamplesInfo(os.path.join(models_path_prefix, "MiniMaxAI/MiniMax-VL-01"), # noqa: E501
412
413
                                              trust_remote_code=True,
                                              v0_only=True),
zhuwenwen's avatar
zhuwenwen committed
414
415
416
    "Mistral3ForConditionalGeneration": _HfExamplesInfo(os.path.join(models_path_prefix, "mistralai/Mistral-Small-3.1-24B-Instruct-2503"),  # noqa: E501
                                                        extras={"fp8": os.path.join(models_path_prefix, "nm-testing/Mistral-Small-3.1-24B-Instruct-2503-FP8-dynamic")}),  # noqa: E501
    "MolmoForCausalLM": _HfExamplesInfo(os.path.join(models_path_prefix, "allenai/Molmo-7B-D-0924"),
417
                                        max_transformers_version="4.48",
418
                                        transformers_version_reason="Incorrectly-detected `tensorflow` import.",  # noqa: E501
zhuwenwen's avatar
zhuwenwen committed
419
                                        extras={"olmo": os.path.join(models_path_prefix, "allenai/Molmo-7B-O-0924")},  # noqa: E501
420
                                        trust_remote_code=True),
zhuwenwen's avatar
zhuwenwen committed
421
    "NVLM_D": _HfExamplesInfo(os.path.join(models_path_prefix, "nvidia/NVLM-D-72B"),
422
                              trust_remote_code=True),
423
424

    "Llama_Nemotron_Nano_VL" : _HfExamplesInfo(os.path.join(models_path_prefix, "nvidia/Llama-3.1-Nemotron-Nano-VL-8B-V1"), # noqa: E501
425
                                                     trust_remote_code=True),
zhuwenwen's avatar
zhuwenwen committed
426
427
    "PaliGemmaForConditionalGeneration": _HfExamplesInfo(os.path.join(models_path_prefix, "google/paligemma-3b-mix-224"),  # noqa: E501
                                                         extras={"v2": os.path.join(models_path_prefix, "google/paligemma2-3b-ft-docci-448")}),  # noqa: E501
428
    "Phi3VForCausalLM": _HfExamplesInfo(os.path.join(models_path_prefix, "microsoft/Phi-3-vision-128k-instruct",
429
                                        trust_remote_code=True,
430
431
                                        max_transformers_version="4.48",
                                        transformers_version_reason="Use of deprecated imports which have been removed.",  # noqa: E501
zhuwenwen's avatar
zhuwenwen committed
432
433
434
435
436
                              extras={"phi3.5": os.path.join(models_path_prefix,"microsoft/Phi-3.5-vision-instruct"})),  # noqa: E501
    "Ovis": _HfExamplesInfo(os.path.join(models_path_prefix,"AIDC-AI/Ovis2-1B"), trust_remote_code=True,
                            extras={"1.6-llama": os.path.join(models_path_prefix,"AIDC-AI/Ovis1.6-Llama3.2-3B"),
                                    "1.6-gemma": os.path.join(models_path_prefix,"AIDC-AI/Ovis1.6-Gemma2-9B")}),  # noqa: E501
    "Phi4MMForCausalLM": _HfExamplesInfo(os.path.join(models_path_prefix,"microsoft/Phi-4-multimodal-instruct"),
437
                                        trust_remote_code=True),
zhuwenwen's avatar
zhuwenwen committed
438
    "PixtralForConditionalGeneration": _HfExamplesInfo(os.path.join(models_path_prefix, "mistralai/Pixtral-12B-2409"),  # noqa: E501
439
                                                       tokenizer_mode="mistral"),
zhuwenwen's avatar
zhuwenwen committed
440
441
    "QwenVLForConditionalGeneration": _HfExamplesInfo(os.path.join(models_path_prefix, "Qwen/Qwen-VL"),
                                                      extras={"chat": os.path.join(models_path_prefix, "Qwen/Qwen-VL-Chat")},  # noqa: E501
442
443
                                                      trust_remote_code=True,
                                                      hf_overrides={"architectures": ["QwenVLForConditionalGeneration"]}),  # noqa: E501
zhuwenwen's avatar
zhuwenwen committed
444
445
    "Qwen2AudioForConditionalGeneration": _HfExamplesInfo(os.path.join(models_path_prefix, "Qwen/Qwen2-Audio-7B-Instruct")),  # noqa: E501
    "Qwen2VLForConditionalGeneration": _HfExamplesInfo(os.path.join(models_path_prefix, "Qwen/Qwen2-VL-2B-Instruct")),  # noqa: E501
446
    "Qwen2_5_VLForConditionalGeneration": _HfExamplesInfo(os.path.join(models_path_prefix, "Qwen/Qwen2.5-VL-3B-Instruct"), # noqa: E501
447
                                                          max_model_len=4096),
zhuwenwen's avatar
zhuwenwen committed
448
449
    "Qwen2_5OmniModel": _HfExamplesInfo(os.path.join(models_path_prefix, "Qwen/Qwen2.5-Omni-3B")),
    "Qwen2_5OmniForConditionalGeneration": _HfExamplesInfo(os.path.join(models_path_prefix, "Qwen/Qwen2.5-Omni-7B-AWQ")),  # noqa: E501
zhuwenwen's avatar
zhuwenwen committed
450
451
452
    "SkyworkR1VChatModel": _HfExamplesInfo(os.path.join(models_path_prefix, "Skywork/Skywork-R1V-38B")),
    "SmolVLMForConditionalGeneration": _HfExamplesInfo(os.path.join(models_path_prefix, "HuggingFaceTB/SmolVLM2-2.2B-Instruct")),  # noqa: E501
    "UltravoxModel": _HfExamplesInfo(os.path.join(models_path_prefix, "fixie-ai/ultravox-v0_5-llama-3_2-1b"),  # noqa: E501
453
                                     trust_remote_code=True),
汪志鹏's avatar
汪志鹏 committed
454
455
    "TarsierForConditionalGeneration": _HfExamplesInfo("omni-research/Tarsier-7b",  # noqa: E501
                                                        hf_overrides={"architectures": ["TarsierForConditionalGeneration"]}),  # noqa: E501
456
457
    "Tarsier2ForConditionalGeneration": _HfExamplesInfo("omni-research/Tarsier2-Recap-7b",  # noqa: E501
                                                        hf_overrides={"architectures": ["Tarsier2ForConditionalGeneration"]}),  # noqa: E501
458
459
460
461
462
463
    "VoxtralForConditionalGeneration": _HfExamplesInfo(
        "mistralai/Voxtral-Mini-3B-2507",
        min_transformers_version="4.54",
        # disable this temporarily until we support HF format
        is_available_online=False,
    ),
464
    # [Encoder-decoder]
465
466
    # Florence-2 uses BartFastTokenizer which can't be loaded from AutoTokenizer
    # Therefore, we borrow the BartTokenizer from the original Bart model
zhuwenwen's avatar
zhuwenwen committed
467
468
    "Florence2ForConditionalGeneration": _HfExamplesInfo(os.path.join(models_path_prefix,"microsoft/Florence-2-base"),  # noqa: E501
                                                         tokenizer=os.path.join(models_path_prefix,"Isotr0py/Florence-2-tokenizer"),  # noqa: E501
469
                                                         trust_remote_code=True),  # noqa: E501
zhuwenwen's avatar
zhuwenwen committed
470
471
    "MllamaForConditionalGeneration": _HfExamplesInfo(os.path.join(models_path_prefix, "meta-llama/Llama-3.2-11B-Vision-Instruct")),  # noqa: E501
    "WhisperForConditionalGeneration": _HfExamplesInfo(os.path.join(models_path_prefix, "openai/whisper-large-v3")),  # noqa: E501
472
    # [Cross-encoder]
473
    "JinaVLForRanking": _HfExamplesInfo(os.path.join(models_path_prefix, "jinaai/jina-reranker-m0")),   # noqa: E501
474
475
}

476

477
_SPECULATIVE_DECODING_EXAMPLE_MODELS = {
zhuwenwen's avatar
zhuwenwen committed
478
479
    "MedusaModel": _HfExamplesInfo(os.path.join(models_path_prefix, "JackFram/llama-68m"),
                                   speculative_model=os.path.join(models_path_prefix, "abhigoyal/vllm-medusa-llama-68m-random")),  # noqa: E501
480
481
482
483
    # Temporarily disabled.
    # TODO(woosuk): Re-enable this once the MLP Speculator is supported in V1.
    # "MLPSpeculatorPreTrainedModel": _HfExamplesInfo("JackFram/llama-160m",
    #                                                 speculative_model="ibm-ai-platform/llama-160m-accelerator"),  # noqa: E501
zhuwenwen's avatar
zhuwenwen committed
484
485
    "DeepSeekMTPModel": _HfExamplesInfo(os.path.join(models_path_prefix, "luccafong/deepseek_mtp_main_random"),
                                        speculative_model=os.path.join(models_path_prefix, "luccafong/deepseek_mtp_draft_random"),  # noqa: E501
486
                                        trust_remote_code=True),
zhuwenwen's avatar
zhuwenwen committed
487
    "EagleLlamaForCausalLM": _HfExamplesInfo(os.path.join(models_path_prefix, "yuhuili/EAGLE-LLaMA3-Instruct-8B"),
488
                                             trust_remote_code=True,
zhuwenwen's avatar
zhuwenwen committed
489
490
                                             speculative_model=os.path.join(models_path_prefix, "yuhuili/EAGLE-LLaMA3-Instruct-8B"),
                                             tokenizer=os.path.join(models_path_prefix, "meta-llama/Meta-Llama-3-8B-Instruct")),  # noqa: E501
491
    "Eagle3LlamaForCausalLM": _HfExamplesInfo(os.path.join(models_path_prefix, "yuhuili/EAGLE3-LLaMA3.1-Instruct-8B")),  # noqa: E501
492
                                            trust_remote_code=True,
493
494
495

                                            speculative_model=os.path.join(models_path_prefix, "yuhuili/EAGLE3-LLaMA3.1-Instruct-8B"),
                                            tokenizer=os.path.join(models_path_prefix, "meta-llama/Llama-3.1-8B-Instruct")),
zhiweiz's avatar
zhiweiz committed
496
    "EagleLlama4ForCausalLM": _HfExamplesInfo(
497
        os.path.join(models_path_prefix, "morgendave/EAGLE-Llama-4-Scout-17B-16E-Instruct"),
zhiweiz's avatar
zhiweiz committed
498
        trust_remote_code=True,
499
500
501
        speculative_model=os.path.join(models_path_prefix, "morgendave/EAGLE-Llama-4-Scout-17B-16E-Instruct"),
        tokenizer=os.path.join(models_path_prefix, "meta-llama/Llama-4-Scout-17B-16E-Instruct")),  # noqa: E501
    "EagleMiniCPMForCausalLM": _HfExamplesInfo(os.path.join(models_path_prefix, "openbmb/MiniCPM-1B-sft-bf16"),
502
503
                                            trust_remote_code=True,
                                            is_available_online=False,
504
505
506
507
                                            speculative_model=os.path.join(models_path_prefix, "openbmb/MiniCPM-2B-sft-bf16"),
                                            tokenizer=os.path.join(models_path_prefix, "openbmb/MiniCPM-2B-sft-bf16")),
    "Glm4MoeMTPModel": _HfExamplesInfo(os.path.join(models_path_prefix, "THUDM/GLM-4.5"),
                                        speculative_model=os.path.join(models_path_prefix, "THUDM/GLM-4.5"),
zhuwenwen's avatar
zhuwenwen committed
508
509
                                        min_transformers_version="4.54",
                                        is_available_online=False),
510
    "MiMoMTPModel": _HfExamplesInfo(os.path.join(models_path_prefix, "XiaomiMiMo/MiMo-7B-RL"),
511
                                    trust_remote_code=True,
zhuwenwen's avatar
zhuwenwen committed
512
                                    speculative_model=os.path.join(models_path_prefix,"XiaomiMiMo/MiMo-7B-RL"))
513
514
}

515
_TRANSFORMERS_MODELS = {
516
517
    "TransformersForCausalLM": _HfExamplesInfo(os.path.join(models_path_prefix, "hmellor/Ilama-3.2-1B"), trust_remote_code=True),  # noqa: E501
    "TransformersForMultimodalLM": _HfExamplesInfo(os.path.join(models_path_prefix, "OpenGVLab/InternVL3-1B-hf")),
518
519
}

520
521
522
_EXAMPLE_MODELS = {
    **_TEXT_GENERATION_EXAMPLE_MODELS,
    **_EMBEDDING_EXAMPLE_MODELS,
523
    **_SEQUENCE_CLASSIFICATION_EXAMPLE_MODELS,
524
525
    **_MULTIMODAL_EXAMPLE_MODELS,
    **_SPECULATIVE_DECODING_EXAMPLE_MODELS,
526
    **_TRANSFORMERS_MODELS,
527
528
529
530
531
532
533
534
535
}


class HfExampleModels:
    def __init__(self, hf_models: Mapping[str, _HfExamplesInfo]) -> None:
        super().__init__()

        self.hf_models = hf_models

536
    def get_supported_archs(self) -> Set[str]:
537
538
539
540
541
        return self.hf_models.keys()

    def get_hf_info(self, model_arch: str) -> _HfExamplesInfo:
        return self.hf_models[model_arch]

542
543
544
545
546
    def find_hf_info(self, model_id: str) -> _HfExamplesInfo:
        for info in self.hf_models.values():
            if info.default == model_id:
                return info

547
548
549
550
551
        # Fallback to extras
        for info in self.hf_models.values():
            if any(extra == model_id for extra in info.extras.values()):
                return info

552
553
        raise ValueError(f"No example model defined for {model_id}")

554

Patrick von Platen's avatar
Patrick von Platen committed
555
HF_EXAMPLE_MODELS = HfExampleModels(_EXAMPLE_MODELS)
556
AUTO_EXAMPLE_MODELS = HfExampleModels(_AUTOMATIC_CONVERTED_MODELS)