Prhub

#33866 Fix sgl-deep-ep builder dependencies

原始 PR 作者 Fridge003 合并时间 2026-08-07 07:30 文件变更 3 提交数 2 评论 0 代码增减 +7 / -5

执行摘要

修复 sgl-deep-ep 构建依赖并升级 PyTorch 2.13

PR body 明确指出根因:x86 CUDA 12.9 和 CUDA 13.0 构建器镜像禁用了 PowerTools,导致依赖安装失败;启用后又因 /usr/local/lib 不在动态链接器搜索路径而失败。同时 SGLang main 已升级到 PyTorch 2.13,为了保证 deep_ep_cpp 扩展的 ABI 兼容,构建、容器与 wheel 元数据必须使用完全一致的版本。

该 PR 规模小但定位精准,值得关注其构建依赖管理的细节:通过显式开启仓库和注册动态链接路径解决 CI 构建问题,以及用环境变量参数化版本断言避免漂移。对于维护发布流水线的工程师,建议精读 Dockerfile 的改动,可作为处理同类构建环境问题的参考。

讨论亮点

该 PR 无 review 评论或讨论线程。作者在 body 中提供了充分的验证证据,包括 CUDA 12.9/13.0 的 x86 与 aarch64 wheel 构建、twine check、在 B300 上的安装与 import 验证,以及 DeepEP 低延迟测试和 SGLang 测试结果。

实现拆解

按步骤拆解:

  1. Dockerfile 依赖修复(docker/sgl-deep-ep.Dockerfile):在 yum 安装命令中加入 --enablerepo=powertools,使 libfabric-devel 可解析;在 GDRCopy 安装后,将 /usr/local/lib 写入 /etc/ld.so.conf.d/gdrcopy.conf 并执行 ldconfig,保证 libgdrapi.so.2 在后续构建中可被发现。
  2. PyTorch 版本统一升级:Dockerfile 的 TORCH_VERSION 参数从 2.11.0 改为 2.13.0;工作流 .github/workflows/release-whl-deepep.yml 的环境变量、脚本 scripts/build_sgl_deepep.sh 的默认值同步升级,确保构建链路与 wheel 元数据完全一致。
  3. 冒烟断言参数化:Dockerfile 末尾的版本校验改为从 TORCH_VERSION 环境变量读取,避免硬编码版本与构建参数漂移。
文件 模块 状态 重要度
docker/sgl-deep-ep.Dockerfile 构建镜像 modified 4.13
.github/workflows/release-whl-deepep.yml 发布流程 modified 2.95
scripts/build_sgl_deepep.sh 构建脚本 modified 2.14

关键源码片段

docker/sgl-deep-ep.Dockerfile infrastructure

核心修复文件:启用 PowerTools 仓库、注册 ldconfig、升级 TORCH_VERSION 到 2.13,并参数化版本断言。

# 构建 GDRCopy 用户态库并注册到动态链接器:
# - 将 /usr/local/lib 写入 /etc/ld.so.conf.d/gdrcopy.conf
# - 运行 ldconfig 刷新缓存,使 libgdrapi.so.2 在镜像内可被发现
# - 校验头文件与动态库均已就绪
RUN git clone --depth 1 --branch "v${GDRCOPY_VERSION}" \
    https://github.com/NVIDIA/gdrcopy.git /opt/gdrcopy \
 && make -C /opt/gdrcopy CUDA="${CUDA_HOME}" prefix=/usr/local lib_install \
 && printf '%s\n' /usr/local/lib > /etc/ld.so.conf.d/gdrcopy.conf \
 && ldconfig \
 && test -f /usr/local/include/gdrapi.h \
 && ldconfig -p | grep -q libgdrapi

评论区精华

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

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

风险与影响

风险点:

1) 启用 PowerTools 仓库可能引入额外的包版本差异,但该镜像仅用于构建 wheel,影响有限;
2) /usr/local/lib 注册到 ldconfig 属于系统级变更,需确保不与镜像既有路径冲突,验证已通过;
3) PyTorch 版本强制为 2.13.0,若上游依赖未同步更新可能导致构建失败,但作者已按跨仓库契约验证;
4) 未从该 PR 触发 RC 发布流程,需要后续手动触发才能验证完整发布链路。

影响范围集中在 sgl-deep-ep 的构建与发布基础设施:修复了 x86 manylinux 构建器无法安装依赖的问题,使 CUDA 12.9/13.0 的 x86_64 和 aarch64 wheel 可正常产出;统一了 PyTorch 版本,避免 ABI 不兼容的 wheel 发布。对用户的影响是后续发布的 deep_ep 相关 wheel 将基于 PyTorch 2.13,与 SGLang main 对齐。对团队而言,这次修复打通了 x86 构建链路,降低了后续维护成本。

构建依赖修复 PyTorch 版本升级 ABI 兼容性

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论