sgl-project/sglang · error · FileNotFoundError
Could not resolve a transformer directory from: {path}
Error message
Could not resolve a transformer directory from: {path} What it means
_resolve_transformer_dir accepts either a directory that directly contains config.json or one containing a transformer/ subdirectory with config.json; when neither matches it gives up with this FileNotFoundError.
Source
Thrown at python/sglang/multimodal_gen/tools/build_modelopt_fp8_transformer.py:219
DEFAULT_QWEN_IMAGE_KEEP_BF16_PATTERNS = [
r"^img_in$",
r"^txt_in$",
r"^time_text_embed\.timestep_embedder\.linear_[12]$",
r"^norm_out\.linear$",
r"^proj_out$",
r"^transformer_blocks\.\d+\.img_mlp\.net\.2$",
r"^transformer_blocks\.\d+\.(img_mod|txt_mod)$",
]
def _resolve_transformer_dir(path: str) -> str:
candidate = Path(path).expanduser().resolve()
if (candidate / "config.json").is_file():
return str(candidate)
transformer_dir = candidate / "transformer"
if (transformer_dir / "config.json").is_file():
return str(transformer_dir)
raise FileNotFoundError(f"Could not resolve a transformer directory from: {path}")
def _resolve_backbone_ckpt(path: str) -> str:
candidate = Path(path).expanduser().resolve()
if candidate.is_file():
return str(candidate)
backbone_path = candidate / "backbone.pt"
if backbone_path.is_file():
return str(backbone_path)
raise FileNotFoundError(f"Could not resolve backbone.pt from: {path}")
def _find_index_file(model_dir: str) -> str | None:
for filename in INDEX_FILENAMES:
candidate = os.path.join(model_dir, filename)
if os.path.isfile(candidate):
return filename
View on GitHub (pinned to 0132848349)
Solutions
- Verify config.json location in your export and pass that exact directory
- If the export nests it, pass the parent so <parent>/transformer/config.json resolves
- Rename/restructure the directory so config.json sits at the expected spot
Example fix
# before --source-dir /data/export # no config.json # after --source-dir /data/export/transformer
Defensive patterns
Strategy: validation
Validate before calling
from pathlib import Path
def resolves(p: str) -> bool:
c = Path(p).expanduser().resolve()
return (c / "config.json").is_file() or (c / "transformer" / "config.json").is_file() Try / catch
try:
d = _resolve_transformer_dir(path)
except FileNotFoundError as e:
logger.error("bad source dir: %s", e)
raise Prevention
- Standardize export layout to include transformer/config.json
- Assert layout in download/prep scripts
When it happens
Trigger: Passing --source-dir that is a raw checkpoint folder without config.json and without a transformer/ child; pointing at a file or nonexistent path.
Common situations: Export layouts that nest the transformer elsewhere (e.g. 'transformer_blocks/' or locale-specific names); passing the diffusers root instead of the transformer folder.
Related errors
- Could not resolve backbone.pt from: {path}
- Expected an index file or a single safetensors shard in {mod
- Only per-tensor FP8 scales are supported for diffusion check
- Expected a flat quantization_config dict in the ModelOpt exp
- This tool only supports ModelOpt diffusers FP8 exports (quan
AI-assisted analysis of sgl-project/sglang@0132848349 (2026-08-28).
Data as JSON: /api/errors/04ab244935bc0422.
Report an issue: GitHub.