Prhub

#40287 [XPU] Update nixl to v0.10.1 in Dockerfile

原始 PR 作者 zhenwei-intel 合并时间 2026-06-18 14:01 文件变更 2 提交数 4 评论 18 代码增减 +6 / -5

执行摘要

XPU Dockerfile 升级 nixl 至 v0.10.1 并新增 PD 分离测试

升级 nixl 版本是为了解决 XPU 上 nixl>=1.1 版本的问题(贡献者在讨论中提到 xpu has some issues in this version)。新增 PD 分离测试是为了提前发现 KV connector 在 prefill/decode 分离模式下的回归,填补 CI 空白。

该 PR 属于常规依赖升级与 CI 增强,值得关注的是 nixl 包拆分的设计决策及两步安装的合理性。建议在后续的 nixl 升级 PR 中参考此模式。

讨论亮点

gemini-code-assist 指出 uv pip install nixl==${NIXL_VERSION} 可能冗余或引发错误,因为 nixl 可能不在公共索引上。
jikunshang 询问为什么需要额外安装 nixl。
zhenwei-intel 解释:新版 nixl 提供两个包——nixl-cu12(实现包,需源码构建)和 nixl(元包,从 PyPI 安装以提供统一入口),两者缺一不可。
xuechendi 追问是否不再需要源码构建,zhenwei-intel 确认仍需构建实现包。
jikunshang 提醒旧脚本 run-xpu-test.sh 将被弃用,建议直接修改 test-intel.yaml,最终变更已采纳此建议。

实现拆解

  1. 更新构建依赖版本:在 docker/Dockerfile.xpu 中将 UCX_VERSION 从固定 commit e5d98879 改为正式标签 v1.21.0-rc2,将 NIXL_VERSION 从 0.7.0 改为 0.10.1。
  2. 调整 nixl 安装方式:新版 nixl 拆分为 nixl-cu12(实现包)和 nixl(元包)。在构建 stage 中保持 uv pip install . 从源码构建 nixl-cu12,并新增 uv pip install nixl==${NIXL_VERSION} 命令安装元包;在最终 stage 中同样添加元包安装。
  3. 新增 CI 测试步骤:在 .buildkite/intel_jobs/test-intel.yaml 的 XPU V1 test 阶段的 commands 中,在第一个 cd tests 后添加 bash v1/kv_connector/nixl_integration/run_xpu_disagg_accuracy_test.sh,用于运行 PD 分离准确性测试。
文件 模块 状态 重要度
docker/Dockerfile.xpu Docker 构建 modified 3.63
.buildkite/intel_jobs/test-intel.yaml CI 配置 modified 2.76

关键源码片段

docker/Dockerfile.xpu infrastructure

升级 nixl 和 UCX 版本,调整 nixl 安装方式以适配新版包结构,是本次变更的核心文件。

# Stage: ucx-nixl-build
# 升级 UCX 版本至正式发布的 v1.21.0-rc2
ARG UCX_VERSION=v1.21.0-rc2
# 升级 NIXL 版本至 v0.10.1
ARG NIXL_VERSION=0.10.1
# ... 省略中间步骤 ...
RUN cd /tmp/nixl_source && \
    uv pip install --upgrade meson pybind11 patchelf && \
    uv pip install -r requirements.txt && \
    # `uv pip install .` 会从源码构建并安装 `nixl-cu12` 实现包
    uv pip install . && \
    # `nixl` 元包需要从 PyPI 单独安装,以提供正确的包名和依赖声明
    uv pip install nixl==${NIXL_VERSION}
​
# Stage: vllm-openai
ARG NIXL_VERSION=0.10.1
# ... 复制 nixl wheel 等 ...
RUN uv pip install --no-deps /tmp/nixl_wheels/nixl*.whl && \
    # 在最终镜像中也安装元包以确保运行时依赖完整
    uv pip install nixl==${NIXL_VERSION}

评论区精华

Dockerfile 中额外的 nixl pip install 命令 设计

gemini-code-assist 指出 `uv pip install nixl==${NIXL_VERSION}` 可能冗余或导致错误;jikunshang 询问为什么需要这个;zhenwei-intel 解释新版本 nixl 分为 nixl-cu12 和 nixl 两个包,需要分别安装;xuechendi 追问是否不再需要源码构建。

结论:确认需要两步安装:源码构建 nixl-cu12,然后 pip 安装 nixl 元包。已解释清楚并得到 reviewer 认可。 · 已解决

测试脚本放置位置建议 other

jikunshang 提醒旧的 run-xpu-test.sh 将被弃用,建议直接修改 test-intel.yaml。zhenwei-intel 回应也更新了 run-xpu-test.sh,但最终真正生效的是 test-intel.yaml。

结论:测试命令最终添加在 test-intel.yaml 的正确位置,符合长期维护方向。 · 已解决

风险与影响

  1. 依赖版本升级风险:nixl 和 UCX 版本跳跃可能引入新的兼容性缺陷,尤其是 UCX 从私有 commit 切换到正式 RC 版本,行为可能变化。
  2. 包安装顺序依赖:两步安装(先 uv pip install . 后 pip install nixl)可能因网络超时或索引不可用失败,影响 Docker 构建稳定性。
  3. CI 测试失败风险:新增的 PD 分离测试脚本对环境依赖敏感(如需要多 GPU 或特定 nixl 配置),在不满足条件时可能导致 CI 任务失败或超时。

影响范围:仅限于 XPU 平台。用户影响:使用 XPU Docker 镜像的用户将自动获得 nixl v0.10.1,可能修复此前版本的已知问题。系统影响:CI 中将多运行一个端到端准确性测试,总耗时增加约 5-10 分钟。团队影响:维护者需了解 nixl 包结构变化,后续升级 nixl 时需同时更新两个安装命令。

依赖版本升级 XPU 特定变更 新增 CI 测试

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论