{"record":{"id":"a233c64e3ae9c734","repo":"sgl-project/sglang","slug":"reserved-serve-backend-names-cannot-be-used-name","errorCode":null,"errorMessage":"Reserved serve backend names cannot be used: {names}","messagePattern":"Reserved serve backend names cannot be used: (.+?)","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"python/sglang/cli/serve_backends.py","lineNumber":86,"sourceCode":"\n\n@dataclass(frozen=True)\nclass RegisteredServeBackend:\n    \"\"\"A loaded backend together with its discovery metadata.\"\"\"\n\n    name: str\n    backend: ServeBackend\n    distribution: str | None = None\n\n\nclass ServeBackendRegistry:\n    \"\"\"Registry of built-in and installed out-of-tree serve backends.\"\"\"\n\n    def __init__(self, builtins: Mapping[str, ServeBackend]) -> None:\n        invalid_builtin_names = set(builtins) & RESERVED_SERVE_BACKEND_NAMES\n        if invalid_builtin_names:\n            names = \", \".join(sorted(invalid_builtin_names))\n            raise ValueError(f\"Reserved serve backend names cannot be used: {names}\")\n\n        self._builtins = dict(builtins)\n        self._entry_points = self._discover_entry_points()\n        self._loaded: dict[str, RegisteredServeBackend] = {\n            name: RegisteredServeBackend(name=name, backend=backend)\n            for name, backend in self._builtins.items()\n        }\n\n        reserved = (set(self._builtins) | RESERVED_SERVE_BACKEND_NAMES) & set(\n            self._entry_points\n        )\n        if reserved:\n            names = \", \".join(sorted(reserved))\n            raise RuntimeError(\n                \"Out-of-tree serve backends cannot replace reserved or built-in \"\n                f\"backends: {names}\"\n            )\n","sourceCodeStart":68,"sourceCodeEnd":104,"githubUrl":"https://github.com/sgl-project/sglang/blob/0132848349585cfe6aae51c4941cbae872505f8a/python/sglang/cli/serve_backends.py#L68-L104","documentation":"The final default case of deterministic_all_reduce's dtype switch: only Float, Half, and (on gfx8+ / non-arch builds) BFloat16 are supported. Any other dtype throws this error.","triggerScenarios":"Calling deterministic_all_reduce with dtype float64, integer, or fp8 tensors.","commonSituations":"Deterministic inference mode enabled for models producing non-fp16/bf16/fp32 tensors; accidental double precision from a cast; fp8 pathways routed into deterministic allreduce.","solutions":["Cast tensors to float32/float16/bfloat16 before the call","Exclude such tensors from the deterministic custom path (use RCCL)","Note bf16 requires gfx8+ hardware (__HIP_ARCH__ >= 800)"],"exampleFix":"# before\ndeterministic_all_reduce(fa, x_double, out)\n# after\ndeterministic_all_reduce(fa, x_double.float(), out.float())","handlingStrategy":"type-guard","validationCode":null,"typeGuard":"def det_ar_supported(t: torch.Tensor) -> bool:\n    return t.dtype in (torch.float32, torch.float16, torch.bfloat16)","tryCatchPattern":"try:\n    deterministic_all_reduce(fa, inp, out)\nexcept RuntimeError as e:\n    if 'only supports' in str(e):\n        deterministic_all_reduce(fa, inp.float(), out.float())\n    else:\n        raise","preventionTips":["Cast to fp32/fp16/bf16 before deterministic allreduce","Exclude fp8/int tensors from the deterministic custom path"],"tags":["rocm","allreduce","deterministic","dtype"],"backgroundTag":"unsupported-dtype","analyzedSha":"0132848349585cfe6aae51c4941cbae872505f8a","analyzedAt":"2026-08-28T05:10:05.995Z","schemaVersion":2},"datasetVersion":"2026-08-28T06:17:29.519Z"}