Prhub

#36954 [Deps] Bump FlashInfer to 0.6.18

原始 PR 作者 mmangkad 合并时间 2026-08-31 10:02 文件变更 10 提交数 9 评论 1 代码增减 +10 / -393

执行摘要

FlashInfer 升级到 0.6.18,删除 Kimi-K3 定制镜像

PR body 仅提供 CI 状态,没有直接说明动机。从变更内容推断:FlashInfer 0.6.18 发布后,官方已覆盖 Kimi-K3 所需的 MXFP4 MoE 等能力,SGLang 不再需要维护定制镜像(包含 DeepEP topk 16、SWITCH_HIDDEN 3584、SourceMeta 对齐等补丁),因此升级依赖并删除定制脚本;Kimi-K3 文档中移除 "pinned FlashInfer 0.6.17 dependency" 的表述也印证了这一点。

值得快速浏览,了解“依赖升级 + 清理冗余镜像”的配套做法。重点观察:一是版本断言从 0.6.17 提升到 0.6.18 是否会误伤仍使用旧版本的环境;二是 AMD ROCm 7.2 CI 失败是否与本 PR 相关;三是删除 Kimi-K3 定制镜像的决策条件(官方 0.6.18 已覆盖 K3 能力)可作为后续清理类似定制镜像的参考。

讨论亮点

该 PR 没有 review 评论,review_comments_count 为 0,仅 Fridge003 给了 APPROVED。唯一一条 issue 评论是 mintlify bot 的文档预览通知。因此没有实际的设计讨论或争议点。

