执行摘要
此 PR 在 ROCm 平台 vllm-openai-rocm 镜像中集成 RIXL 库,使 AMD 用户可直接使用 NixlConnector 进行 PD 分离部署,无需手动编译。主要改动包括在 Dockerfile 最终阶段安装 RIXL wheel、设置 HSA 环境变量,并更新文档引用。经 review 优化后移除了冗余依赖,变更通过实际部署测试验证。
功能与动机
RIXL 是 ROCm 上 PD 分离所需的关键库,但官方镜像未包含(Issue #41637),导致用户在 AMD 平台无法直接使用 NixlConnector。此 PR 遵循 NV 镜像的先例,将 RIXL 集成到最终阶段,统一用户体验。
实现拆解
- 安装 RIXL wheel:在
docker/Dockerfile.rocm 最终阶段添加 RUN --mount=type=bind,from=build_rixl,target=/rixl_install uv pip install --system /rixl_install/*.whl。
- 设置 HSA 环境变量:添加
ENV HSA_ENABLE_IPC_MODE_LEGACY=1 避免 UCX rocm_ipc 的 GPU 内存固定问题(参考 ROCm 库 issue #6266)。
- 文档更新:在
docs/features/nixl_connector_usage.md 中将 Dockerfile 引用从 Dockerfile.rocm_base 改为 Dockerfile.rocm。
- Review 优化:根据反馈移除了基础镜像已包含的 RDMA 库安装,并将安装块移至更早位置以改善 Docker 缓存。
- 验证:通过构建本地镜像并运行容器验证 RIXL 导入成功,且在 8xMI300X 节点上使用 NixlConnector 启动 vLLM 无报错。
本次变更不涉及核心源码逻辑,仅涉及 Dockerfile 和文档,因此不提供具体代码片段。
评论区精华
- gemini-code-assist[bot] 指出 apt-get 缺少
--no-install-recommends 以及无效的 -y 标志,建议调整位置避免破坏缓存层。
- divakar-amd 确认 RDMA 依赖已在基础镜像中存在,提议移除冗余安装块;同时建议将 RIXL 安装移到更早位置以保持可读性。
- 作者采纳了所有建议,最终版本移除了 RDMA 安装块并优化了 Docker 缓存。
风险与影响
- 风险:变更低风险,主要影响镜像构建。
- RIXL 版本可能与基础环境不兼容,但已通过多节点测试。
HSA_ENABLE_IPC_MODE_LEGACY 环境变量可能影响其他运行时行为,但该设置为 ROCm 官方推荐。
- 镜像体积略微增加。
- 影响:
- 用户:ROCm 用户开箱即用 NixlConnector,无需手动编译。
- 系统:镜像构建时间略有增加但通过缓存优化抵消。
- 团队:维护成本低,需在 RIXL wheel 更新时同步升级。
关联脉络
此 PR 直接关联 Issue #41637,是对用户反馈的快速响应。未来若 RIXL 提供官方 wheel,可简化安装步骤。与近期其他 ROCm CI 改进(如 PR #41972、#40711)共同完善了 AMD 平台的持续集成和部署体验。
参与讨论