[sglang issue] qwen3.5-fp8-mi355x-sglang: Qwen3.5-397B-A17B-FP8 fails at model init (sglang treats text-only checkpoint as VL)
## Summary
Loading `Qwen/Qwen3.5-397B-A17B-FP8` with the SGLang ROCm image pinned in `amd-master.yaml` for `qwen3.5-fp8-mi355x-sglang` fails immediately at model init. SGLang's `qwen3_5.py` model class forces VL (vision-language) handling for this checkpoint, but the checkpoint's `vision_config` is a plain `dict`, not the typed config object that `Qwen3VLMoeVisionModel.__init__` expects.
## Repro
Use the sweep config exactly as `amd-master.yaml` specifies:
- image: `lmsysorg/sglang-rocm:v0.5.10rc0-rocm720-mi35x-20260414`
- model: `Qwen/Qwen3.5-397B-A17B-FP8`
- launcher: `benchmarks/single_node/agentic/qwen3.5_fp8_mi355x.sh` (TP=8, EP=1)
```bash
podman run ... -e MODEL=Qwen/Qwen3.5-397B-A17B-FP8 -e TP=8 -e EP_SIZE=1 \
-e CONC=8 -e RESULT_DIR=... \
... lmsysorg/sglang-rocm:v0.5.10rc0-rocm720-mi35x-20260414 \
/workspace/benchmarks/single_node/agentic/qwen3.5_fp8_mi355x.sh
```
## Failure
```
[2026-05-13 04:29:35 TP0] Load weight begin. avail mem=276.89 GB
[2026-05-13 04:29:35 TP0] Detected fp8 checkpoint.
[2026-05-13 04:29:35 TP0] Scheduler hit an exception: Traceback (most recent call last):
File ".../sglang/srt/managers/scheduler.py", line 3712, in run_scheduler_process
...
File ".../sglang/srt/model_loader/loader.py", line 281, in _initialize_model
return model_class(**kwargs)
File ".../sglang/srt/models/qwen3_5.py", line 1490, in __init__
super().__init__(config, quant_config, prefix, language_model_cls)
File ".../sglang/srt/models/qwen3_vl.py", line 1080, in __init__
self.visual = Qwen3VLMoeVisionModel(
File ".../sglang/srt/models/qwen3_vl.py", line 307, in __init__
self.hidden_size = vision_config.hidden_size
AttributeError: 'dict' object has no attribute 'hidden_size'
```
`Qwen/Qwen3.5-397B-A17B-FP8` is a text-only MoE — it should not go through the VL path at all. The model class in SGLang is forcing VL handling for the entire `Qwen3.5*` family.
## Likely root cause (not verified)
The image bundles SGLang `v0.5.10rc0` (April 14 2026 build). Either:
- Upstream SGLang `qwen3_5.py` model registry routes all `Qwen3.5*` checkpoints through `Qwen3VLForConditionalGeneration` regardless of whether `vision_config` is present
- OR the HF checkpoint's config schema changed and the older SGLang doesn't know to convert `dict` → `Qwen3VLVisionConfig` before init
## Suggested fix
Either:
1. Bump the `qwen3.5-fp8-mi355x-sglang` image to a newer SGLang ROCm build that handles text-only Qwen3.5 properly
2. Add a workaround flag in the launcher (e.g. `--model-impl Qwen3MoeForCausalLM`) to bypass the VL detection
3. File the corresponding fix upstream in sgl-project/sglang
## Workaround (none yet)
The launcher has no flag to skip VL detection. As of now, qwen3.5-fp8-mi355x-sglang in v0.2 cannot be benchmarked — the agentic-coding sweep entry is dead code until the image or launcher is updated.
## Environment
- Branch: `chore/agentx-v0.2-aiperf-testing` (tip `c8dfb585`)
- Image: `lmsysorg/sglang-rocm:v0.5.10rc0-rocm720-mi35x-20260414` (id `f66d0b281937`, 4 weeks old)
- Model: `Qwen/Qwen3.5-397B-A17B-FP8` (HF, snapshot `ea5b4f81096f3901c91dea97f81324302495781d`)
- Hardware: AAC1 MI355X (gfx950), TP=8 spans all 8 GPUs on a single node
Discovered while validating the v0.2 launcher matrix on AAC1 — companion to issues #1358, #1359, #1360 (vllm/MiniMax issues found in the same campaign).
关闭于 2026-05-13 1 条评论