"vllm/vscode:/vscode.git/clone" did not exist on "6db94571d74e3dbc6e38bec7b4bd2913eea36cc9"
registry.py 41.6 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
    "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")),
zhuwenwen's avatar
zhuwenwen committed
277
278
279
    "Step3TextForCausalLM": _HfExamplesInfo(os.path.join(models_path_prefix, "stepfun-ai/step3"),
                                            trust_remote_code=True,
                                            is_available_online=False),
280
281
    "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"),
282
                                            trust_remote_code=True),
zhuwenwen's avatar
zhuwenwen committed
283
    "TeleFLMForCausalLM": _HfExamplesInfo(os.path.join(models_path_prefix, "CofeAI/FLM-2-52B-Instruct-2407"),
284
                                            trust_remote_code=True),
zhuwenwen's avatar
zhuwenwen committed
285
    "XverseForCausalLM": _HfExamplesInfo(os.path.join(models_path_prefix, "xverse/XVERSE-7B-Chat"),
zhuwenwen's avatar
zhuwenwen committed
286
                                         tokenizer=os.path.join(models_path_prefix, "meta-llama/Llama-2-7b"),
287
                                         trust_remote_code=True),
zhuwenwen's avatar
zhuwenwen committed
288
    "Zamba2ForCausalLM": _HfExamplesInfo(os.path.join(models_path_prefix, "Zyphra/Zamba2-7B-instruct")),
289
290
291
292
    "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
293
    "MiMoForCausalLM": _HfExamplesInfo(os.path.join(models_path_prefix, "XiaomiMiMo/MiMo-7B-RL"),
294
                                        trust_remote_code=True),
295
296
    "Dots1ForCausalLM": _HfExamplesInfo("rednote-hilab/dots.llm1.inst",
                                        min_transformers_version="4.53"),
297
    # [Encoder-decoder]
zhuwenwen's avatar
zhuwenwen committed
298
299
    "BartModel": _HfExamplesInfo(os.path.join(models_path_prefix, "facebook/bart-base")),
    "BartForConditionalGeneration": _HfExamplesInfo(os.path.join(models_path_prefix, "facebook/bart-large-cnn")),
300
301
302
303
}

_EMBEDDING_EXAMPLE_MODELS = {
    # [Text-only]
304
305
306
307
    "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"),
308
                                               trust_remote_code=True),
zhuwenwen's avatar
zhuwenwen committed
309
    "GteNewModel": _HfExamplesInfo(os.path.join(models_path_prefix, "Alibaba-NLP/gte-base-en-v1.5"),
310
                                   trust_remote_code=True,
311
                                   hf_overrides={"architectures": ["GteNewModel"]}),  # noqa: E501
zhuwenwen's avatar
zhuwenwen committed
312
    "InternLM2ForRewardModel": _HfExamplesInfo(os.path.join(models_path_prefix, "internlm/internlm2-1_8b-reward"),
313
                                               trust_remote_code=True),
314
315
316
317
    "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"),
318
                                trust_remote_code=True, v0_only=True),
319
    "NomicBertModel": _HfExamplesInfo(os.path.join(models_path_prefix, "nomic-ai/nomic-embed-text-v2-moe"),
320
                                               trust_remote_code=True, v0_only=True),  # noqa: E501
321

zhuwenwen's avatar
zhuwenwen committed
322
323
324
325
326
327
    "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
328
    # [Multimodal]
zhuwenwen's avatar
zhuwenwen committed
329
330
    "LlavaNextForConditionalGeneration": _HfExamplesInfo(os.path.join(models_path_prefix, "royokong/e5-v")),
    "Phi3VForCausalLM": _HfExamplesInfo(os.path.join(models_path_prefix, "TIGER-Lab/VLM2Vec-Full"),
331
                                         trust_remote_code=True),
zhuwenwen's avatar
zhuwenwen committed
332
    "Qwen2VLForConditionalGeneration": _HfExamplesInfo(os.path.join(models_path_prefix, "MrLight/dse-qwen2-2b-mrl-v1")), # noqa: E501
