sgl-project/sglang · error · ValueError
Unsupported dots note omni video_config fields: {sorted fiel
Error message
Unsupported dots note omni video_config fields: {sorted fields joined by ', '} What it means
Raised by process_mm_data_async when, after popping the known keys (_question, seq, audio_cap, audio_sr, k_mode), video_config still contains entries. Only those whitelisted fields are supported.
Source
Thrown at python/sglang/srt/multimodal/processors/dots_note_omni.py:411
request_images = len(image_data) if image_data else 0
request_audios = len(audio_data) if audio_data else 0
logger.info(
"[dots_mm] rid=%s request videos=%d images=%d audios=%d",
request_obj.rid,
request_videos,
request_images,
request_audios,
)
if video_data:
video_config = dict(request_obj.video_config or {})
question = video_config.pop("_question", "") or ""
seq = video_config.pop("seq", 131072)
audio_cap = video_config.pop("audio_cap", 1.0)
audio_sr = video_config.pop("audio_sr", 16000)
k_mode = video_config.pop("k_mode", "eval_ek")
if video_config:
raise ValueError(
"Unsupported dots note omni video_config fields: "
+ ", ".join(sorted(video_config))
)
sampling_params = request_obj.sampling_params or {}
if not isinstance(sampling_params, dict):
raise ValueError(
"Dots note omni video preprocessing requires one request's "
"sampling_params as a dictionary."
)
max_new_tokens = sampling_params.get("max_new_tokens") or 0
loop = asyncio.get_running_loop()
preprocess_started = time.perf_counter()
video_media = {}
total_content_items = 0
total_frames = 0
total_audio_segments = 0
for video_index, video in enumerate(video_data):
content = await loop.run_in_executor(View on GitHub (pinned to 0132848349)
Solutions
- Remove unsupported keys; keep only seq, audio_cap, audio_sr, k_mode (and internal _question)
- Check the error message — it lists the exact offending field names
- Fix typos: audio_sr not audio_sample_rate, audio_cap not audio_ratio
Example fix
// before
video_config = {"seq": 131072, "fps": 2, "max_pixels": 224*224}
// after
video_config = {"seq": 131072} Defensive patterns
Strategy: validation
Validate before calling
ALLOWED = {'seq', 'audio_cap', 'audio_sr', 'k_mode', '_question'}
extra = set(video_config) - ALLOWED
assert not extra, f'unsupported video_config fields: {sorted(extra)}' Type guard
def valid_video_config(cfg: dict) -> bool:
return set(cfg) <= {'seq', 'audio_cap', 'audio_sr', 'k_mode', '_question'} Prevention
- Consult the model's docs for supported video_config keys
- Don't copy video_config from other model families
When it happens
Trigger: Passing video_config with extra keys such as {"fps": 2, "max_pixels": ...} — anything beyond seq/audio_cap/audio_sr/k_mode/_question triggers the error listing the offending sorted field names.
Common situations: Copy-pasting a video_config from another model's docs (Qwen-VL style fps/max_bytes etc.) into a Dots Note Omni request; or typos like 'audio_sample_rate' instead of 'audio_sr'.
Related errors
- seq must be positive, got {seq}
- max_new_tokens must be non-negative, got {max_new_tokens}
- max_new_tokens must leave room for input: max_new_tokens={ma
- audio_cap must be non-negative, got {audio_cap}
- audio_sr must be positive, got {audio_sr}
AI-assisted analysis of sgl-project/sglang@0132848349 (2026-08-28).
Data as JSON: /api/errors/4730dc8b0badc2df.
Report an issue: GitHub.