Pull Request已成功合入, 合并人@wangyang
(感谢 高鹏 的贡献)变更摘要
本PR主要引入了 vllm_to_motor 全量配置转化工具,将 vLLM 启动脚本一键转换为 Motor 部署所需的 user_config.json 和 env.json。同时删除了 examples/infer_engines/vllm/models/ 下多个模型的静态配置文件(GLM、DeepSeek V3.1/V3.2/V4 Flash/V4 Pro、Qwen3 等),改为通过转换工具按需生成,避免与 vLLM 教程脚本内容重复、不一致的维护成本。此外在 deploy.py 中新增 general_config 模式入口,允许通过命令行直接调用转化工具。
主要改动
-
新增配置转化核心脚本
vllm_to_motor.py:独立脚本(1517行),不依赖 motor 包,支持 PD 混部(--deploy-scenario hybrid)和 PD 分离(--deploy-scenario separate)两种模式,解析 vLLM 启动脚本中的 CLI 参数和环境变量,自动推断 P/D 的data_parallel_size/tensor_parallel_size、按硬件平台(A2/A3)重算并行度并打包 Pod 布局,输出有序的user_config.json和env.json -
新增 vLLM 启动脚本模板:
run_dp_template_hybrid.sh、run_dp_template_prefill.sh、run_dp_template_decode.sh,作为配置转化的输入源;同时提供output_config/下的示例输出文件,展示基于 DeepSeek V4 Flash 的转化结果 -
删除多模型静态配置文件:移除
examples/infer_engines/vllm/models/下GLM/5、deepseek/v3_1、deepseek/v3_2、deepseek/v4/flash、deepseek/v4/pro、qwen/3/30b目录中的user_config.json和env.json,这些静态配置改为由转化工具按需生成 -
deploy.py新增general_config模式:在parse_arguments中新增--mode general_config、--deploy-scenario、--hardware-type、--weight-path、--image-name参数,通过handle_general_config函数以子进程方式调用vllm_to_motor.py,实现配置生成与部署流程的无缝集成


代码审查
审查总结
已完成对全部 9 个变更文件的审查,逐文件结论如下:
| 文件 | 审查结论 |
|---|---|
examples/deployer/README.md |
无问题 — 新增参数表和使用说明正确,相对链接有效 |
examples/deployer/config_tool/output_config/env.json |
无问题 — JSON 键名拼写正确,值为生成示例 |
examples/deployer/config_tool/output_config/user_config.json |
无问题 — JSON 键名拼写正确,值为生成示例 |
examples/deployer/config_tool/run_dp_template_decode.sh |
无问题 — vllm-ascend 社区模板脚本 |
examples/deployer/config_tool/run_dp_template_hybrid.sh |
无问题 — vllm-ascend 社区模板脚本 |
examples/deployer/config_tool/run_dp_template_prefill.sh |
无问题 — vllm-ascend 社区模板脚本 |
examples/deployer/config_tool/vllm_to_motor.py |
2 个 P3 问题(详见下方) |
examples/deployer/deploy.py |
无问题 — handle_general_config 参数传递安全,逻辑正确 |
examples/infer_engines/vllm/models/README.md |
无可报告问题 — 文档引导流程正确,无安全隐患 |
发现的问题
-
P3 × 2:均在
vllm_to_motor.py中- 第 1087 行:
kv_transfer_config处理分支末尾的continue位置不当,当strip_kv_extra_config=False时原始值被静默丢弃(当前调用路径未触发)。 - 第 1503 行:
main()中对已格式化的user_config重复调用format_user_config(),产生不必要的排序开销。
- 第 1087 行:
整体风险评估:低风险
核心转换逻辑(shell 解析、CLI 参数提取、并行度重映射、部署配置推断)经过仔细审查,未发现正确性问题。两个 P3 问题均为边缘情况(一个存在于当前未触发的代码路径,一个为性能优化建议),不影响当前功能正常使用。删除的旧静态配置与新增的自动生成方案在功能上无回归,deploy.py 的 general_config 模式集成安全可靠。
| 类型 | 数量 |
|---|---|
| 🔴 阻塞 | 0 |
| 🟡 建议 | 10 |
💬 仅评论


Thanks for your pull-request.
The full list of commands accepted by me can be found at here。
You can get sig-info at here
PR Approval Progress
✅ Congratulations! All modules have met the lgtm and approve requirements.
Module Approval Details
| module | lgtm status | approve status |
|---|---|---|
| repo-Ascend/MindIE-PyMotor | ✅ codeDogPro, xiao-qing123 (2/2) | ✅ codeDogPro (1/1) |
💡 Tip:
- Committer can comment
/approveor/lgtm- Commenting
/approveimplies both code review (lgtm) and intent to merge (approve)
CLA Signature Pass
weixin_63825906, thanks for your pull request. All authors of the commits have signed the CLA. 👍


| 阶段 | 任务名 | 状态 | 详情 |
|---|---|---|---|
| 编译构建 | Build_linux_arm | ✅ | >>> |
| 恶意代码检查 | Antipoison | ✅ | >>> |
| 编码安全与规范检查 | pre-commit | ✅ | >>> |
| 开源片段检查 | SCA | ✅ | >>> |
| 开发者测试 | UT_linux_arm | ✅ | >>> |
| 流水线 | PR-pipeline_MindIE-pyMotor_gitcode | ✅ | >>> |
- compile : 运行流水线
- retry : 重试流水线所有失败子任务
- retry <任务名> : 仅重试指定失败子任务
- stop : 停止流水线


/lgtm


1. 合入背景
原先 examples/infer_engines/vllm/models/ 下各模型目录维护了多份静态 user_config.json / env.json,与 vLLM 教程启动脚本内容重复,更新成本高且容易不一致。
本次改为配置按需生成:删除各模型目录下的典型静态配置,仅保留 README.md(模型说明)和 config_tool/(转换工具 + vLLM 启动脚本)。用户从 vLLM 脚本一键生成 Motor 配置,降低维护成本并保证与下游推理引擎配置一致。
Fixes #266
2. 修改内容
删除原有典型配置。
新增独立配置转换脚本 vllm_to_motor.py:可从 vLLM 启动脚本生成 user_config.json 和 env.json。
新增基于deepseek v4 flash的配置转化示例
新增使用说明文档README.md
3. 资料变更
4. 接口变更
5. 测试结果
6. CheckList
[ ] 代码注释完备
[ ] 正确记录维测日志
[ ] 是否有UT用例
[ ] 若涉及多线程场景,考虑了并发场景,不存在死锁问题