vllm-ascend-deploy
vllm-ascend-deploy
昇腾 NPU 平台 vLLM 大模型推理服务一键部署工具。
核心工作流: SSH 检查 → 解析模型 → NPU 检查 → 配置发现 → 用户确认 → 执行部署 → 监控启动 → 验证服务
部署前准备
1. SSH 连接检查(远程部署时)
ssh -o BatchMode=yes <server> "echo ok"
连接失败时:
- 询问用户 SSH 密码
- 使用 paramiko 配置免密登录
- 验证成功后继续
2. 询问用户配置(优先)⚠️
先问用户:
- 是否有指定的容器镜像路径?
- 是否有指定的模型权重路径?
- 是否有特定的启动参数?
判断标准:
| 用户回复 | 含义 | 后续动作 |
|---|---|---|
| 具体路径/版本 | 明确提供 | 直接使用,跳过搜索 |
| "你自己确定"、"随便" | 模糊授权 | 必须搜索文档验证 |
| 未回复/跳过 | 未提供 | 必须搜索文档验证 |
禁止: 将模糊授权当作明确提供,跳过验证步骤
3. NPU 资源检查
npu-smi info # 检查 NPU 状态和卡数
npu-smi info -t pid # 检查占用进程
占用处理: NPU 被占用 → 列出进程 → 询问用户(杀进程/等待/取消)
4. 配置发现 ⚠️ 必须执行
关键规则(完整流程见 model-discovery.md):
| 规则 | 说明 |
|---|---|
| 镜像仓库深度搜索 | 文档示例通常只展示一种架构(如 A3),必须进入镜像仓库目录查看完整文件列表 |
| NPU 架构判断 | npu-smi info 显示 8×910B3 = A2,16×910B3 = A3 |
| 镜像匹配 | A2 用 -a2 后缀,A3 用 -a3 后缀,不匹配可能无法启动 |
| 确认清单 | 先展示官方推荐配置,再告知现有资源,让用户选择 |
信息源优先级:
| 优先级 | 来源 | URL |
|---|---|---|
| 1️⃣ | GitCode 教程 | https://gitcode.com/org/vLLM_Ascend/ |
| 2️⃣ | 官方文档 | https://docs.vllm.ai/projects/vllm-ascend-cn/zh-cn/latest/tutorials/models/ |
| 3️⃣ | Modelers 在线库 | https://modelers.cn/user/vLLM_Ascend |
提取内容: 镜像 + TP 推荐值 + 启动参数 + 环境变量
网络受限时: 使用 browser 独立浏览器工具访问,不猜测参数
禁止:
- 第一个来源没找到就下结论,必须按优先级继续搜索
- 看到现有容器就直接用,忽略官方推荐
5. 用户确认 ⚠️ 阻断点
前置条件检查:
- 配置发现步骤已完成
- 镜像版本已从文档确认
- TP 推荐值已从文档确认
任一条件未满足 → 禁止继续,返回 Step 4 搜索文档
确认清单必须包含:
- 官方推荐配置(优先展示)
- NPU 架构判断(8 × 910B3→A2, 16 × 910B3→A3)
- 现有资源检查(已有容器/镜像,仅供参考)
- 选择确认:让用户选择使用官方推荐还是复用现有资源
禁止:
- 看到现有容器就直接用,忽略官方推荐
- 不告知用户有选择余地
确认后才开始部署,绝不假设或猜测参数。
执行部署
Step 1: 加载镜像(如需要)
docker load -i <IMAGE_TAR_PATH>
Step 2: 创建容器
bash scripts/create_container.sh \
--mode local \
--image <IMAGE> \
--model-path <MODEL_PATH> \
--container-name <CONTAINER_NAME>
远程部署: 添加 --mode remote --server <IP> --user <SSH_USER>
Step 3: 启动服务
优先尝试 vllm CLI:
vllm serve <MODEL_PATH> --tensor-parallel-size <TP> ...
CLI 失败时(如 ModuleNotFoundError),使用 Python 模块:
python -m vllm.entrypoints.openai.api_server --model <MODEL_PATH> ...
Step 4: 监控启动 ⚠️ 必须执行
问题: 后台启动服务后,exec 会超时,无法持续监控
方案: 创建 cron job 定期检查,结果通过 sessions_send 通知用户
流程:
1. 启动服务(后台)
2. 创建 cron job(每分钟检查)
3. 告知用户"启动中,完成后自动通知"
4. Cron job 检测到结果 → sessions_send 通知 → 删除 job
创建 cron job: ⚠️ 必须包含完整上下文
Cron job 在 isolated session 运行,没有父会话上下文,必须明确指定所有信息:
cron(action="add", job={
"name": "vllm-status-check",
"schedule": {"kind": "every", "everyMs": 60000},
"payload": {"kind": "agentTurn", "message": """检查 vLLM 服务状态:
服务器: <SERVER_IP>
容器名: <CONTAINER_NAME>
端口: <PORT>
日志路径: <LOG_PATH> # 通常是 /tmp/vllm.log 或其他指定路径
服务地址: http://<SERVER_IP>:<PORT>/health
开始时间: <START_TIME>
检查步骤:
1. SSH 到服务器,执行 docker exec <CONTAINER_NAME> tail -50 <LOG_PATH>
2. curl http://<SERVER_IP>:<PORT>/health
3. 成功 → sessions_send 通知用户 → 删除此 job
4. 失败 → 检查日志错误,超时则报错
"""},
"sessionTarget": "isolated"
})
禁止: 任务消息中省略日志路径、容器名、服务地址,会导致检查失败
Cron job 检测到结果后通知用户:
sessions_send(
sessionKey="agent:main:main", # 用户会话保持不变
message="✅ 启动成功!服务地址:...",
timeoutSeconds=0
)
Step 5: 验证部署
curl http://<SERVER_IP>:<PORT>/health
curl http://<SERVER_IP>:<PORT>/v1/models
部署后调用
服务地址:http://<SERVER_IP>:<PORT>
Python SDK:
from openai import OpenAI
client = OpenAI(base_url="http://<IP>:<PORT>/v1", api_key="not-needed")
response = client.chat.completions.create(
model="<model-name>",
messages=[{"role": "user", "content": "你好"}]
)
故障排查
常见问题:
No module named 'vllm.benchmarks.latency'→ 使用 Python 模块方式启动- 容器创建失败 → 检查 NPU 设备映射
- 服务启动失败 → 检查 HCCL 环境变量
- OOM → 降低 gpu-memory-utilization 或增加 TP
脚本说明
| 脚本 | 功能 |
|---|---|
scripts/create_container.sh |
创建容器(完整 NPU 配置) |
scripts/start_service.sh |
启动 vLLM 服务 |
scripts/monitor.sh |
服务监控 + WeLink 通知 |
scripts/api_test.py |
API 测试脚本 |
More from ascend/agent-skills
ascendc-operator-dev
AscendC算子端到端开发编排器。当用户需要开发新算子、实现自定义算子、或完成从需求到测试的完整流程时使用。关键词:算子开发、operator development、端到端、完整流程、工作流编排、新建算子。
56ascendc-operator-doc-gen
为AscendC算子生成PyTorch风格的接口文档(README.md)。触发场景:编译调试通过后需要生成接口文档,或用户提到"生成算子文档"、"创建README"、"文档化算子"、"帮我写文档"(算子上下文)、"算子文档"时使用。
55ascendc-operator-design
完成AscendC算子设计 - 帮助用户完成算子的架构设计、接口定义和性能规划。当用户提到算子设计、算子开发、tiling策略、内存规划、AscendC kernel设计、两级tiling、核间切分、核内切分时,使用此skill。
55ascendc-operator-precision-eval
AscendC算子精度评估。对已编译安装的算子生成全面的精度测试用例集(≥30例),运行并生成精度验证报告。关键词:精度测试、precision evaluation、精度报告、accuracy、误差分析。执行完成后 MUST 在当前对话中展示总览、失败摘要与关键发现,不得仅附报告路径。
54ascendc-operator-testcase-gen
完成AscendC算子验证用例生成 - 帮助用户完成testcase设计。当用户提到用例设计、泛化用例生成、算子标杆、UT用例、精度用例、性能用例时,使用此skill。
54ascendc-operator-project-init
初始化 AscendC 算子工程并创建可编译的算子骨架。触发场景:(1) 用户要求创建新算子;(2) 关键词:ascendc算子、新建算子、算子目录、算子初始化;(3) 需要基于 ascend-kernel 模板快速落地。本 skill 不只建目录,还输出“可继续开发”的标准文件与检查清单。
54