zhuwenwen's avatar
zhuwenwen committed
333
    "PrithviGeoSpatialMAE": _HfExamplesInfo(os.path.join(models_path_prefix, "ibm-nasa-geospatial/Prithvi-EO-2.0-300M-TL-Sen1Floods11"), # noqa: E501
334
                                            is_available_online=False),  # noqa: E501
335
336
}

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

    # [Cross-encoder]
zhuwenwen's avatar
zhuwenwen committed
342
    "BertForSequenceClassification": _HfExamplesInfo(os.path.join(models_path_prefix, "cross-encoder/ms-marco-MiniLM-L-6-v2"), v0_only=True),  # noqa: E501
343
    "ModernBertForSequenceClassification": _HfExamplesInfo(os.path.join(models_path_prefix, "Alibaba-NLP/gte-reranker-modernbert-base"), v0_only=True), # noqa: E501
zhuwenwen's avatar
zhuwenwen committed
344
345
    "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
346
347
}

348
349
_AUTOMATIC_CONVERTED_MODELS = {
    # Use as_seq_cls_model for automatic conversion
350
    "GemmaForSequenceClassification": _HfExamplesInfo(os.path.join(models_path_prefix, "BAAI/bge-reranker-v2-gemma)",  # noqa: E501
351
352
353
354
                                                      v0_only=True,
                                                      hf_overrides={"architectures": ["GemmaForSequenceClassification"], # noqa: E501
                                                                    "classifier_from_token": ["Yes"],  # noqa: E501
                                                                    "method": "no_post_processing"}),  # noqa: E501
355
356
357
    "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
358
359
}

360
361
_MULTIMODAL_EXAMPLE_MODELS = {
    # [Decoder-only]
zhuwenwen's avatar
zhuwenwen committed
362
363
364
    "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
365
                                                     extras={"6b": os.path.join(models_path_prefix,"Salesforce/blip2-opt-6.7b")}),  # noqa: E501
zhuwenwen's avatar
zhuwenwen committed
366
367
368
    "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
369
370
                                                max_transformers_version="4.48",  # noqa: E501
                                                transformers_version_reason="HF model is not compatible.",  # noqa: E501
371
                                                hf_overrides={"architectures": ["DeepseekVLV2ForCausalLM"]}),  # noqa: E501
zhuwenwen's avatar
zhuwenwen committed
372
373
374
375
    "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"),
376
377
                                        trust_remote_code=True,
                                        hf_overrides={"architectures": ["GLM4VForCausalLM"]}),  # noqa: E501
378
379
    "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
380
381
                                          min_transformers_version="4.54",
                                          is_available_online=False),   # noqa: E501
382
383
    "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
384
385
                                      max_transformers_version="4.48",  # noqa: E501
                                      transformers_version_reason="HF model is not compatible."),  # noqa: E501
zhuwenwen's avatar
zhuwenwen committed
386
    "InternVLChatModel": _HfExamplesInfo(os.path.join(models_path_prefix, "OpenGVLab/InternVL2-1B"),
zhuwenwen's avatar
zhuwenwen committed
387
388
                                         extras={"2B": os.path.join(models_path_prefix, "OpenGVLab/InternVL2-2B"),
                                                 "3.0": os.path.join(models_path_prefix, "OpenGVLab/InternVL3-1B")},  # noqa: E501
389
                                         trust_remote_code=True),
zhuwenwen's avatar
zhuwenwen committed
390
391
    "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
392
    "KeyeForConditionalGeneration": _HfExamplesInfo(os.path.join(models_path_prefix, "Kwai-Keye/Keye-VL-8B-Preview"), # noqa: E501
393
                                                    trust_remote_code=True),
zhuwenwen's avatar
zhuwenwen committed
394
395
    "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
396
                                                      trust_remote_code=True),
397
    "Llama4ForConditionalGeneration": _HfExamplesInfo(os.path.join(models_path_prefix, "meta-llama/Llama-4-Scout-17B-16E-Instruct"),   # noqa: E501
398
                                                      max_model_len=10240),
zhuwenwen's avatar
zhuwenwen committed
399
400
401
402
403
404
405
    "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
406
407
                                                      max_transformers_version="4.48",  # noqa: E501
                                                      transformers_version_reason="HF model is not compatible.",  # noqa: E501
