sgl-project/sglang · warning · DeprecationWarning

'data_parallel_rank' is deprecated, use 'routed_dp_rank' ins

Error message

'data_parallel_rank' is deprecated, use 'routed_dp_rank' instead.

What it means

OpenAI-style protocol requests accepted a data_parallel_rank field. The request model migrates it to routed_dp_rank (only when routed_dp_rank is absent) and warns. Requests keep working during the transition period.

Source

Thrown at python/sglang/srt/entrypoints/openai/protocol.py:318

    error_file_id: Optional[str] = None
    created_at: int
    in_progress_at: Optional[int] = None
    expires_at: Optional[int] = None
    finalizing_at: Optional[int] = None
    completed_at: Optional[int] = None
    failed_at: Optional[int] = None
    expired_at: Optional[int] = None
    cancelling_at: Optional[int] = None
    cancelled_at: Optional[int] = None
    request_counts: Optional[dict] = None
    metadata: Optional[dict] = None


def _migrate_deprecated_dp_rank(values: dict) -> dict:
    if isinstance(values, dict) and values.get("data_parallel_rank") is not None:
        import warnings

        warnings.warn(
            "'data_parallel_rank' is deprecated, use 'routed_dp_rank' instead.",
            DeprecationWarning,
            stacklevel=2,
        )
        if values.get("routed_dp_rank") is None:
            values["routed_dp_rank"] = values["data_parallel_rank"]
    return values


class CompletionRequest(BaseModel):
    # Ordered by official OpenAI API documentation
    # https://platform.openai.com/docs/api-reference/completions/create
    model: str = Field(
        default=DEFAULT_MODEL_NAME,
        description="Model name. Supports LoRA adapters via 'base-model:adapter-name' syntax.",
    )
    prompt: Union[List[int], List[List[int]], str, List[str]]
    best_of: Optional[int] = None

View on GitHub (pinned to 0132848349)

Solutions

  1. Change the request field to routed_dp_rank
  2. Audit clients/SDKs for the old field name and update
  3. Add a CI lint/grep for data_parallel_rank to catch regressions before the alias is removed

Example fix

# before
{"text": "hi", "sampling_params": {...}, "data_parallel_rank": 1}
# after
{"text": "hi", "sampling_params": {...}, "routed_dp_rank": 1}
Defensive patterns

Strategy: validation

Validate before calling

body.pop("data_parallel_rank", None)
body.setdefault("routed_dp_rank", old_rank) if old_rank is not None else None

Prevention

When it happens

Trigger: Sending a JSON request body containing data_parallel_rank to an sglang OpenAI-compatible endpoint (/generate, /v1/chat/completions variants that accept it).

Common situations: Client SDKs or load-test scripts written against older sglang releases; DP routing middleware that pins a rank per request.

Related errors


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