sgl-project/sglang · error · NotImplementedError

Not support merge_type: {self.merge_type}

Error message

Not support merge_type: {self.merge_type}

What it means

The Kimi-K3 vision pixel-shuffle merger (kimi_k3_vl.py:741) only implements merge_type "sd2_tpool" (stable-diffusion-2-style temporal pooling). Any other merge_type in the vision config raises NotImplementedError at construction. The merger layout is hard-wired around that kernel size / temporal-pool scheme.

Source

Thrown at python/sglang/srt/models/kimi_k3_vl.py:741

                rope_freqs_cis,
                attention,
                forward_metadata.use_fused_rope,
                forward_metadata.selected_attention_backend,
            )

        return self.final_layernorm(hidden_states)


class KimiK3VisionTower(nn.Module):
    def __init__(self, vision_config, **kwargs):
        super().__init__()
        config = vision_config
        self.config = config
        self.merge_kernel_size = tuple(config.merge_kernel_size)
        self.patch_size = config.patch_size
        self.merge_type = config.merge_type
        if self.merge_type != "sd2_tpool":
            raise NotImplementedError(f"Not support merge_type: {self.merge_type}")

        hidden_size = getattr(config, "vt_hidden_size", None) or config.hidden_size
        num_heads = (
            getattr(config, "vt_num_attention_heads", None)
            or config.num_attention_heads
        )
        num_layers = (
            getattr(config, "vt_num_hidden_layers", None) or config.num_hidden_layers
        )
        intermediate_size = (
            getattr(config, "vt_intermediate_size", None) or config.intermediate_size
        )

        self.patch_embed = MoonVision3dPatchEmbed(
            out_dim=hidden_size,
            patch_size=config.patch_size,
            pos_emb_height=config.init_pos_emb_height,
            pos_emb_width=config.init_pos_emb_width,

View on GitHub (pinned to 0132848349)

Solutions

  1. Verify vision_config.merge_type matches the official Kimi-K3 weights (sd2_tpool)
  2. Use the config shipped with the checkpoint revision this code supports
  3. If a new merge type is required, port the corresponding merger from upstream transformers Kimi code before this check
Defensive patterns

Strategy: validation

Validate before calling

assert cfg.vision_config.merge_type == "sd2_tpool"

Prevention

When it happens

Trigger: Loading a Kimi-K3 checkpoint whose vision_config.merge_type differs from "sd2_tpool" (e.g. a video variant using "spatial_temporal" or "plain").

Common situations: New model revisions that change the patch-merge scheme; community finetunes with modified vision towers; mismatched config.json pulled from a different model.

Related errors


AI-assisted analysis of sgl-project/sglang@0132848349 (2026-08-28). Data as JSON: /api/errors/6a2206fefc83fb1a. Report an issue: GitHub.