408
                                                      hf_overrides={"architectures": ["MantisForConditionalGeneration"]}),  # noqa: E501
zhuwenwen's avatar
zhuwenwen committed
409
    "MiniCPMO": _HfExamplesInfo(os.path.join(models_path_prefix, "openbmb/MiniCPM-o-2_6"),
410
                                trust_remote_code=True),
zhuwenwen's avatar
zhuwenwen committed
411
412
    "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
413
                                trust_remote_code=True),
zhuwenwen's avatar
zhuwenwen committed
414
    "MiniMaxVL01ForConditionalGeneration": _HfExamplesInfo(os.path.join(models_path_prefix, "MiniMaxAI/MiniMax-VL-01"), # noqa: E501
415
416
                                              trust_remote_code=True,
                                              v0_only=True),
zhuwenwen's avatar
zhuwenwen committed
417
418
419
    "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"),
420
                                        max_transformers_version="4.48",
421
                                        transformers_version_reason="Incorrectly-detected `tensorflow` import.",  # noqa: E501
zhuwenwen's avatar
zhuwenwen committed
422
                                        extras={"olmo": os.path.join(models_path_prefix, "allenai/Molmo-7B-O-0924")},  # noqa: E501
423
                                        trust_remote_code=True),
zhuwenwen's avatar
zhuwenwen committed
424
    "NVLM_D": _HfExamplesInfo(os.path.join(models_path_prefix, "nvidia/NVLM-D-72B"),
425
                              trust_remote_code=True),
426
427

    "Llama_Nemotron_Nano_VL" : _HfExamplesInfo(os.path.join(models_path_prefix, "nvidia/Llama-3.1-Nemotron-Nano-VL-8B-V1"), # noqa: E501
428
                                                     trust_remote_code=True),
zhuwenwen's avatar
zhuwenwen committed
429
430
    "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
431
    "Phi3VForCausalLM": _HfExamplesInfo(os.path.join(models_path_prefix, "microsoft/Phi-3-vision-128k-instruct",
432
                                        trust_remote_code=True,
433
434
                                        max_transformers_version="4.48",
                                        transformers_version_reason="Use of deprecated imports which have been removed.",  # noqa: E501
zhuwenwen's avatar
zhuwenwen committed
435
436
437
438
439
                              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"),
440
                                        trust_remote_code=True),
zhuwenwen's avatar
zhuwenwen committed
441
    "PixtralForConditionalGeneration": _HfExamplesInfo(os.path.join(models_path_prefix, "mistralai/Pixtral-12B-2409"),  # noqa: E501
442
                                                       tokenizer_mode="mistral"),
zhuwenwen's avatar
zhuwenwen committed
443
444
    "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
445
446
                                                      trust_remote_code=True,
                                                      hf_overrides={"architectures": ["QwenVLForConditionalGeneration"]}),  # noqa: E501
zhuwenwen's avatar
zhuwenwen committed
447
448
    "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
449
    "Qwen2_5_VLForConditionalGeneration": _HfExamplesInfo(os.path.join(models_path_prefix, "Qwen/Qwen2.5-VL-3B-Instruct"), # noqa: E501
450
                                                          max_model_len=4096),
zhuwenwen's avatar
zhuwenwen committed
451
452
    "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
453
454
    "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
zhuwenwen's avatar
zhuwenwen committed
455
456
457
    "Step3VLForConditionalGeneration": _HfExamplesInfo(os.path.join(models_path_prefix, "stepfun-ai/step3"),
                                                        trust_remote_code=True,
                                                        is_available_online=False),
zhuwenwen's avatar
zhuwenwen committed
458
    "UltravoxModel": _HfExamplesInfo(os.path.join(models_path_prefix, "fixie-ai/ultravox-v0_5-llama-3_2-1b"),  # noqa: E501
459
                                     trust_remote_code=True),
汪志鹏's avatar
汪志鹏 committed
460
461
    "TarsierForConditionalGeneration": _HfExamplesInfo("omni-research/Tarsier-7b",  # noqa: E501
                                                        hf_overrides={"architectures": ["TarsierForConditionalGeneration"]}),  # noqa: E501
