mirror of
https://github.com/vllm-project/vllm.git
synced 2026-08-13 09:18:12 +00:00
[Model] Support InternS2 Preview (#42705)
Signed-off-by: Isotr0py <[email protected]> Co-authored-by: zxy <[email protected]>
This commit is contained in:
@@ -575,6 +575,7 @@ These models primarily accept the [`LLM.generate`](./generative_models.md#llmgen
|
||||
| `IsaacForConditionalGeneration` | Isaac | T + I<sup>+</sup> | `PerceptronAI/Isaac-0.1` | ✅︎ | ✅︎ |
|
||||
| `InternS1ForConditionalGeneration` | Intern-S1 | T + I<sup>E+</sup> + V<sup>E+</sup> | `internlm/Intern-S1`, `internlm/Intern-S1-mini`, etc. | ✅︎ | ✅︎ |
|
||||
| `InternS1ProForConditionalGeneration` | Intern-S1-Pro | T + I<sup>E+</sup> + V<sup>E+</sup> | `internlm/Intern-S1-Pro`, etc. | ✅︎ | ✅︎ |
|
||||
| `InternS2PreviewForConditionalGeneration` | Intern-S2-Preview | T + I<sup>E+</sup> + V<sup>E+</sup> | `internlm/Intern-S2-Preview`, etc. | ✅︎ | ✅︎ |
|
||||
| `InternVLChatModel` | InternVL 3.5, InternVL 3.0, InternVideo 2.5, InternVL 2.5, Mono-InternVL, InternVL 2.0 | T + I<sup>E+</sup> + (V<sup>E+</sup>) | `OpenGVLab/InternVL3_5-14B`, `OpenGVLab/InternVL3-9B`, `OpenGVLab/InternVideo2_5_Chat_8B`, `OpenGVLab/InternVL2_5-4B`, `OpenGVLab/Mono-InternVL-2B`, `OpenGVLab/InternVL2-4B`, etc. | ✅︎ | ✅︎ |
|
||||
| `InternVLForConditionalGeneration` | InternVL 3.0 (HF format) | T + I<sup>E+</sup> + V<sup>E+</sup> | `OpenGVLab/InternVL3-1B-hf`, etc. | ✅︎ | ✅︎ |
|
||||
| `KananaVForConditionalGeneration` | Kanana-V | T + I<sup>+</sup> | `kakaocorp/kanana-1.5-v-3b-instruct`, etc. | | ✅︎ |
|
||||
|
||||
@@ -988,6 +988,11 @@ _MULTIMODAL_EXAMPLE_MODELS = {
|
||||
"internlm/Intern-S1-Pro",
|
||||
trust_remote_code=True,
|
||||
),
|
||||
"InternS2PreviewForConditionalGeneration": _HfExamplesInfo(
|
||||
"internlm/Intern-S2-Preview",
|
||||
trust_remote_code=True,
|
||||
is_available_online=False,
|
||||
),
|
||||
"InternVLChatModel": _HfExamplesInfo(
|
||||
"OpenGVLab/InternVL2-1B",
|
||||
extras={
|
||||
|
||||
@@ -467,6 +467,17 @@ class SpeculativeConfig:
|
||||
"architectures": ["Qwen3_5MoeMTP" if is_moe else "Qwen3_5MTP"],
|
||||
}
|
||||
)
|
||||
if hf_config.model_type == "intern_s2_preview":
|
||||
text_config = getattr(hf_config, "text_config", None)
|
||||
is_moe = getattr(text_config, "model_type", None) == "qwen3_5_moe_text"
|
||||
hf_config.model_type = "qwen3_5_mtp"
|
||||
n_predict = getattr(text_config, "mtp_num_hidden_layers", None)
|
||||
hf_config.update(
|
||||
{
|
||||
"n_predict": n_predict,
|
||||
"architectures": ["Qwen3_5MoeMTP" if is_moe else "Qwen3_5MTP"],
|
||||
}
|
||||
)
|
||||
if hf_config.model_type == "longcat_flash":
|
||||
hf_config.model_type = "longcat_flash_mtp"
|
||||
n_predict = getattr(hf_config, "num_nextn_predict_layers", 1)
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
# SPDX-FileCopyrightText: Copyright contributors to the vLLM project
|
||||
from collections.abc import Iterable
|
||||
|
||||
import torch
|
||||
from transformers import AutoProcessor
|
||||
|
||||
from vllm.multimodal import MULTIMODAL_REGISTRY
|
||||
|
||||
from .qwen3_5 import Qwen3_5MoeForConditionalGeneration
|
||||
from .qwen3_vl import (
|
||||
Qwen3VLDummyInputsBuilder,
|
||||
Qwen3VLMultiModalProcessor,
|
||||
Qwen3VLProcessingInfo,
|
||||
)
|
||||
from .utils import AutoWeightsLoader
|
||||
|
||||
|
||||
class InternS2PreviewProcessingInfo(Qwen3VLProcessingInfo):
|
||||
def get_hf_config(self):
|
||||
return self.ctx.get_hf_config()
|
||||
|
||||
def get_hf_processor(self, **kwargs: object) -> AutoProcessor:
|
||||
return self.ctx.get_hf_processor(**kwargs)
|
||||
|
||||
|
||||
@MULTIMODAL_REGISTRY.register_processor(
|
||||
Qwen3VLMultiModalProcessor,
|
||||
info=InternS2PreviewProcessingInfo,
|
||||
dummy_inputs=Qwen3VLDummyInputsBuilder,
|
||||
)
|
||||
class InternS2PreviewForConditionalGeneration(Qwen3_5MoeForConditionalGeneration):
|
||||
def load_weights(self, weights: Iterable[tuple[str, torch.Tensor]]) -> set[str]:
|
||||
loader = AutoWeightsLoader(
|
||||
self,
|
||||
skip_prefixes=["mtp.", "model.time_series.", "time_series."],
|
||||
)
|
||||
return loader.load_weights(weights, mapper=self.hf_to_vllm_mapper)
|
||||
@@ -435,6 +435,10 @@ _MULTIMODAL_MODELS = {
|
||||
"interns1_pro",
|
||||
"InternS1ProForConditionalGeneration",
|
||||
),
|
||||
"InternS2PreviewForConditionalGeneration": (
|
||||
"interns2_preview",
|
||||
"InternS2PreviewForConditionalGeneration",
|
||||
),
|
||||
"Idefics3ForConditionalGeneration": (
|
||||
"idefics3",
|
||||
"Idefics3ForConditionalGeneration",
|
||||
|
||||
@@ -1218,6 +1218,7 @@ class SpecDecodeBaseProposer:
|
||||
"Exaone4_5_ForConditionalGeneration",
|
||||
"GlmOcrForConditionalGeneration",
|
||||
"HunYuanVLForConditionalGeneration",
|
||||
"InternS2PreviewForConditionalGeneration",
|
||||
"MiMoV2OmniForCausalLM",
|
||||
"Qwen2_5_VLForConditionalGeneration",
|
||||
"Qwen3_5ForConditionalGeneration",
|
||||
|
||||
Reference in New Issue
Block a user