sgl-project/sglang · error · ValueError
Invalid padding param: {padding}!
Error message
Invalid padding param: {padding}! What it means
When padding is explicitly provided to CausalConv1D it must be either an int or a 2-element list whose entries sum to kernel_size - 1 (fully causal asymmetric padding). Anything else — wrong length, tuple instead of list, or sum mismatch — raises this ValueError.
Source
Thrown at python/sglang/srt/models/phi4mm_utils.py:951
self.cache_drop_size = None
if padding is None:
self._left_padding = kernel_size - 1
self._right_padding = stride - 1
else:
if stride != 1 and padding != kernel_size - 1:
raise ValueError("No striding allowed for non-symmetric convolutions!")
if isinstance(padding, int):
self._left_padding = padding
self._right_padding = padding
elif (
isinstance(padding, list)
and len(padding) == 2
and padding[0] + padding[1] == kernel_size - 1
):
self._left_padding = padding[0]
self._right_padding = padding[1]
else:
raise ValueError(f"Invalid padding param: {padding}!")
self._max_cache_len = self._left_padding
super().__init__(
in_channels=in_channels,
out_channels=out_channels,
kernel_size=kernel_size,
stride=stride,
padding=0,
dilation=dilation,
groups=groups,
bias=bias,
padding_mode=padding_mode,
device=device,
dtype=dtype,
)
def update_cache(self, x, cache=None):View on GitHub (pinned to 0132848349)
Solutions
- Use padding=None for automatic causal padding
- Pass an int equal to kernel_size - 1
- Pass a 2-element list [left, right] with left + right == kernel_size - 1
Example fix
# before CausalConv1D(..., kernel_size=5, padding=(2, 2)) # tuple + sum 4 != kernel-1 # after CausalConv1D(..., kernel_size=5, padding=[4, 0])
Defensive patterns
Strategy: type-guard
Validate before calling
ok = padding is None or isinstance(padding, int) or (
isinstance(padding, list) and len(padding) == 2 and sum(padding) == kernel_size - 1
)
assert ok, f"invalid padding {padding!r} for kernel_size={kernel_size}" Type guard
def is_valid_causal_padding(kernel_size: int, padding) -> bool:
if padding is None or isinstance(padding, int):
return True
return (
isinstance(padding, list)
and len(padding) == 2
and padding[0] + padding[1] == kernel_size - 1
) Prevention
- Use lists, not tuples, for asymmetric padding
- Always verify left+right == kernel_size - 1
When it happens
Trigger: Passing padding as a tuple, a list of length != 2, or a list [p0, p1] with p0+p1 != kernel_size-1.
Common situations: Porting padding specs from PyTorch Conv1d (which accepts tuples); assuming 'same'-style padding; arithmetic mistakes computing asymmetric padding.
Related errors
- No striding allowed for non-symmetric convolutions!
- num_token_non_padded must be a torch.Tensor
- actions must be a list[list[str]]
- rollout_noise_level must be a number, got {noise!r}
- Z-Image caption tensor must have rank 2 or 3
AI-assisted analysis of sgl-project/sglang@0132848349 (2026-08-28).
Data as JSON: /api/errors/2bc849a0bb07a270.
Report an issue: GitHub.