sgl-project/sglang · error · ValueError

unknown weight reader {requested!r}; available: {available_r

Error message

unknown weight reader {requested!r}; available: {available_reader_names()}

What it means

select_weight_reader validates its requested argument against the registry of available reader backends. A name that matches no registered reader is rejected rather than silently falling back, so the caller knows their explicit choice was not honored.

Source

Thrown at python/sglang/multimodal_gen/runtime/loader/weight_readers/__init__.py:42

    return [b.name for b in _READERS if b.is_available()]


def select_weight_reader(
    *,
    requested: str | None = None,
    needs_key_filter: bool = False,
) -> WeightReader:
    """Pick a reader, honouring an explicit request where it can be honoured.

    `requested` names a reader; None means take the environment's preference.
    A reader that cannot skip keys is passed over when the caller needs to,
    because reading the whole checkpoint to discard most of it is worse than
    reading the part that was asked for more slowly.
    """
    if requested is not None:
        chosen = next((b for b in _READERS if b.name == requested), None)
        if chosen is None:
            raise ValueError(
                f"unknown weight reader {requested!r}; "
                f"available: {available_reader_names()}"
            )
    elif envs.SGLANG_USE_RUNAI_MODEL_STREAMER and RunaiStreamerReader.is_available():
        chosen = RunaiStreamerReader
    else:
        chosen = FALLBACK_READER

    if not chosen.is_available():
        logger.info(
            "Weight reader %s is not installed; using %s",
            chosen.name,
            FALLBACK_READER.name,
        )
        chosen = FALLBACK_READER
    if needs_key_filter and not chosen.supports_key_filter:
        logger.debug(
            "Weight reader %s cannot skip keys at load time; using %s",

View on GitHub (pinned to 0132848349)

Solutions

  1. Read the error message: it lists valid names via available_reader_names(); use one of those exactly
  2. Install the optional dependency for the desired reader (e.g. pip install runai-model-streamer) if it is merely unavailable
  3. Omit the argument to let selection fall back automatically

Example fix

# before
select_weight_reader(requested="runai_streamer")
# after
select_weight_reader(requested="runai")  # exact name from available_reader_names()
Defensive patterns

Strategy: type-guard

Validate before calling

from sglang.multimodal_gen.runtime.loader.weight_readers import available_reader_names

def reader_name_valid(name: str) -> bool:
    return name in available_reader_names()

Type guard

from sglang.multimodal_gen.runtime.loader.weight_readers import available_reader_names

def is_known_reader(name: str | None) -> bool:
    """Type guard: name is a registered weight reader (for typed configs)."""
    return name is None or name in available_reader_names()

Try / catch

try:
    select_weight_reader(requested=name)
except ValueError:
    name = None  # fall back to automatic selection
    select_weight_reader(requested=name)

Prevention

When it happens

Trigger: Calling select_weight_reader(requested="<name>") where <name> does not equal any registered reader's .name (e.g. "runai" when the Runai reader is unavailable or registered under a different name, or a typo like "safetensor").

Common situations: Typos in the reader name, version drift where a reader was renamed or removed, or requesting a reader whose optional dependencies (e.g. runai-model-streamer) are not installed.

Related errors


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