# PR #21193 完整报告

- 仓库：`sgl-project/sglang`
- 标题：[AMD] Fix AMD Nightly Test - Transformers 5.3.0 incompatibility and gemma2-27b kv issue
- 合并时间：2026-03-25 01:41
- 原文链接：http://prhub.com.cn/sgl-project/sglang/pull/21193

---

## 执行摘要
本 PR 修复了 AMD 夜间测试中的两个关键 bug：Transformers 5.3.0 库升级导致的 grok 模型配置键访问错误，以及 gemma2-27b 模型在滑动窗口注意力中 KV 缓存处理可能因空页表而崩溃的问题。通过添加空值检查和健壮配置获取，确保测试通过，提升系统稳定性与兼容性，对 AMD 环境支持有积极影响。

## 功能与动机
动机源于 AMD Nightly 测试失败，具体是 Transformers 库版本 5.3.0 变化导致 `rope_theta` 配置键访问方式不兼容，以及 gemma2-27b 模型在滑动窗口注意力中 `swa_page_table` 可能为空引发错误。PR 目标是通过修复这些失败点，确保 CI 测试稳定运行，作者在评论中链接了测试通过结果和相关 PR（如 19868），强调了高优先级。

## 实现拆解
修改集中在两个文件：
1. **`python/sglang/srt/layers/attention/aiter_backend.py`**：在 `forward_extend` 和 `forward_decode` 函数中添加 `if self.forward_metadata.swa_page_table is not None:` 检查，防止未初始化页表时赋值错误。关键代码片段：
   ```python
   if self.forward_metadata.swa_page_table is not None:
       page_table = self.forward_metadata.swa_page_table
   ```
2. **`python/sglang/srt/models/grok.py`**：在 `__init__` 方法中重构 `rope_theta` 获取逻辑，从直接访问 `config.rope_parameters["rope_theta"]` 改为先检查存在性：
   ```python
   rope_params = getattr(config, "rope_parameters", None)
   if rope_params and "rope_theta" in rope_params:
       rope_theta = rope_params["rope_theta"]
   else:
       rope_theta = getattr(config, "rope_theta", 10000)
   ```
 这增强了与 Transformers 库版本的兼容性。

## 评论区精华
在 review 中，gemini-code-assist[bot] 提出了关键建议：
> " 检查 rope_theta 键的存在性以避免 KeyError，这使逻辑更简洁安全。"
这个建议被作者采纳并合并到代码中，体现了防御性编程的最佳实践，确保了变更的健壮性。讨论简洁，无其他争议。

## 风险与影响
**风险**：总体较低，变更主要为防御性；但需关注：aiter_backend.py 中如果 `swa_page_table` 为 None，后续逻辑是否妥善处理；grok.py 中默认值 10000 的适用性，但基于测试通过，风险可控。
**影响**：正面，修复了 AMD 测试失败，提升了系统稳定性；对用户无直接影响，但对团队加速了 CI 流程，并提供了处理库兼容性的参考模式。

## 关联脉络
与多个 PR 相关：
- **PR 21195**：修复 qwen3 测试失败，在评论中提及，共同解决 AMD CI 问题。
- **PR 19868**：修复 Mistral-7B-Instruct-v0.3 问题，显示跨 PR 协作以全面处理测试失败。
- **PR 21134**：类似 bugfix，处理 Transformers 5.x 兼容性，表明团队在应对库版本变化时的系统性努力。
这些关联揭示了更大的 CI 稳定性和兼容性维护趋势。