sgl-project/sglang · error · NotImplementedError

MiniMax H3 s3:// material URIs require a configured artifact

Error message

MiniMax H3 s3:// material URIs require a configured artifact resolver

What it means

An s3:// material URI was supplied, but MiniMax H3 material localization has no artifact resolver configured, so it explicitly refuses S3.

Source

Thrown at python/sglang/multimodal_gen/runtime/pipelines_core/stages/model_specific_stages/minimax_h3/material_io.py:805

    if scheme == "file":
        assert parsed is not None
        if parsed.netloc not in {"", "localhost"}:
            raise ValueError(f"file URI host must be local, got {parsed.netloc!r}")
        output_path = _checked_material_file(
            Path(urllib.parse.unquote(parsed.path)),
            label="MiniMax H3 material source",
        )
        _validate_material_once(batch, uri, output_path, condition_type=condition_type)
        return output_path
    if not scheme:
        output_path = _checked_material_file(
            Path(uri).expanduser(),
            label="MiniMax H3 material source",
        )
        _validate_material_once(batch, uri, output_path, condition_type=condition_type)
        return output_path
    if scheme == "s3":
        raise NotImplementedError(
            "MiniMax H3 s3:// material URIs require a configured artifact resolver"
        )

    cache = batch.extra.setdefault(MINIMAX_H3_MATERIAL_CACHE_EXTRA_KEY, {})
    cached = cache.get(uri)
    if isinstance(cached, str):
        cached_path = Path(cached)
        if cached_path.exists():
            output_path = _checked_material_file(
                cached_path,
                label="cached MiniMax H3 material",
            )
            _validate_material_once(
                batch, uri, output_path, condition_type=condition_type
            )
            return output_path
        cache.pop(uri, None)

View on GitHub (pinned to 0132848349)

Solutions

  1. Download/copy the object to local disk or serve it over HTTP(S) and use that URI
  2. Check whether your deployment offers an artifact resolver integration to enable
  3. Use a pre-signed https URL from S3

Example fix

# before
uri = "s3://mybucket/ref.png"
# after
uri = "https://mybucket.s3.amazonaws.com/ref.png?X-Amz-..."
Defensive patterns

Strategy: fallback

Validate before calling

if uri.startswith('s3://'): raise_for_request('s3 not supported; provide https or local path')

Try / catch

except NotImplementedError as e: convert object to https/local and retry

Prevention

When it happens

Trigger: Passing 's3://bucket/key.png' to minimax_h3_localize_material_uri in a deployment without an S3 resolver.

Common situations: Porting configs from another pipeline that supported s3://; assuming object-storage URIs work out of the box.

Related errors


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