[Model] Add support for moonshotai/Kimi-Audio-7B-Instruct (#36127)
Signed-off-by: tunglinwood <tunglinwood@gmail.com> Signed-off-by: tunglinwood <tomwu.tunglin@gmail.com> Signed-off-by: tunglinwood <113751333+tunglinwood@users.noreply.github.com>
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
# SPDX-FileCopyrightText: Copyright contributors to the vLLM project
|
||||
from typing import Any, cast
|
||||
|
||||
from vllm.config import VllmConfig
|
||||
from vllm.tokenizers.kimi_audio import KimiAudioTokenizer
|
||||
from vllm.tokenizers.registry import get_tokenizer
|
||||
|
||||
from .hf import HfRenderer, HfTokenizer
|
||||
|
||||
|
||||
class KimiAudioRenderer(HfRenderer):
|
||||
"""Renderer for Kimi-Audio models.
|
||||
|
||||
This renderer uses HfRenderer internally with a custom TikToken tokenizer.
|
||||
"""
|
||||
|
||||
@classmethod
|
||||
def from_config( # type: ignore[override]
|
||||
cls,
|
||||
config: VllmConfig,
|
||||
tokenizer_kwargs: dict[str, Any],
|
||||
) -> "HfRenderer":
|
||||
"""Create an HfRenderer instance for Kimi-Audio models."""
|
||||
model_config = config.model_config
|
||||
if model_config.skip_tokenizer_init:
|
||||
tokenizer = None
|
||||
else:
|
||||
# Extract tokenizer_name from kwargs (already processed by
|
||||
# tokenizer_args_from_config for ModelScope/GGUF/etc)
|
||||
tokenizer_name = tokenizer_kwargs.pop(
|
||||
"tokenizer_name", model_config.tokenizer
|
||||
)
|
||||
# Remove tokenizer_cls from kwargs to avoid duplicate argument
|
||||
tokenizer_kwargs = {
|
||||
k: v for k, v in tokenizer_kwargs.items() if k != "tokenizer_cls"
|
||||
}
|
||||
# Use get_tokenizer directly instead of cached_get_tokenizer
|
||||
# (KimiAudioTokenizer doesn't work with get_cached_tokenizer)
|
||||
tokenizer = cast(
|
||||
HfTokenizer,
|
||||
get_tokenizer(
|
||||
tokenizer_name,
|
||||
tokenizer_cls=KimiAudioTokenizer, # type: ignore[arg-type]
|
||||
**tokenizer_kwargs,
|
||||
),
|
||||
)
|
||||
|
||||
return HfRenderer(config, tokenizer)
|
||||
@@ -19,6 +19,7 @@ _VLLM_RENDERERS = {
|
||||
"deepseek_v32": ("deepseek_v32", "DeepseekV32Renderer"),
|
||||
"hf": ("hf", "HfRenderer"),
|
||||
"grok2": ("grok2", "Grok2Renderer"),
|
||||
"kimi_audio": ("kimi_audio", "KimiAudioRenderer"),
|
||||
"mistral": ("mistral", "MistralRenderer"),
|
||||
"qwen_vl": ("qwen_vl", "QwenVLRenderer"),
|
||||
"terratorch": ("terratorch", "TerratorchRenderer"),
|
||||
@@ -74,10 +75,18 @@ RENDERER_REGISTRY = RendererRegistry(
|
||||
|
||||
def renderer_from_config(config: "VllmConfig", **kwargs):
|
||||
model_config = config.model_config
|
||||
|
||||
tokenizer_mode, tokenizer_name, args, kwargs = tokenizer_args_from_config(
|
||||
model_config, **kwargs
|
||||
)
|
||||
|
||||
# Override tokenizer_mode for Kimi-Audio models
|
||||
if model_config.architecture == "MoonshotKimiaForCausalLM":
|
||||
tokenizer_mode = "kimi_audio"
|
||||
# Update model_config so other components (e.g., multimodal registry)
|
||||
# also use the correct tokenizer mode
|
||||
model_config.tokenizer_mode = "kimi_audio"
|
||||
|
||||
if (
|
||||
model_config.tokenizer_mode == "auto"
|
||||
and model_config.model_impl == "terratorch"
|
||||
|
||||
Reference in New Issue
Block a user