{"record":{"id":"db913463fa3e990c","repo":"sgl-project/sglang","slug":"could-not-resolve-backbone-pt-from-path","errorCode":null,"errorMessage":"Could not resolve backbone.pt from: {path}","messagePattern":"Could not resolve backbone\\.pt from: (.+?)","errorType":"exception","errorClass":"FileNotFoundError","httpStatus":null,"severity":"error","filePath":"python/sglang/multimodal_gen/tools/build_modelopt_fp8_transformer.py","lineNumber":229,"sourceCode":"\ndef _resolve_transformer_dir(path: str) -> str:\n    candidate = Path(path).expanduser().resolve()\n    if (candidate / \"config.json\").is_file():\n        return str(candidate)\n    transformer_dir = candidate / \"transformer\"\n    if (transformer_dir / \"config.json\").is_file():\n        return str(transformer_dir)\n    raise FileNotFoundError(f\"Could not resolve a transformer directory from: {path}\")\n\n\ndef _resolve_backbone_ckpt(path: str) -> str:\n    candidate = Path(path).expanduser().resolve()\n    if candidate.is_file():\n        return str(candidate)\n    backbone_path = candidate / \"backbone.pt\"\n    if backbone_path.is_file():\n        return str(backbone_path)\n    raise FileNotFoundError(f\"Could not resolve backbone.pt from: {path}\")\n\n\ndef _find_index_file(model_dir: str) -> str | None:\n    for filename in INDEX_FILENAMES:\n        candidate = os.path.join(model_dir, filename)\n        if os.path.isfile(candidate):\n            return filename\n\n    matches = sorted(\n        filename\n        for filename in os.listdir(model_dir)\n        if filename.endswith(\".safetensors.index.json\")\n    )\n    return matches[0] if matches else None\n\n\ndef _load_weight_map(model_dir: str) -> tuple[dict[str, str], str | None]:\n    index_filename = _find_index_file(model_dir)","sourceCodeStart":211,"sourceCodeEnd":247,"githubUrl":"https://github.com/sgl-project/sglang/blob/0132848349585cfe6aae51c4941cbae872505f8a/python/sglang/multimodal_gen/tools/build_modelopt_fp8_transformer.py#L211-L247","documentation":"_resolve_backbone_ckpt expects either a direct path to a backbone.pt file or a directory containing backbone.pt; neither exists at the given location.","triggerScenarios":"Passing --base-transformer-dir (or backbone path) where backbone.pt is missing or named differently.","commonSituations":"The BF16 fallback source export kept original naming instead of backbone.pt; the backbone file lives one level deeper than expected.","solutions":["Locate backbone.pt in your export (find /path -name backbone.pt)","Pass the direct file path if it exists under another name only after renaming/copying it to backbone.pt","Point at the directory that actually contains backbone.pt"],"exampleFix":"# before\n--base-transformer-dir /data/export   # no backbone.pt\n# after\n--base-transformer-dir /data/export/backbone","handlingStrategy":"validation","validationCode":"from pathlib import Path\n\ndef has_backbone(p: str) -> bool:\n    c = Path(p).expanduser().resolve()\n    return c.is_file() or (c / \"backbone.pt\").is_file()","typeGuard":null,"tryCatchPattern":"try:\n    d = _resolve_backbone_ckpt(path)\nexcept FileNotFoundError as e:\n    logger.error(\"%s\", e)\n    raise","preventionTips":["Keep backbone.pt at the documented location in BF16 exports"],"tags":["modelopt","fp8","path-resolution"],"backgroundTag":"file-not-found","analyzedSha":"0132848349585cfe6aae51c4941cbae872505f8a","analyzedAt":"2026-08-28T05:10:05.995Z","schemaVersion":2},"datasetVersion":"2026-08-28T06:17:29.519Z"}