# PR #29855 完整报告

- 仓库：`sgl-project/sglang`
- 标题：[AMD][DI][CI] 3/N Add Kimi K2.6 FP8 MI355X 1P1D nightly recipes
- 合并时间：2026-07-05 12:05
- 原文链接：http://prhub.com.cn/sgl-project/sglang/pull/29855

---

# 执行摘要

- 一句话：新增 Kimi K2.6 FP8 MI355X 夜巡配方与 launcher 模型无关改造
- 推荐动作：建议阅读本 PR：
 - 关注 launcher 模型无关设计：通过 `model:` 块和可选字段，实现配置与脚本的解耦，值得借鉴。
 - review 中关于空 hash 的修复虽小，但反映了边界条件处理的重要性。
 - MTP 准确性不达标的问题需要进一步排查，但基础版已通过，表明主要流程正确。

# 功能与动机

PR 描述指出，此变更是为了在 MI355X 夜间测试中增加 Kimi K2.6 模型的覆盖率，验证 launcher 的模型无关设计，并确保 EAGLE3 外部 draft 路径在 2 节点 PD 场景下正确工作。所有 Kimi 特定配置均通过 recipe 的 `model:` 块表达，无需在 launcher 中硬编码。

# 实现拆解

实现分为三个步骤：
1. **launcher 重构 **（`scripts/ci/slurm/launch_mi355x.sh`）：将 HF 缓存快照解析提取为 `resolve_snapshot` 函数，供 `MODEL_PATH` 和外部 draft 路径共用。新增可选字段支持：split attention（`prefill_attention_backend`/`decode_attention_backend`）、SWA 比例、`model:` 块（环境变量 + 服务参数）、外部 draft 模型路径。当字段为空时自动跳过对应标志，确保 DSV4 原始配方生成完全相同的 `docker run` 命令。
2. **新增 Kimi 配方文件 **（`recipes/mi355x-fp8/kimik26/1k1k/1p1d.yaml` 和 `1p1d-mtp.yaml`）：前者为基础配方，后者增加 EAGLE3 MTP 块。两个配方均自包含，没有继承。包含 `model:` 块（设置 `SGLANG_USE_AITER`、`SGLANG_ROCM_FUSED_DECODE_MLA`、`enable_multithread_load`、`kimi_k2` 解析器等）、split attention 后端（aiter+triton）、GSM8K 准确性门控（>0.92）。
3. **注册夜巡配置 **（`scripts/ci/slurm/nightly-configs.yaml`）：添加 `kimik26-fp8-mi355x-sglang` 和 `kimik26-fp8-mi355x-mtp-sglang` 两个配置块，指向对应 recipe 文件，指定模型路径、精度、并发搜索范围等。

测试方面：PR 描述中已在实际 MI355X 硬件上验证了 Kimi 基础版（GSM8K 0.941）和 MTP 版（0.948）的正确性。DSV4 的 `docker run` 命令与旧脚本字节一致。Issue 评论显示了一次运行中 MTP 版准确性不达标（0.892 < 0.92），但基础版通过，表明可能需要进一步调试。

关键文件：
- `scripts/ci/slurm/launch_mi355x.sh`（模块 CI 脚本；类别 infra；类型 infrastructure；符号 resolve_snapshot, emit）: 核心 launcher 改造，添加模型无关支持
- `scripts/ci/slurm/recipes/mi355x-fp8/kimik26/1k1k/1p1d-mtp.yaml`（模块 CI 配置；类别 infra；类型 infrastructure）: Kimi K2.6 MTP 配方，包含 EAGLE3 外部 draft 配置
- `scripts/ci/slurm/recipes/mi355x-fp8/kimik26/1k1k/1p1d.yaml`（模块 CI 配置；类别 infra；类型 infrastructure）: Kimi K2.6 基础配方
- `scripts/ci/slurm/nightly-configs.yaml`（模块 CI 配置；类别 infra；类型 infrastructure）: 注册两个新夜巡配置

关键符号：resolve_snapshot

## 关键源码片段

### `scripts/ci/slurm/launch_mi355x.sh`

核心 launcher 改造，添加模型无关支持

```bash
# Resolve a HuggingFace cache dir (models--org--name) to its live snapshot dir.
# Lets nightly-configs / recipes point at the shared cache without hardcoding a
# snapshot hash; a concrete snapshot dir (or plain dir) is returned unchanged.
# Used for both MODEL_PATH and an optional speculative draft model path.
resolve_snapshot() {
  local p="$1"
  if [[ -f "$p/refs/main" && -d "$p/snapshots" ]]; then
    local hash resolved
    hash="$(cat "$p/refs/main")"
    resolved="$p/snapshots/$hash"
    # Guard against empty hash — the gemini-code-assist[bot] review caught this
    if [[ -n "$hash" && -d "$resolved" ]]; then
      echo "resolved snapshot: $p -> $resolved" >&2
      echo "$resolved"
      return 0
    fi
    echo "ERROR: refs/main=$hash but $resolved missing" >&2
    return 1
  fi
  echo "$p"
}

MODEL_PATH="$(resolve_snapshot "$MODEL_PATH")" || exit 1

# In the recipe parsing Python snippet, emit handles optional fields:
# emit("ATTN", rt.get("attention_backend", ""))
# emit("PATTN", rt.get("prefill_attention_backend", ""))
# emit("DATTN", rt.get("decode_attention_backend", ""))
# emit("SWA", rt.get("swa_full_tokens_ratio", ""))
# emit("HAS_MODEL", 1 if r.get("model") else 0)
# ...

```

# 评论区精华

核心讨论：
- `resolve_snapshot` 函数空 hash 风险：gemini-code-assist[bot] 指出如果 `refs/main` 为空，函数会错误返回 `snapshots` 目录。已在第二个 commit 中添加 `[[ -n "$hash" ]]` 检查修复。
- HaiShaw 要求最小化对 `process_result.py` 的改动：最终未修改该文件，符合要求。

- resolve_snapshot 函数空 hash 风险 (correctness): 已在第二个 commit 中添加 `if [[ -n "$hash" && -d "$resolved" ]]` 修复。
- 最小化 process_result.py 改动 (design): 未修改 process_result.py，符合要求。

# 风险与影响

- 风险：技术风险：
 - launcher 新增字段可能影响现有 DSV4 配方。但 PR 已通过逐字节对比确认 DSV4 的 `docker run` 命令不变，风险较低。
 - 外部 draft 模型路径依赖于 `/it-share` 挂载，路径有效性需运行时保证。
 - split attention 后端（aiter/triton）可能引入 Kimi 模型特定的兼容性问题。
 - MTP 配方在一次 CI 运行中准确性不达标（0.892 < 0.92），可能存在模型或配置问题，需跟踪。
- 影响：影响范围：
 - 仅影响 MI355X 硬件上的夜间测试，增加两个新配置。不对现有 DSV4 或其他平台产生影响。
 - launcher 的扩展性增强，为未来添加其他新模型（如 LFM 等）提供路径。
 - 团队将获得 Kimi K2.6 在 2 节点 PD 场景下的性能与准确性基准数据。
 - 风险标记：边界条件修复 , 配置兼容性 , 外部依赖路径

# 关联脉络

- 暂无明显关联 PR