该技能覆盖 vllm-ascend 的两个相关工作流。失败分析:诊断上游 vLLM 测试在昇腾 NPU 上失败的原因、归类根因并判断是否可修复。测试适配:把上游 vLLM 测试复制进 vllm-ascend,按 NPU 约定改造、调试至通过,或证明其无法通过,并达到可入 CI 的状态。两者共用环境搭建与根因方法论,核心约束是不修改上游 vLLM 代码,只改复制进 vllm-ascend 的测试代码和插件代码。
环境准备:先查已有分析(references/ASCEND_ALL_128_TEST_ANALYSIS.md 等)避免重复;依次确认工作区路径、用 npu-smi info 选空闲卡并设置 export ASCEND_RT_VISIBLE_DEVICES=<idle_card_ids>、加载 CANN 环境 source /usr/local/Ascend/ascend-toolkit/set_env.sh、配置模型下载与代理(no_proxy=localhost,127.0.0.1),并追加 export PYTHONPATH=/path/to/vllm:$PYTHONPATH,记录 vllm、vllm-ascend、CANN 等版本。
适配流程:按测试类型决定目标目录(单元测试 tests/ut/、单卡 e2e tests/e2e/singlecard/、多卡 multicard、夜间 nightly、接口验证 vllm_interface),补齐许可证头,修正导入地址并去除 triton/CUDA 相关内容,将 CUDA 构造替换为 NPU 等价物,使用 VllmRunner 上下文管理器、显式设置 gpu_memory_utilization、必要时设置 VLLM_WORKER_MULTIPROC_METHOD=spawn。用 pytest -sv 迭代调试,只记录首个真实失败。
根因归类包括:插件适配缺口、上游测试硬编码 CUDA、运行时特性缺口、测试前置条件、编译器/运行时兼容性、环境资源等。无法通过时需给出明确结论、证据、不可修复原因与后续建议。
CI 分层为 presubmit、nightly、manual、reject,优先级 P0–P3,并附批量分析表格与适配报告模板。具体案例与更多细节见仓库 references 目录;本文未提供的收费、平台、效果信息暂未提供。