#56015 [XPU] Honor device_ids for worker device placement
原始 PR · 作者 chaojun-zhang · 合并时间 2026-09-16 11:53
修复 XPU worker 忽略 device_ids 的设备放置
值得精读,尤其适合关注平台差异收敛、多后端设备绑定与 CI 依赖治理的工程师。 阅读建议: - 先看 `vllm/v1/worker/xpu_worker.py` 的 `init_device`,重点是「映射存在 / 不存在」两条分支与 `logical_device_id_to_visible_device_id()` 的引入,这是理解 vLLM 里 logical rank 与 visible ordinal 两套编号体系的好样本。 - 再看 `vllm/v1/engine/core.py` 的 `_set_visible_devices` 与 `_set_assigned_physical_gpu_ids`,理解 device_ids 是如何从 CLI 一路解析并写回 `VllmConfig` 的(这条链路也直接决定 Ray 部署下 DP rank 的设备分配)。 - 特别关注 review 中 jikunshang 对 dpctl 的质疑与作者的复现数据,这是「依赖一个非直觉的外部库副作用来修正确性」的典型案例。 可跟进的改进(若团队在 XPU + Ray 生产部署):补一个覆盖 `assigned_physical_gpu_ids` 非 None 的单元测试(mock `torch.xpu.get_device_properties` 与 `logical_device_id_to_visible_device_id` 即可低成覆盖断言分支);把 dpctl 依赖写入文档或环境检查;评估是否把映射发布挪到断言之后以消除全局状态污染。