| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
引擎错误码透传客户端优化 && KV亲和调度多请求并发时,scheduler看全局DP负载而非TopK Co-authored-by: tobking<wangjun292@huawei.com> # message auto-generated for no-merge-commit merge: !304 merge sched-final-allocation-log into master 引擎错误码透传客户端优化 && KV亲和调度多请求并发时,scheduler看全局DP负载而非TopK Created-by: tobking Commit-by: tobking Merged-by: towncharlie Description: ## **1. 合入背景** > 请描述为什么要做这个PR内的改动。\ > 如涉及,请关联前序PR或同特性/需求下的其他PR。\ > 如果是修复之前PR引入的问题,请关联引入问题的PR。\ > 请通过#ISSUE ID关联issue。\ > 注意: Fixes #ISSUE ID会自动关闭issue,如问题部分解决请不要使用Fixes,可以用Fix part of #ISSUE ID替代. [#183](https://gitcode.com/Ascend/MindIE-PyMotor/issues/183) ## **2. 修改内容** > 请<ins>**描述修改内容的具体实现**</ins>,涉及哪些组件之间进行交互,可以用1、2、3、...进行罗列。 > 如果是需求或者重构类的PR,需要<ins>**补充详细设计文档**</ins>(说明上下游组件关系、时序图、类图、DFX能力等内容)。 1. 删除内部错误码500,改为透传引擎侧真实错误码 2.流式请求,在与D\P真实握手后,再返回客户端状态码 3. kv亲和调度,当多请求同时到达,scheduler server在check时,根据全局负载选择加权,而不是top K. ## **3. 资料变更** > 请确认<ins>**是否涉及资料变更**</ins>。\ > 如涉及,需要在PR中体现,并简要说明修改内容。\ > 如不涉及,需填写“不涉及”。 不涉及 ## **4. 接口变更** > 请确认<ins>**是否涉及跨代码仓或者客户面可见的接口变更**</ins>。\ > 如涉及,需详细说明接口以及对应的变更内容,同时需要在资料中体现。\ > 如不涉及,需填写“不涉及”。 不涉及 ## **5. 测试结果** > 需体现<ins>**测试场景,测试方法以及测试结果**</ins>。\ > 测试用例设计时需考虑硬件、部署方式、功能、性能、精度、显存等维度。 ## **6. CheckList** > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] [ ] 代码注释完备 [ ] 正确记录维测日志 [ ] 是否有UT用例 [ ] 若涉及多线程场景,考虑了并发场景,不存在死锁问题 See merge request: Ascend/MindIE-PyMotor!304 | 1 个月前 | |
【重构】EngineServer重构&EngineServer对接SGLang Co-authored-by: ganglv<lvgang1@huawei.com> # message auto-generated for no-merge-commit merge: !36 merge pymotor_master_refactor_sglang into master 【重构】EngineServer重构&EngineServer对接SGLang Created-by: ganglv Commit-by: ganglv Merged-by: towncharlie Description: ## **1. 合入背景** > 请描述为什么要做这个PR内的改动。\ > 如涉及,请关联前序PR或同特性/需求下的其他PR。\ > 如果是修复之前PR引入的问题,请关联引入问题的PR。\ > 请通过#ISSUE ID关联issue。\ > 注意: Fixes #ISSUE ID会自动关闭issue,如问题部分解决请不要使用Fixes,可以用Fix part of #ISSUE ID替代. ## **2. 修改内容** > 请<ins>**描述修改内容的具体实现**</ins>,涉及哪些组件之间进行交互,可以用1、2、3、...进行罗列。 > 如果是需求或者重构类的PR,需要<ins>**补充详细设计文档**</ins>(说明上下游组件关系、时序图、类图、DFX能力等内容)。 ## **3. 资料变更** > 请确认<ins>**是否涉及资料变更**</ins>。\ > 如涉及,需要在PR中体现,并简要说明修改内容。\ > 如不涉及,需填写“不涉及”。 ## **4. 接口变更** > 请确认<ins>**是否涉及跨代码仓或者客户面可见的接口变更**</ins>。\ > 如涉及,需详细说明接口以及对应的变更内容,同时需要在资料中体现。\ > 如不涉及,需填写“不涉及”。 ## **5. 测试结果** > 需体现<ins>**测试场景,测试方法以及测试结果**</ins>。\ > 测试用例设计时需考虑硬件、部署方式、功能、性能、精度、显存等维度。 ## **6. CheckList** > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] [ ] 代码注释完备 [ ] 正确记录维测日志 [ ] 是否有UT用例 [ ] 若涉及多线程场景,考虑了并发场景,不存在死锁问题 See merge request: Ascend/MindIE-PyMotor!36 | 4 个月前 | |
[feature] EngineServer支持原生命令拉起vLLM或SGLang Co-authored-by: zhoujing101<zhoujing101@huawei.com> Co-authored-by: gitcode-bot<noreply@gitcode.com> # message auto-generated for no-merge-commit merge: !399 merge EPD_2 into master [feature] EngineServer支持原生命令拉起vLLM或SGLang Created-by: zhoujing101 Commit-by: zhoujing101;gitcode-bot Merged-by: towncharlie Description: ## **1. 合入背景** [#234](https://gitcode.com/Ascend/MindIE-PyMotor/issues/234) 当前 EngineServer CLI 启动 vLLM/SGLang 时采用侵入式(in-process)方式,引擎以 Python 库的形式嵌入到 MindIE 进程中运行。这种方式耦合较紧,不利于独立调试和问题定位。 现新增**原生启动模式**:通过常量 NATIVE_LAUNCH_ENABLED 控制,当设置为 True 时,引擎通过原生命令(vllm serve ... / python3 -m sglang.launch_server ...)以子进程方式启动,拉起参数与侵入式模式保持一致。同时保留管理端口(MgmtEndpoint)的健康检查和指标采集能力。 ## **2. 修改内容** ### 2.1 接口层:IConfig 新增 get_cli_args 方法 **涉及文件:** motor/engine_server/core/config.py 在 IConfig 抽象接口中新增方法 get_cli_args() -> list[str],返回适用于原生 CLI 启动的参数列表。 ### 2.2 vLLM 引擎:实现 get_cli_args **涉及文件:** motor/engine_server/core/vllm/vllm_config.py 通过 _get_param_list() 获取 vLLM CLI 参数列表,供原生 vllm serve 命令使用。 ### 2.3 SGLang 引擎:实现 get_cli_args **涉及文件:** motor/engine_server/core/sglang/sglang_config.py 通过 _get_param_list() 获取 SGLang CLI 参数列表,供原生 python3 -m sglang.launch_server 命令使用。 ### 2.4 CLI 主入口:新增原生启动逻辑 **涉及文件:** motor/engine_server/cli/main.py | 变更项 | 说明 | |--------|------| | 新增常量 NATIVE_LAUNCH_ENABLED | 布尔常量,False 时走侵入式路径(向后兼容),设为 True 启用原生启动 | | 新增函数 _build_native_launch_cmd | 根据 engine_type 构建原生命令:vllm serve <args> / python3 -m sglang.launch_server <args> | | 新增函数 _run_native | 通过 subprocess.Popen 启动子进程,注册 SIGTERM/SIGINT 信号转发给子进程,退出时恢复旧信号处理器 | | 新增函数 _run_native_mode | 封装原生启动完整生命周期:MgmtEndpoint + 子进程 + 清理 | | 新增函数 _log_safe_cmd | 使用 shlex.quote() 安全格式化命令用于日志输出 | | 修改 main() | 判断 NATIVE_LAUNCH_ENABLED,原生模式下通过 _run_native_mode 统一管理各组件生命周期 | **信号处理安全增强:** - 注册信号前保存旧处理器,process.wait() 退出后在 finally 块中恢复,避免影响上层调用者 **原生启动流程:** main() ├─ 解析配置 (ConfigFactory.parse) ├─ _run_native_mode(endpoint_config, config) │ ├─ 创建 MgmtEndpoint 并 run() (管理端口在守护线程中运行) │ ├─ _run_native(config) │ │ ├─ 构建原生命令: vllm serve ... │ │ ├─ subprocess.Popen 启动子进程 │ │ ├─ 保存旧信号处理器,注册 SIGTERM/SIGINT → 转发给子进程 │ │ ├─ process.wait() 阻塞等待 │ │ └─ 恢复旧信号处理器 │ └─ finally: mgmt_endpoint.shutdown()清理 └─ return ### 2.5 测试前置:conftest **新增文件:** tests/engine_server/cli/conftest.py 仅安装 vllm 模块 fakes(其他测试不会导入 vllm),避免全局 sys.modules 污染。 ### 2.6 功能测试用例 **新增文件:** tests/engine_server/cli/test_main_native_launch.py 共 12 个测试用例,覆盖命令构建、原生路由、子进程启动三部分。路由测试通过 patch.object 直接修改 NATIVE_LAUNCH_ENABLED 常量进行测试。 ### 2.7 启用方式 | 方式 | 行为 | |------|------| | NATIVE_LAUNCH_ENABLED = False(默认) | 侵入式 in-process 启动(向后兼容) | | NATIVE_LAUNCH_ENABLED = True | 原生 CLI 子进程启动,同时运行管理端口 | ### 2.8 安全加固 | 措施 | 说明 | |------|------| | engine_type whitelist | 仅允许 vllm / sglang 作为引擎类型 | | subprocess.Popen list 模式 | 无 shell=True,参数以字面量传递,不被 shell 解释 | | _log_safe_cmd() | 日志中使用 shlex.quote() 转义含空格的参数,防止日志注入 | | 信号处理器 save/restore | signal.signal() 保存旧处理器,finally 块恢复,避免干扰上层调用方 | ## **3. 资料变更** 不涉及。 ## **4. 接口变更** 不涉及。 ## **5. 测试结果** **12/12 passed** · Python 3.11.15 · pytest 9.0.2 | 测试类 | 用例数 | 覆盖内容 | 结果 | |--------|--------|----------|------| | TestBuildNativeLaunchCmd | 6 | _build_native_launch_cmd: vLLM/SGLang 命令结构、空参数、不支持引擎 | ✅ | | TestMainNativeLaunchRouting | 3 | main() 路由:NATIVE_LAUNCH_ENABLED=True → 原生、False → 侵入式 | ✅ | | TestRunNative | 3 | _run_native: Popen 调用参数、信号注册与恢复、wait 阻塞 | ✅ | ## **6. CheckList** > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] [x] 代码注释完备 [x] 正确记录维测日志 [x] 是否有UT用例 [x] 若涉及多线程场景,考虑了并发场景,不存在死锁问题 See merge request: Ascend/MindIE-PyMotor!399 | 30 天前 | |
Coordinate引擎侧差异归一化重构 Co-authored-by: wenjinhust<wenjin.sh@huawei.com> Co-authored-by: tobking<wangjun292@huawei.com> # message auto-generated for no-merge-commit merge: !242 merge dev2606/br_ma_dis_engine_decoupling/0608 into master Coordinate引擎侧差异归一化重构 Created-by: wenjinhust Commit-by: wenjinhust;tobking Merged-by: towncharlie Description: ## **1. 合入背景** > 请描述为什么要做这个PR内的改动。\ > 如涉及,请关联前序PR或同特性/需求下的其他PR。\ > 如果是修复之前PR引入的问题,请关联引入问题的PR。\ > 请通过#ISSUE ID关联issue。\ > 注意: Fixes #ISSUE ID会自动关闭issue,如问题部分解决请不要使用Fixes,可以用Fix part of #ISSUE ID替代. Fix part of [#100](https://gitcode.com/Ascend/MindIE-PyMotor/issues/100) ## **2. 修改内容** > 请<ins>**描述修改内容的具体实现**</ins>,涉及哪些组件之间进行交互,可以用1、2、3、...进行罗列。 > 如果是需求或者重构类的PR,需要<ins>**补充详细设计文档**</ins>(说明上下游组件关系、时序图、类图、DFX能力等内容)。 - CPCD/CDP模式处理下沉到engine_server - Coordinator支持故障请求重调度 ## **3. 资料变更** > 请确认<ins>**是否涉及资料变更**</ins>。\ > 如涉及,需要在PR中体现,并简要说明修改内容。\ > 如不涉及,需填写“不涉及”。 - 不涉及 ## **4. 接口变更** > 请确认<ins>**是否涉及跨代码仓或者客户面可见的接口变更**</ins>。\ > 如涉及,需详细说明接口以及对应的变更内容,同时需要在资料中体现。\ > 如不涉及,需填写“不涉及”。 - 不涉及 ## **5. 测试结果** > 需体现<ins>**测试场景,测试方法以及测试结果**</ins>。\ > 测试用例设计时需考虑硬件、部署方式、功能、性能、精度、显存等维度。 - 测试以下场景,测试结果符合预期: | 项目 | 测试场景 | 测试结果 | | --- | --- | --- | | 部署模式 | CPCD、CDP | 已覆盖 | | 推理接口 | chat接口、completions接口 | 已覆盖| | stream参数 | true、false | 已覆盖 | | 正常场景 | 简单报文、携带return_token_ids | 符合预期 | | 故障场景 | P故障、D故障、D输出若干token后故障 | 符合预期 | ## **6. CheckList** > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] [x] 代码注释完备 [x] 正确记录维测日志 [x] 是否有UT用例 [x] 若涉及多线程场景,考虑了并发场景,不存在死锁问题 See merge request: Ascend/MindIE-PyMotor!242 | 1 个月前 | |
[refractor] 提取http相关公共文件,简化utils文件夹内文件数量 Co-authored-by: 吕有辉<lvyouhui@huawei.com> # message auto-generated for no-merge-commit merge: !55 merge master into master [refractor] 提取http相关公共文件,简化utils文件夹内文件数量 Created-by: codeDogPro Commit-by: 吕有辉 Merged-by: towncharlie Description: ## **1. 合入背景** https://gitcode.com/Ascend/MindIE-PyMotor/issues/47 ## **2. 修改内容** 提取utils函数,汇聚目录 ## **3. 资料变更** 涉及 ## **4. 接口变更** 不涉及 ## **5. 测试结果** 服务能正常拉起 ## **6. CheckList** > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] [x] 代码注释完备 [x] 正确记录维测日志 [x] 是否有UT用例 [x] 若涉及多线程场景,考虑了并发场景,不存在死锁问题 See merge request: Ascend/MindIE-PyMotor!55 | 3 个月前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 1 个月前 | ||
| 4 个月前 | ||
| 30 天前 | ||
| 1 个月前 | ||
| 3 个月前 |