# PR #25856 完整报告

- 仓库：`sgl-project/sglang`
- 标题：Fix attr err
- 合并时间：2026-05-25 10:26
- 原文链接：http://prhub.com.cn/sgl-project/sglang/pull/25856

---

# 执行摘要

- 一句话：修复 Qwen3VLMoe encoder_only 模式属性错误
- 推荐动作：本次变更是典型的防御性编程修复，变更极小，逻辑清晰，可以快速合入。

# 功能与动机

PR body 指出：如果启用 encoder_only 模式，'Qwen3VLMoeForConditionalGeneration' 对象没有 'model' 属性，会抛出 AttributeError。

# 实现拆解

在 `python/sglang/srt/models/qwen3_vl_moe.py` 的 `load_weights` 方法中，第 238 行的条件判断前增加 `hasattr(self, 'model')` 检查，确保只有在 `self.model` 存在时才访问其 `start_layer` 属性。

关键文件：
- `python/sglang/srt/models/qwen3_vl_moe.py`（模块 模型加载；类别 source；类型 data-contract）: 加载权重时缺少对 self.model 存在性的检查，导致 encoder_only 模式 AttributeError。

关键符号：load_weights

## 关键源码片段

### `python/sglang/srt/models/qwen3_vl_moe.py`

加载权重时缺少对 self.model 存在性的检查，导致 encoder_only 模式 AttributeError。

```python
# python/sglang/srt/models/qwen3_vl_moe.py, load_weights 方法中
# 原代码直接访问 self.model.start_layer，当 encoder_only 模式时 self.model 不存在
# 修复：增加 hasattr(self, "model") 检查
if (
    "visual" not in name
    and layer_id is not None
    and hasattr(self, "model")  # 新增防御性检查
    and hasattr(self.model, "start_layer")
    and (
        layer_id < self.model.start_layer
        or layer_id >= self.model.end_layer
    )
):
    continue

```

# 评论区精华

无 review 讨论。

- 暂无高价值评论线程

# 风险与影响

- 风险：变更极简单（一行），仅增加防御性检查，无引入新风险的可能。但如果存在其他路径未加类似保护，可能仍有隐患，但本 PR 范围明确。
- 影响：影响范围限定在 `Qwen3VLMoeForConditionalGeneration` 模型加载流程，仅修复 encoder_only 模式下的异常情况，对其他模式无影响。
- 风险标记：暂无

# 关联脉络

- 暂无明显关联 PR