{"record":{"id":"d900f9d1c1173df1","repo":"sgl-project/sglang","slug":"wrong-pixel-values-size-pixel-values-shape","errorCode":null,"errorMessage":"wrong pixel_values size: {pixel_values.shape}","messagePattern":"wrong pixel_values size: (.+?)","errorType":"exception","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"python/sglang/srt/models/internvl.py","lineNumber":481,"sourceCode":"        output_hidden_states = (\n            output_hidden_states\n            if output_hidden_states is not None\n            else self.config.output_hidden_states\n        )\n        return_dict = (\n            return_dict if return_dict is not None else self.config.use_return_dict\n        )\n\n        if pixel_values is None and pixel_embeds is None:\n            raise ValueError(\"You have to specify pixel_values or pixel_embeds\")\n\n        if pixel_embeds is not None:\n            hidden_states = pixel_embeds\n        else:\n            if len(pixel_values.shape) == 4:\n                hidden_states = self.embeddings(pixel_values)\n            else:\n                raise ValueError(f\"wrong pixel_values size: {pixel_values.shape}\")\n\n        if self.use_data_parallel:\n            encoder_outputs = run_dp_sharded_vision_model(hidden_states, self.encoder)\n            last_hidden_state = encoder_outputs\n        else:\n            encoder_outputs = self.encoder(\n                inputs_embeds=hidden_states,\n                output_hidden_states=output_hidden_states,\n                return_dict=return_dict,\n            )\n            last_hidden_state = encoder_outputs.last_hidden_state\n        pooled_output = last_hidden_state[:, 0, :]\n\n        if not return_dict:\n            return (last_hidden_state, pooled_output) + encoder_outputs[1:]\n\n        if self.use_data_parallel:\n            return BaseModelOutputWithPooling(","sourceCodeStart":463,"sourceCodeEnd":499,"githubUrl":"https://github.com/sgl-project/sglang/blob/0132848349585cfe6aae51c4941cbae872505f8a/python/sglang/srt/models/internvl.py#L463-L499","documentation":"When pixel_embeds is None, pixel_values must be a 4-D batch-of-images tensor so self.embeddings can process it. Any other rank (e.g., 3-D flattened patches) is rejected.","triggerScenarios":"InternVisionModel.forward with pixel_values of shape rank != 4 — typically pre-flattened patch embeddings or a single image without a batch dim.","commonSituations":"Passing already-patchified data from a custom preprocessor, or shape drift after an image-processing pipeline change.","solutions":["Supply pixel_values as [batch, channels, height, width] (rank 4)","If data is pre-embedded, pass it via pixel_embeds instead","Unsqueeze missing batch dimension before calling forward"],"exampleFix":"# before\nmodel.vision_model(pixel_values=patches_3d)  # (C, H, W)\n\n# after\nmodel.vision_model(pixel_values=patches_3d.unsqueeze(0))  # (1, C, H, W)","handlingStrategy":"validation","validationCode":"if pixel_values is not None and pixel_values.dim() != 4:\n    pixel_values = pixel_values.unsqueeze(0)","typeGuard":"def is_batched_images(t) -> bool:\n    return t is not None and t.dim() == 4","tryCatchPattern":null,"preventionTips":["Standardize pixel_values to (B, C, H, W) before forward","Pass pre-embedded features via pixel_embeds to bypass shape checks"],"tags":["multimodal","vision","input-shape"],"backgroundTag":"invalid-input-shape","analyzedSha":"0132848349585cfe6aae51c4941cbae872505f8a","analyzedAt":"2026-08-28T05:10:05.995Z","schemaVersion":2},"datasetVersion":"2026-08-28T06:17:29.519Z"}