vllm.model_executor.models.kimi_k25_vit ¶
Vision tower implementation for Kimi-K2.5 model.
This module provides the vision encoder components for Kimi-K2.5, including 3D patch embedding, RoPE position embedding, and temporal pooling for video chunks.
KimiK25MultiModalProjector ¶
Bases: Module
Multi-modal projector with patch merging for Kimi-K2.5.
Source code in vllm/model_executor/models/kimi_k25_vit.py
linear_1 instance-attribute ¶
linear_1 = ReplicatedLinear(
hidden_size,
hidden_size,
bias=True,
prefix=f"{prefix}.linear_1",
)
linear_2 instance-attribute ¶
linear_2 = ReplicatedLinear(
hidden_size,
mm_hidden_size,
bias=True,
prefix=f"{prefix}.linear_2",
)
__init__ ¶
__init__(
config: KimiK25VisionConfig,
use_data_parallel: bool = False,
prefix: str = "",
)
Source code in vllm/model_executor/models/kimi_k25_vit.py
forward ¶
Source code in vllm/model_executor/models/kimi_k25_vit.py
Learnable2DInterpPosEmbDivided_fixed ¶
Bases: Module
2D learnable position embedding with temporal extension.
Source code in vllm/model_executor/models/kimi_k25_vit.py
__init__ ¶
__init__(
height: int,
width: int,
num_frames: int,
dim: int,
interpolation_mode: str = "bicubic",
) -> None
Source code in vllm/model_executor/models/kimi_k25_vit.py
forward ¶
Source code in vllm/model_executor/models/kimi_k25_vit.py
MLP2 ¶
Bases: Module
Two-layer MLP with tensor parallel support.
Source code in vllm/model_executor/models/kimi_k25_vit.py
fc0 instance-attribute ¶
fc0 = ColumnParallelLinear(
dims[0],
dims[1],
bias=bias,
prefix=maybe_prefix(prefix, "fc0"),
disable_tp=use_data_parallel,
)
fc1 instance-attribute ¶
fc1 = RowParallelLinear(
dims[1],
dims[2],
bias=bias,
prefix=maybe_prefix(prefix, "fc1"),
disable_tp=use_data_parallel,
)
__init__ ¶
__init__(
dims: list[int],
activation,
bias: bool = True,
prefix: str = "",
use_data_parallel: bool = False,
)
Source code in vllm/model_executor/models/kimi_k25_vit.py
MoonViT3dEncoder ¶
Bases: Module
Full encoder stack for MoonViT 3D.
Source code in vllm/model_executor/models/kimi_k25_vit.py
blocks instance-attribute ¶
blocks = ModuleList(
[
(
MoonViTEncoderLayer(
**block_cfg,
prefix=f"{prefix}.blocks.{layer_idx}",
)
)
for layer_idx in (range(num_layers))
]
)
rope_2d instance-attribute ¶
rope_2d = Rope2DPosEmbRepeated(
block_cfg["hidden_dim"] // block_cfg["num_heads"],
512,
512,
)
__init__ ¶
__init__(
hidden_dim: int,
num_layers: int,
block_cfg: dict,
video_attn_type: str = "spatial_temporal",
prefix: str = "",
) -> None
Source code in vllm/model_executor/models/kimi_k25_vit.py
forward ¶
Source code in vllm/model_executor/models/kimi_k25_vit.py
MoonViT3dPretrainedModel ¶
Bases: Module
Main vision tower model.
Uses KimiK25VisionConfig directly from transformers_utils/configs/kimi_k25.py.
Source code in vllm/model_executor/models/kimi_k25_vit.py
encoder instance-attribute ¶
encoder = MoonViT3dEncoder(
hidden_dim=hidden_size,
num_layers=num_hidden_layers,
block_cfg={
"num_heads": num_attention_heads,
"hidden_dim": hidden_size,
"mlp_dim": intermediate_size,
"activation": get_act_fn("gelu_pytorch_tanh"),
"attn_bias": True,
},
video_attn_type=video_attn_type,
prefix=maybe_prefix(prefix, "encoder"),
)
patch_embed instance-attribute ¶
patch_embed = MoonVision3dPatchEmbed(
out_dim=hidden_size,
patch_size=patch_size,
pos_emb_height=init_pos_emb_height,
pos_emb_width=init_pos_emb_width,
pos_emb_time=init_pos_emb_time,
pos_emb_type=pos_emb_type,
)
__init__ ¶
__init__(config: KimiK25VisionConfig, prefix: str = '')
Source code in vllm/model_executor/models/kimi_k25_vit.py
forward ¶
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
pixel_values | Tensor | The input pixel values. | required |
grid_thws | Tensor | Temporal, height and width. | required |
Returns:
| Type | Description |
|---|---|
Tensor | torch.Tensor: The output tokens. |
Source code in vllm/model_executor/models/kimi_k25_vit.py
MoonViTEncoderLayer ¶
Bases: Module
Single encoder layer for MoonViT with TP/DP support.
Source code in vllm/model_executor/models/kimi_k25_vit.py
336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 | |
attn instance-attribute ¶
attn = MMEncoderAttention(
num_heads=num_attention_heads_per_partition,
head_size=hidden_size_per_attention_head,
scale=hidden_size_per_attention_head**-0.5,
prefix=f"{prefix}.attn",
)
hidden_size_per_attention_head instance-attribute ¶
mlp instance-attribute ¶
mlp = MLP2(
[hidden_dim, mlp_dim, hidden_dim],
activation,
prefix=f"{prefix}.mlp",
use_data_parallel=use_data_parallel,
)
num_attention_heads_per_partition instance-attribute ¶
num_attention_heads_per_partition = divide(
num_heads, tp_size
)
tp_size instance-attribute ¶
tp_size = (
1
if use_data_parallel
else get_tensor_model_parallel_world_size()
)
wo instance-attribute ¶
wo = RowParallelLinear(
hidden_dim,
hidden_dim,
bias=attn_bias,
prefix=f"{prefix}.wo",
disable_tp=use_data_parallel,
)
wqkv instance-attribute ¶
wqkv = QKVParallelLinear(
hidden_size=hidden_dim,
head_size=hidden_size_per_attention_head,
total_num_heads=num_heads,
total_num_kv_heads=num_heads,
bias=attn_bias,
prefix=f"{prefix}.wqkv",
disable_tp=use_data_parallel,
)
__init__ ¶
__init__(
num_heads: int,
hidden_dim: int,
mlp_dim: int,
prefix: str = "",
*,
activation=gelu,
attn_bias: bool = False,
)
Source code in vllm/model_executor/models/kimi_k25_vit.py
attention_qkvpacked ¶
Compute self-attention with packed QKV.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
x | Tensor | (seqlen, hidden_dim) | required |
cu_seqlens | Tensor | cumulative sequence lengths | required |
Source code in vllm/model_executor/models/kimi_k25_vit.py
forward ¶
Source code in vllm/model_executor/models/kimi_k25_vit.py
MoonVision3dPatchEmbed ¶
Bases: Module
3D patch embedding for vision tower.
Source code in vllm/model_executor/models/kimi_k25_vit.py
pos_emb instance-attribute ¶
pos_emb = Learnable2DInterpPosEmbDivided_fixed(
height=pos_emb_height,
width=pos_emb_width,
num_frames=pos_emb_time,
dim=out_dim,
)
proj instance-attribute ¶
proj = Conv2d(
in_dim,
out_dim,
kernel_size=patch_size,
stride=patch_size,
)
__init__ ¶
__init__(
out_dim: int,
in_dim: int = 3,
patch_size: int | tuple[int, int] = (14, 14),
pos_emb_height: int = 14,
pos_emb_width: int = 14,
pos_emb_time: int = 4,
pos_emb_type: str = "divided_fixed",
)
Source code in vllm/model_executor/models/kimi_k25_vit.py
forward ¶
Rope2DPosEmbRepeated ¶
Bases: Module
2D rotary position embedding with multi-resolution support.
Source code in vllm/model_executor/models/kimi_k25_vit.py
__init__ ¶
Source code in vllm/model_executor/models/kimi_k25_vit.py
_precompute_freqs_cis ¶
Calculate the cis(freqs) for each position in the 2D grid.
Source code in vllm/model_executor/models/kimi_k25_vit.py
extra_repr ¶
get_freqs_cis ¶
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
grid_thws | Tensor | grid time, height and width | required |
Returns:
| Name | Type | Description |
|---|---|---|
freqs_cis | Tensor | tensor of shape (sum(t * height * width), dim//2) |
Source code in vllm/model_executor/models/kimi_k25_vit.py
_apply_rope_input_validation ¶
Source code in vllm/model_executor/models/kimi_k25_vit.py
apply_rope ¶
(The leading dimensions of all inputs should be the same)
| Name | Type | Description | Default |
|---|---|---|---|
xq | Tensor | query, tensor of shape (..., num_heads, head_dim) | required |
xk | Tensor | key, tensor of shape (..., num_heads, head_dim) | required |
freqs_cis | Tensor | tensor of shape (..., head_dim/2), dtype=torch.complex64. | required |
Returns: xq_out, xk_out: tensors of shape (..., num_heads, head_dim)
Source code in vllm/model_executor/models/kimi_k25_vit.py
get_1d_sincos_pos_embed ¶
Generate 1D sincos positional embedding.
Source code in vllm/model_executor/models/kimi_k25_vit.py
get_1d_sincos_pos_embed_from_grid ¶
Generate 1D sincos positional embedding from grid positions.
Source code in vllm/model_executor/models/kimi_k25_vit.py
get_rope_shape ¶
Source code in vllm/model_executor/models/kimi_k25_vit.py
get_rope_shape_decorate ¶
Source code in vllm/model_executor/models/kimi_k25_vit.py
mm_projector_forward ¶
Apply MM projector to vision tower outputs.
Source code in vllm/model_executor/models/kimi_k25_vit.py
tpool_patch_merger ¶
tpool_patch_merger(
x: Tensor,
grid_thws: Tensor,
merge_kernel_size: tuple[int, int] = (2, 2),
) -> list[Tensor]
Temporal pooling patch merger.
Source code in vllm/model_executor/models/kimi_k25_vit.py
vision_tower_forward ¶
vision_tower_forward(
vision_tower: Any,
pixel_values: Tensor,
grid_thw: Tensor,
mm_projector: Any,
use_data_parallel: bool,
) -> list[Tensor]
DP-sharded vision tower forward with mrope.
Uses vLLM's standard data parallelism utility to shard the batch across available GPUs, enabling parallel processing of vision features.