实现拆解

  1. 升级版本常量:python/pyproject.toml 中 flashinfer_python[cu13]==0.6.18;python/sglang/srt/entrypoints/engine.py 的 _set_envs_and_config 中将 assert_pkg_version 的最低版本参数从 0.6.17 改为 0.6.18;python/sglang/srt/utils/common.py 的 check_pkg_version_at_least docstring 示例版本同步更新;docker/Dockerfile 的 FLASHINFER_VERSION 从 0.6.17 改为 0.6.18,docker/Dockerfile.cu134 从 0.6.18rc10 改为正式版 0.6.18。
  2. 删除 Kimi-K3 定制镜像与补丁脚本:docker/kimi_k3/ 下 apply_deepep_k3_patch.sh(169 行)、kimi_k3_cu12.Dockerfile(113 行)、kimi_k3_cu13.Dockerfile(101 行)整体删除,因为 0.6.18 不再需要 DeepEP topk/SWITCH_HIDDEN/SourceMeta 对齐等补丁。
  3. 清理引用:docs/cookbook/autoregressive/Moonshotai/Kimi-K3.mdx 移除 "pinned FlashInfer 0.6.17 dependency" 的表述;test/registered/unit/mem_cache/test_unified_mamba_views.py 的 TestKDAFlashInferEnvelopeStateContract docstring 去掉 "pinned flashinfer_python==0.6.17" 注解。
  4. 测试与 CI:核心代码无行为变化,测试仅更新注释;CI 运行了 pr-test 与 pr-test-extra 均通过,但 AMD ROCm 7.2 运行失败(Run #33289293415);该 PR 带 release-highlight 标签,属于发布前依赖升级流程的一部分。
文件 模块 状态 重要度
python/pyproject.toml 依赖配置 modified 3.72
docker/kimi_k3/apply_deepep_k3_patch.sh 定制镜像 removed 6.13
python/sglang/srt/entrypoints/engine.py 启动检查 modified 4.93
docker/kimi_k3/kimi_k3_cu12.Dockerfile 定制镜像 removed 5.43
docker/kimi_k3/kimi_k3_cu13.Dockerfile 定制镜像 removed 5.22
python/sglang/srt/utils/common.py 工具函数 modified 4.09
docker/Dockerfile 镜像构建 modified 2.78
docker/Dockerfile.cu134 镜像构建 modified 2.78
test/registered/unit/mem_cache/test_unified_mamba_views.py 缓存测试 modified 3.23
docs/cookbook/autoregressive/Moonshotai/Kimi-K3.mdx 文档 modified 2.14

关键符号

assert_pkg_version check_pkg_version_at_least _set_envs_and_config

关键源码片段

python/sglang/srt/entrypoints/engine.py core-logic

启动时对 flashinfer_python 的最低版本断言从 0.6.17 提升到 0.6.18,是运行时版本门槛。

# python/sglang/srt/entrypoints/engine.py — 启动阶段版本门槛(摘录)
def _set_envs_and_config(server_args: ServerArgs):
    # 前面逻辑设置 CUDA_DEVICE_MAX_CONNECTIONS、TRTLLM_ENABLE_PDL 等环境变量
    ...
    # 版本检查默认开启,可用 SGLANG_SKIP_SGL_KERNEL_VERSION_CHECK 跳过
    if not get_bool_env_var("SGLANG_SKIP_SGL_KERNEL_VERSION_CHECK"):
        # 只有启用了 flashinfer attention 后端时才强制最低版本
        if "flashinfer" in attention_backends_of(resolved_view(cfg)):
            assert_pkg_version(
                "flashinfer_python",
                "0.6.18", # 本 PR 从 0.6.17 提升;低于此版本直接拒绝启动
                "Please uninstall the old version and "
                "reinstall the latest version by following the instructions "
                "at https://docs.flashinfer.ai/installation.html.",
            )
        if _is_cuda:
            assert_pkg_version(
                "sglang-kernel",
                "0.4.6.post1",
                "Please reinstall the latest version with `pip install sglang-kernel --force-reinstall`",
            )
# python/sglang/srt/utils/common.py — 版本断言核心实现
_should_skip_kernel_pkg_version_check = ... # 受 SGLANG_SKIP_SGL_KERNEL_VERSION_CHECK 门控def assert_pkg_version(pkg: str, min_version: str, message: str):
    # 显式跳过开关存在时直接放行,用于 CI 或特殊环境
    if _should_skip_kernel_pkg_version_check(pkg):
        return
​
    try:
        installed_version = version(pkg)
        # 版本低于要求时抛出异常,并附带安装指引
        if pkg_version.parse(installed_version) < pkg_version.parse(min_version):
            raise Exception(
                f"{pkg} is installed with version {installed_version}, which "
                f"is less than the minimum required version {min_version}. " + message
            )
    except PackageNotFoundError:
        # 包完全未安装时也视为不满足要求
        raise Exception(
            f"{pkg} with minimum required version {min_version} is not installed. "
            + message
        )

评论区精华

没有提炼出高价值讨论线程

当前评论区没有形成足够清晰的争议点或结论,后续有更多讨论时会体现在这里。

风险与影响

  1. 核心依赖升级:FlashInfer 0.6.17 → 0.6.18 影响所有启用 flashinfer attention/quant 后端的推理路径,虽然 API 层无改动迹象,但 kernel 行为(如精度、性能)可能有细微差异,需要依赖回归测试确认。
  2. AMD ROCm 7.2 CI 失败:PR 状态的 AMD ROCm 7.2 运行标红,可能表示新版本在 ROCm 环境存在兼容性问题,也可能仅是 CI 环境故障,合并前需单独确认。
  3. 删除 K3 定制镜像:若仍有用户或发布流程依赖 docker/kimi_k3/ 下的镜像入口,删除后会导致构建链路缺失;从仓库现状看这些镜像可能是过渡产物,但需要确保发布文档已同步。

用户侧:通过 pip 安装 sglang 时会自动获取 FlashInfer 0.6.18;使用 flashinfer 后端的推理路径全部受影响,但预期无破坏性变化。系统侧:Docker 镜像的 FlashInfer 版本与 pyproject 对齐,Dockerfile.cu134 从 rc10 转为正式版,镜像行为更稳定。团队侧:Kimi-K3 定制镜像和 DeepEP 补丁脚本的维护成本被移除,减少了专用构建入口,降低了后续升级时的同步负担。

核心依赖升级 AMD ROCm CI 失败 删除 K3 定制镜像

关联 Issue

未识别关联 Issue

当前没有检测到明确关联的 Issue 链接,后续同步到相关引用后会出现在这里。

完整报告

参与讨论