462
463
    "Tarsier2ForConditionalGeneration": _HfExamplesInfo("omni-research/Tarsier2-Recap-7b",  # noqa: E501
                                                        hf_overrides={"architectures": ["Tarsier2ForConditionalGeneration"]}),  # noqa: E501
464
465
466
467
468
469
    "VoxtralForConditionalGeneration": _HfExamplesInfo(
        "mistralai/Voxtral-Mini-3B-2507",
        min_transformers_version="4.54",
        # disable this temporarily until we support HF format
        is_available_online=False,
    ),
470
    # [Encoder-decoder]
471
472
    # 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
473
474
    "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
475
                                                         trust_remote_code=True),  # noqa: E501
zhuwenwen's avatar
zhuwenwen committed
476
477
    "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
478
    # [Cross-encoder]
479
    "JinaVLForRanking": _HfExamplesInfo(os.path.join(models_path_prefix, "jinaai/jina-reranker-m0")),   # noqa: E501
480
481
}

482

483
_SPECULATIVE_DECODING_EXAMPLE_MODELS = {
zhuwenwen's avatar
zhuwenwen committed
484
485
    "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
486
487
488
489
    # 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
490
491
    "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
492
                                        trust_remote_code=True),
zhuwenwen's avatar
zhuwenwen committed
493
    "EagleLlamaForCausalLM": _HfExamplesInfo(os.path.join(models_path_prefix, "yuhuili/EAGLE-LLaMA3-Instruct-8B"),
494
                                             trust_remote_code=True,
zhuwenwen's avatar
zhuwenwen committed
495
496
                                             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
497
    "Eagle3LlamaForCausalLM": _HfExamplesInfo(os.path.join(models_path_prefix, "yuhuili/EAGLE3-LLaMA3.1-Instruct-8B")),  # noqa: E501
498
                                            trust_remote_code=True,
499
500
501

                                            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
502
    "EagleLlama4ForCausalLM": _HfExamplesInfo(
503
        os.path.join(models_path_prefix, "morgendave/EAGLE-Llama-4-Scout-17B-16E-Instruct"),
zhiweiz's avatar
zhiweiz committed
504
        trust_remote_code=True,
505
506
507
        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"),
508
509
                                            trust_remote_code=True,
                                            is_available_online=False,
510
511
512
513
                                            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
514
515
                                        min_transformers_version="4.54",
                                        is_available_online=False),
516
    "MiMoMTPModel": _HfExamplesInfo(os.path.join(models_path_prefix, "XiaomiMiMo/MiMo-7B-RL"),
517
                                    trust_remote_code=True,
zhuwenwen's avatar
zhuwenwen committed
518
                                    speculative_model=os.path.join(models_path_prefix,"XiaomiMiMo/MiMo-7B-RL"))
519
520
}

521
_TRANSFORMERS_MODELS = {
522
523
    "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")),
524
525
}

526
527
528
_EXAMPLE_MODELS = {
    **_TEXT_GENERATION_EXAMPLE_MODELS,
    **_EMBEDDING_EXAMPLE_MODELS,
529
    **_SEQUENCE_CLASSIFICATION_EXAMPLE_MODELS,
530
531
    **_MULTIMODAL_EXAMPLE_MODELS,
    **_SPECULATIVE_DECODING_EXAMPLE_MODELS,
532
    **_TRANSFORMERS_MODELS,
533
534
535
536
537
538
539
540
541
}


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

        self.hf_models = hf_models

542
    def get_supported_archs(self) -> Set[str]:
543
544
545
546
547
        return self.hf_models.keys()

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

548
549
550
551
552
    def find_hf_info(self, model_id: str) -> _HfExamplesInfo:
        for info in self.hf_models.values():
            if info.default == model_id:
                return info

553
554
555
556
557
        # Fallback to extras
        for info in self.hf_models.values():
            if any(extra == model_id for extra in info.extras.values()):
                return info

558
559
        raise ValueError(f"No example model defined for {model_id}")

560

Patrick von Platen's avatar
Patrick von Platen committed
561
HF_EXAMPLE_MODELS = HfExampleModels(_EXAMPLE_MODELS)
562
AUTO_EXAMPLE_MODELS = HfExampleModels(_AUTOMATIC_CONVERTED_MODELS)