| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
支持引擎原生方式拉起:Coordinator 支持独立部署 Co-authored-by: tobking<wangjun292@huawei.com> # message auto-generated for no-merge-commit merge: !771 merge feat/coordinator-standalone-deploy-guide into master 支持引擎原生方式拉起:Coordinator 支持独立部署 Created-by: tobking Commit-by: tobking Merged-by: towncharlie Description: ## **1. 合入背景** 引擎改为由 NodeManager 原生拉起 vLLM/SGLang、Engine Server 下线后,Endpoint、配置及注册路径中仍残留不再使用的 mgmt_port 控制面字段。同时,已有原生 Prefill/Decode 引擎的用户需要一种不依赖 Controller、NodeManager 和 Kubernetes、仅部署 Coordinator 的 PD 调度方式。 本 PR 清理废弃字段,补齐 Coordinator 独立部署、实例管理和管理面安全能力,并根据检视意见加固实例注册一致性。 关联 ISSUE:#394。 ## **2. 修改内容** 1. **清理废弃控制面字段** - 从 Endpoint、配置、NodeManager 注册/心跳、Controller 组装及相关测试中删除 mgmt_port / mgmt_ports。 - Endpoint 不再吞掉未知参数;mgmt_port、拼写错误字段等直接校验失败。 - Controller、Coordinator、NodeManager 需同步升级,不支持混合版本。 2. **Coordinator 独立部署与注册 CLI** - 新增 python3 -m motor.coordinator.register,支持 set、add、del、list。 - 实例 ID 使用独立高位命名空间,由 role 与排序后的完整 endpoint 组派生;endpoint 输入顺序不影响 ID、job name 和 endpoint ID。 - CLI 提交前查询 GET /instances 检查已有冲突;按 endpoint 或 ID 删除时先获取真实注册身份,未知 ID 拒绝删除。 - /v1/models 返回空列表时判定为不健康;可通过 --no-health-check 显式跳过探测。 3. **实例管理一致性加固** - InstanceManager 在全部角色和状态池中保证实例 ID 全局唯一。 - SET 请求内重复 ID 返回 400;ADD 的同 ID 异身份冲突返回 409;DEL 校验角色、名称和 endpoint 身份。 - Scheduler 接受刷新后才更新管理面镜像,避免两侧状态不一致。 - endpoint 匹配改为顺序无关,并通过惰性导出消除 Coordinator models/domain 循环导入。 4. **Controller 最终一致性兜底** - ADD、DEL、PAUSE、RESUME 增量刷新失败时,合并排队一次全量 SET 对账。 - SET 失败不递归排队,也不更新已同步指纹。 5. **管理面安全与可观测性** - 新增 GET /instances,汇总 available、unavailable、paused 实例摘要。 - 管理面支持独立 API Key 文件;对外监听时可使用 X-Motor-Management-Key 保护管理接口。 - 独立部署主流程默认监听 127.0.0.1,跨主机、Docker、Kubernetes 监听和 API Key 配置移至附录。 6. **依赖约束** - 对齐 grpcio/grpcio-tools/protobuf 生成与运行时版本。 - FastAPI 最低版本提升至 0.100.0;Pydantic 限定为 >=2.0.0,<3.0.0。 ## **3. 资料变更** 涉及资料变更: - 新增 docs/zh/user_guide/deployment/standalone.md,并补充部署导航入口。 - 管理接口文档补充 GET /instances、管理 API Key 和同步升级要求。 - 配置参考、NodeManager、Controller、Coordinator 开发资料同步删除废弃字段并说明注册一致性机制。 ## **4. 接口变更** 涉及客户面可见接口变更: - Endpoint 注册协议删除 mgmt_port,未知字段严格拒绝;所有组件必须同步升级。 - Coordinator 管理面新增 GET /instances。 - Coordinator 管理面可配置独立 API Key,请求使用 X-Motor-Management-Key。 - 新增独立部署注册命令 python3 -m motor.coordinator.register。 ## **5. 测试结果** - Controller 事件兜底、注册 CLI、服务端实例冲突及删除校验联合回归:122 passed。 - Endpoint/Instance 严格字段校验:25 passed。 - 最终直接受影响测试复跑:49 passed。 - Ruff 静态检查及 git diff --check 通过。 - 本次改动集中在管理面、注册和资料路径,不涉及模型精度、显存或硬件性能变化。 ## **6. CheckList** [x] 代码注释完备 [x] 正确记录维测日志 [x] 是否有 UT 用例 [x] 若涉及多线程场景,考虑了并发场景,不存在死锁问题 See merge request: Ascend/MindIE-Motor!771 | 5 天前 | |
[Featture]Add session_control to AgentHint Co-authored-by: xavier_zw<xavier.zengwei@huawei.com> # message auto-generated for no-merge-commit merge: !737 merge session_control into master [Featture]Add session_control to AgentHint Created-by: xavier_zw Commit-by: xavier_zw Merged-by: towncharlie Description: ## **1. 合入背景** 本 PR 在 agent_hint 中新增 session_control 能力,用于表达会话生命周期控制意图。核心逻辑是在 motor/coordinator/domain/agent_hint.py 中新增 SessionControl 模型与解析函数,并提供 apply_session_control_autofill 将 pause / stop / compact / resume 等操作转换为面向 session 的 context_management 管理请求,同时保持 session_control 与 context_management 互斥;在请求分发链路中先执行自动填充,再解析并注入最小消息占位;在 OpenAI 请求校验中允许带 session_control 的空消息请求绕过非空校验。 关联ISSUE:[#484](https://gitcode.com/Ascend/MindIE-Motor/issues/484) 当前AgentHint特性仅支持OpenAI API,对于Anthropic API暂未支持 ## **2. 修改内容** - 新增 SessionControl 模型与类型白名单:在 agent_hint.py 中新增 SessionControl 模型及 _SESSION_CONTROL_TYPES_ALLOWED(start / pause / stop / compact / resume)和 _SESSION_CONTROL_EDIT_TYPES 映射,非法 type 会触发校验失败或丢弃。 - 新增 apply_session_control_autofill 自动填充逻辑:将 agent_hint.session_control 的 pause / stop / compact / resume 分别转换为 session 目标的 offload / evict / evict / prefetch 管理请求;start 不注入任何上下文操作,且当 context_management 同时存在时保留后者并丢弃 session_control。 - 调整请求分发调用顺序:在 dispatch.py 中于 parse_agent_hint 之前调用 apply_session_control_autofill(request_json),使自动填充的 context_management 对后续解析和消息注入可见。 - 放宽空消息请求校验:在 inference_server.py 的 _validate_openai_request 中,通过新增的 session_control_implies_manage_request 判断,允许 pause / stop / compact / resume 类型的空消息请求绕过非空校验,而 start 及冲突场景仍按原逻辑拒绝。 - 补充单元与接口测试:在 test_agent_hint.py 和 test_http_server.py 中新增针对 SessionControl 校验、自动填充、互斥冲突、非法类型丢弃、空消息校验绕过等场景的测试用例。 ## **3. 资料变更** 不涉及 ## **4. 接口变更** 不涉及 ## **5. 测试结果** 当前需求是对AgentHint字段的扩展,主要是新增一层session_control- >context_management的转换,对contex_management的性能测试结果参考[[Feature]Add AgentHint feature for agent inference](https://gitcode.com/Ascend/MindIE-Motor/pull/692)。本次只针对session_control做基本的功能UT测试,UT测试结果:  ## **6. CheckList** > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] [x] 代码注释完备 [x] 正确记录维测日志 [x] 是否有UT用例 [x] 若涉及多线程场景,考虑了并发场景,不存在死锁问题 See merge request: Ascend/MindIE-Motor!737 | 12 天前 | |
[Feature]Add AgentHint feature for agent inference Co-authored-by: xavier_zw<xavier.zengwei@huawei.com> # message auto-generated for no-merge-commit merge: !692 merge master into master [Feature]Add AgentHint feature for agent inference Created-by: xavier_zw Commit-by: xavier_zw Merged-by: tobking Description: ## **1. 合入背景** 本 PR 为 Agent 推理引入 AgentHint 特性,允许客户端通过请求体中的 agent_hint 字段传递会话管理、KV 缓存控制和上下文编辑等提示信息。核心变更包括:新增 AgentHintInfo 等 Pydantic 数据模型用于解析和规范化客户端输入;新增 block_offset_translator 模块将消息级索引转换为 PagedAttention 块坐标;在请求验证、分发和调度链路中集成 agent_hint 的解析与块偏移附加逻辑,使调度器能够感知会话亲和性和上下文编辑意图。 关联 ISSUE:[#463](https://gitcode.com/Ascend/MindIE-Motor/issues/463) ## **2. 修改内容** - 新增 agent_hint.py 数据模型模块:定义 AgentHintInfo、CacheControl、ContextEdit、ContextManagement 等 Pydantic 模型,以及 parse_agent_hint() 解析函数和 _resolve_session_ids() 会话 ID 规范化逻辑,支持从请求体与 HTTP 头中联合解析 session 标识 - 新增 block_offset_translator.py 块偏移转换模块:实现 BaseBlockOffsetCalculator 抽象基类及 Dsv4BlockOffsetCalculator / StandardBlockOffsetCalculator 两个模型族计算器,通过 attach_block_offsets() 将 CacheControl.msg_offset 和 ContextEdit.start/end 转换为 PagedAttention 的 block_offset、intra_block_offset、token_offset 坐标 - 修改请求验证逻辑以支持 session-targeted 编辑:在 inference_server.py 中新增 _has_session_target_edit() 辅助函数,将 _validate_openai_request 的空消息列表校验拆分为两种错误信息,允许存在 session 目标编辑时消息列表为空 - 在请求分发链路中集成 agent_hint 解析:在 dispatch.py 的 __create_request_info 中调用 ensure_minimum_messages_for_session_edits() 和 parse_agent_hint(),将解析结果注入 RequestInfo.agent_hint_info 字段 - 在调度策略中集成块偏移附加:在 kv_cache_affinity.py 的 KvCacheAffinityPolicy 中于消息编码后调用 attach_block_offsets(),并在 TokenizerManager 中暴露 is_dsv4 属性以支持 tokenizer 类型判定 ## **3. 资料变更** 对原有功能资料不涉及变更 ## **4. 接口变更** 对原有接口功能不涉及变更 ## **5. 测试结果** ### 测试场景1 - 环境:A3 8卡,qwen3-235B - 测试内容:对比开关AgentHint,测试JiuwenSwarm Agent,先启动session 1,然后offload session 1的KVC,接着启动多个session 2-N,回到session 1,prefetch session 1的KVC,最后在session 1上进行1次新请求推理 - 测试结果 | 指标 | AgentHint OFF | AgentHint ON | ON 相对 OFF | |------|--------------|-------------|-------------| | 首 Token 延迟 (TTFT) | 11,623.54 ms | 2,054.92 ms | 降低 9,568.62 ms (82.32%) | | 每 Token 生成时间 (TPOT) | 36.47 ms | 35.51 ms | 降低 0.96 ms (2.63%) | | 请求端到端延迟 (Request E2E) | 35,483.35 ms | 5,871.63 ms | 降低 29,511.72 ms (71.90%) | | Prompt tokens | 66,196 | 53,243 | 减少 12,953 (19.46%) | | Cached tokens | 5,504 | 51,968 | 增加 46,464 | | 请求级 KVC 命中率 | 8.33% | 97.61% | 提升 89.29 个百分点 | | 需要重新 prefill 的 tokens | 60,602 | 1,275 | 减少 59,327 (97.90%) | ### 测试场景2 - 环境:A3 8卡,deepseek v4 flash - 测试内容:并发启动10个session,每个session结束后,开启AgentHint场景进行主动evict - 关闭AgentHint时的结果 | 指标 | 数值 | |------|------| | 有效请求数 | 10 | | TTFT 均值 | 8.0323s | | TTFT P50 | 6.8542s | | TTFT P90 | 10.7152s | | TPOT 均值 | 0.2209s/token | | TPOT P50 | 0.2298s/token | | TPOT P90 | 0.2743s/token | - 开启AgentHint+主动evict结果 | 指标 | 数值 | |------|------| | 有效请求数 | 10 | | TTFT 均值 | 5.5182s | | TTFT P50 | 3.3983s | | TTFT P90 | 14.4788s | | TPOT 均值 | 0.2106s/token | | TPOT P50 | 0.2038s/token | | TPOT P90 | 0.2459s/token | ## **6. CheckList** > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] [x] 代码注释完备 [x] 正确记录维测日志 [x] 是否有UT用例 [x] 若涉及多线程场景,考虑了并发场景,不存在死锁问题 See merge request: Ascend/MindIE-Motor!692 | 18 天前 | |
修复故障实例熔断时间过长 Co-authored-by: WZN-JJB<wuzhineng@huawei.com> # message auto-generated for no-merge-commit merge: !715 merge circuit_toolong_fix into master 修复故障实例熔断时间过长 Created-by: qq_46749096 Commit-by: WZN-JJB Merged-by: tobking Description: ## **1. 合入背景** 当前存在两个实例故障场景下的问题: 1. 实例异常(如 pod 删除、IP 释放导致 TCP 黑洞)时,请求连接建立依赖内核 SYN 重试(约 63s 才失败),远超客户端超时,导致请求直接超时失败而非快速触发熔断降级; 2. 熔断恢复定时器到点后直接闭合熔断,若实例实际未恢复,请求会再次被派发进黑洞地址,反复超时。 关联 ISSUE:#470 ## **2. 修改内容** 1. **连接超时收敛(router 层)**: BaseRouter 新增 _build_request_timeout(),使用 exception_config.connect_timeout(默认 5s,取 0 保持原行为)单独约束 TCP connect 阶段,读写/总超时语义不变;流式与非流式两条转发路径均生效。引擎黑洞时请求快速失败 → 熔断及时再跳闸 → hybrid 降级按时接管。 2. **熔断解除前探活(scheduler 层)**:_auto_recover 定时器到点后不再直接闭合熔断,先执行 _probe_instance() 对实例业务端口做 TCP connect 探活(2s 超时),探活成功才 auto_recover 闭合。 3. **探活失败退避(熔断域)**:新增 CircuitBreakerManager.process_probe_failure(),探活失败时保持熔断打开,恢复超时按 trip_count 指数退避(30s 起、2 倍递增、封顶 300s),并重新调度恢复任务。 涉及文件: - motor/coordinator/domain/circuit_breaker.py(新增 process_probe_failure) - motor/coordinator/router/strategies/base.py(新增 _build_request_timeout) - motor/coordinator/scheduler/runtime/scheduler_server.py(新增 _probe_instance,改造 _auto_recover) ## **3. 资料变更** 不涉及。 ## **4. 接口变更** 不涉及(均为内部实现变更;connect_timeout 配置项此前已合入,未新增外部接口)。 ## **5. 测试结果** [MindIE-Motor 熔断修复验证测试报告](https://wiki.huawei.com/domains/123696/wiki/385355/WIKI2026081212268325) ## **6. CheckList** [x] 代码注释完备 [x] 正确记录维测日志 [x] 是否有UT用例 [x] 若涉及多线程场景,考虑了并发场景,不存在死锁问题(asyncio 单线程事件循环,定时器替换逻辑已处理) See merge request: Ascend/MindIE-Motor!715 | 16 天前 | |
支持引擎原生方式拉起:Coordinator 支持独立部署 Co-authored-by: tobking<wangjun292@huawei.com> # message auto-generated for no-merge-commit merge: !771 merge feat/coordinator-standalone-deploy-guide into master 支持引擎原生方式拉起:Coordinator 支持独立部署 Created-by: tobking Commit-by: tobking Merged-by: towncharlie Description: ## **1. 合入背景** 引擎改为由 NodeManager 原生拉起 vLLM/SGLang、Engine Server 下线后,Endpoint、配置及注册路径中仍残留不再使用的 mgmt_port 控制面字段。同时,已有原生 Prefill/Decode 引擎的用户需要一种不依赖 Controller、NodeManager 和 Kubernetes、仅部署 Coordinator 的 PD 调度方式。 本 PR 清理废弃字段,补齐 Coordinator 独立部署、实例管理和管理面安全能力,并根据检视意见加固实例注册一致性。 关联 ISSUE:#394。 ## **2. 修改内容** 1. **清理废弃控制面字段** - 从 Endpoint、配置、NodeManager 注册/心跳、Controller 组装及相关测试中删除 mgmt_port / mgmt_ports。 - Endpoint 不再吞掉未知参数;mgmt_port、拼写错误字段等直接校验失败。 - Controller、Coordinator、NodeManager 需同步升级,不支持混合版本。 2. **Coordinator 独立部署与注册 CLI** - 新增 python3 -m motor.coordinator.register,支持 set、add、del、list。 - 实例 ID 使用独立高位命名空间,由 role 与排序后的完整 endpoint 组派生;endpoint 输入顺序不影响 ID、job name 和 endpoint ID。 - CLI 提交前查询 GET /instances 检查已有冲突;按 endpoint 或 ID 删除时先获取真实注册身份,未知 ID 拒绝删除。 - /v1/models 返回空列表时判定为不健康;可通过 --no-health-check 显式跳过探测。 3. **实例管理一致性加固** - InstanceManager 在全部角色和状态池中保证实例 ID 全局唯一。 - SET 请求内重复 ID 返回 400;ADD 的同 ID 异身份冲突返回 409;DEL 校验角色、名称和 endpoint 身份。 - Scheduler 接受刷新后才更新管理面镜像,避免两侧状态不一致。 - endpoint 匹配改为顺序无关,并通过惰性导出消除 Coordinator models/domain 循环导入。 4. **Controller 最终一致性兜底** - ADD、DEL、PAUSE、RESUME 增量刷新失败时,合并排队一次全量 SET 对账。 - SET 失败不递归排队,也不更新已同步指纹。 5. **管理面安全与可观测性** - 新增 GET /instances,汇总 available、unavailable、paused 实例摘要。 - 管理面支持独立 API Key 文件;对外监听时可使用 X-Motor-Management-Key 保护管理接口。 - 独立部署主流程默认监听 127.0.0.1,跨主机、Docker、Kubernetes 监听和 API Key 配置移至附录。 6. **依赖约束** - 对齐 grpcio/grpcio-tools/protobuf 生成与运行时版本。 - FastAPI 最低版本提升至 0.100.0;Pydantic 限定为 >=2.0.0,<3.0.0。 ## **3. 资料变更** 涉及资料变更: - 新增 docs/zh/user_guide/deployment/standalone.md,并补充部署导航入口。 - 管理接口文档补充 GET /instances、管理 API Key 和同步升级要求。 - 配置参考、NodeManager、Controller、Coordinator 开发资料同步删除废弃字段并说明注册一致性机制。 ## **4. 接口变更** 涉及客户面可见接口变更: - Endpoint 注册协议删除 mgmt_port,未知字段严格拒绝;所有组件必须同步升级。 - Coordinator 管理面新增 GET /instances。 - Coordinator 管理面可配置独立 API Key,请求使用 X-Motor-Management-Key。 - 新增独立部署注册命令 python3 -m motor.coordinator.register。 ## **5. 测试结果** - Controller 事件兜底、注册 CLI、服务端实例冲突及删除校验联合回归:122 passed。 - Endpoint/Instance 严格字段校验:25 passed。 - 最终直接受影响测试复跑:49 passed。 - Ruff 静态检查及 git diff --check 通过。 - 本次改动集中在管理面、注册和资料路径,不涉及模型精度、显存或硬件性能变化。 ## **6. CheckList** [x] 代码注释完备 [x] 正确记录维测日志 [x] 是否有 UT 用例 [x] 若涉及多线程场景,考虑了并发场景,不存在死锁问题 See merge request: Ascend/MindIE-Motor!771 | 5 天前 | |
删除coordinator中depoly mode冗余配置,可靠性加强 Co-authored-by: tobking<wangjun292@huawei.com> # message auto-generated for no-merge-commit merge: !272 merge br_decouple_add_0603 into master 删除coordinator中depoly mode冗余配置,可靠性加强 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替代. [#178](https://gitcode.com/Ascend/MindIE-PyMotor/issues/178) ## **2. 修改内容** > 请<ins>**描述修改内容的具体实现**</ins>,涉及哪些组件之间进行交互,可以用1、2、3、...进行罗列。 > 如果是需求或者重构类的PR,需要<ins>**补充详细设计文档**</ins>(说明上下游组件关系、时序图、类图、DFX能力等内容)。 删除coordinator的depoly_mode冗余配置,代码流程根据connector确认走CPCD还是CDP ## **3. 资料变更** > 请确认<ins>**是否涉及资料变更**</ins>。\ > 如涉及,需要在PR中体现,并简要说明修改内容。\ > 如不涉及,需填写“不涉及”。 userconfig中删除coordinator的depoly_mode ## **4. 接口变更** > 请确认<ins>**是否涉及跨代码仓或者客户面可见的接口变更**</ins>。\ > 如涉及,需详细说明接口以及对应的变更内容,同时需要在资料中体现。\ > 如不涉及,需填写“不涉及”。 不涉及 ## **5. 测试结果** > 需体现<ins>**测试场景,测试方法以及测试结果**</ins>。\ > 测试用例设计时需考虑硬件、部署方式、功能、性能、精度、显存等维度。 ## **6. CheckList** > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] [x] 代码注释完备 [x] 正确记录维测日志 [x] 是否有UT用例 [x] 若涉及多线程场景,考虑了并发场景,不存在死锁问题 See merge request: Ascend/MindIE-PyMotor!272 | 2 个月前 | |
删除coordinator中depoly mode冗余配置,可靠性加强 Co-authored-by: tobking<wangjun292@huawei.com> # message auto-generated for no-merge-commit merge: !272 merge br_decouple_add_0603 into master 删除coordinator中depoly mode冗余配置,可靠性加强 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替代. [#178](https://gitcode.com/Ascend/MindIE-PyMotor/issues/178) ## **2. 修改内容** > 请<ins>**描述修改内容的具体实现**</ins>,涉及哪些组件之间进行交互,可以用1、2、3、...进行罗列。 > 如果是需求或者重构类的PR,需要<ins>**补充详细设计文档**</ins>(说明上下游组件关系、时序图、类图、DFX能力等内容)。 删除coordinator的depoly_mode冗余配置,代码流程根据connector确认走CPCD还是CDP ## **3. 资料变更** > 请确认<ins>**是否涉及资料变更**</ins>。\ > 如涉及,需要在PR中体现,并简要说明修改内容。\ > 如不涉及,需填写“不涉及”。 userconfig中删除coordinator的depoly_mode ## **4. 接口变更** > 请确认<ins>**是否涉及跨代码仓或者客户面可见的接口变更**</ins>。\ > 如涉及,需详细说明接口以及对应的变更内容,同时需要在资料中体现。\ > 如不涉及,需填写“不涉及”。 不涉及 ## **5. 测试结果** > 需体现<ins>**测试场景,测试方法以及测试结果**</ins>。\ > 测试用例设计时需考虑硬件、部署方式、功能、性能、精度、显存等维度。 ## **6. CheckList** > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] [x] 代码注释完备 [x] 正确记录维测日志 [x] 是否有UT用例 [x] 若涉及多线程场景,考虑了并发场景,不存在死锁问题 See merge request: Ascend/MindIE-PyMotor!272 | 2 个月前 | |
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 | 2 个月前 | |
[feature] 支持引擎原生拉起: layerwise CDP调度模式适配 Co-authored-by: tobking<wangjun292@huawei.com> # message auto-generated for no-merge-commit merge: !773 merge master_0819 into master [feature] 支持引擎原生拉起: layerwise CDP调度模式适配 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替代. vLLM layerwise P/D 由 Decode 先接收请求,再通过 metaserver callback 触发 Prefill 和逐层 KV 传输。Coordinator 当前缺少完整的 Trigger 调度链路,无法保证 callback 回到持有原始请求状态的 Worker,也无法将异步 Prefill 纳入原请求的取消、重试和 workload 回收生命周期。 本改动补齐 vLLM concurrent_engine_sync 的端到端调度,并处理 callback 并发幂等、资源回滚以及 IPv4/IPv6 回调地址可达性。 [#503](https://gitcode.com/Ascend/MindIE-Motor/issues/503) ## **2. 修改内容** > 请<ins>**描述修改内容的具体实现**</ins>,涉及哪些组件之间进行交互,可以用1、2、3、...进行罗列。 > 如果是需求或者重构类的PR,需要<ins>**补充详细设计文档**</ins>(说明上下游组件关系、时序图、类图、DFX能力等内容)。 1)增加 vLLM P/D 协同模式选择: prefill_handoff_decode 继续使用现有 handoff 流程。 concurrent_engine_sync 使用 Trigger 流程,先分配并请求 Decode,再由 Decode callback 触发 Prefill。 对同一拓扑中 handoff/trigger 能力混用返回 HTTP 503。 2)增加 Trigger 协议适配: Decode 请求注入 do_remote_prefill 和 metaserver URL。 callback 携带的远端 block、host、port 参数转换为 Prefill 请求。 NodeManager 原生 vLLM backend 根据 layerwise 配置上报对应 dispatch capability。 3)增加每 Worker 独立 metaserver: 新增 inference_workers_config.worker_metaserver_base_port,默认 0 表示关闭。 Worker i 使用 base_port + i,独立 uvicorn app 仅暴露 POST /v1/metaserver。 callback 通过 request_id + attempt 找到发起 Decode 的同一 Worker 和当前 attempt。 4)完善 callback 生命周期: 使用 AttemptContext.trigger_lock 串行化并发 callback。 将 callback task 注册为 Prefill task,客户端断开、Decode 失败或 callback 取消时停止整个 attempt。 Prefill 已完成后的重复 callback 返回幂等成功,不重复分配实例。 Scheduler 分配成功但 Worker 本地 workload 登记失败时立即回滚。 ## **3. 资料变更** > 请确认<ins>**是否涉及资料变更**</ins>。\ > 如涉及,需要在PR中体现,并简要说明修改内容。\ > 如不涉及,需填写“不涉及”。 更新 P/D 分离设计文档,说明 vLLM layerwise Trigger 调度流程。 更新 Coordinator 开发文档,说明每 Worker metaserver、attempt 校验、callback 生命周期和地址选择。 更新配置参考及示例配置,说明 worker_metaserver_base_port 的用途和端口范围。 ## **4. 接口变更** > 请确认<ins>**是否涉及跨代码仓或者客户面可见的接口变更**</ins>。\ > 如涉及,需详细说明接口以及对应的变更内容,同时需要在资料中体现。\ > 如不涉及,需填写“不涉及”。 不涉及 ## **5. 测试结果** > 需体现<ins>**测试场景,测试方法以及测试结果**</ins>。\ > 测试用例设计时需考虑硬件、部署方式、功能、性能、精度、显存等维度。 ## **6. CheckList** > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] [x] 代码注释完备 [x] 正确记录维测日志 [x] 是否有UT用例 [ ] 若涉及多线程场景,考虑了并发场景,不存在死锁问题 See merge request: Ascend/MindIE-Motor!773 | 10 天前 | |
【feature】新增精度检测:基础设施与Controller自动恢复 Co-authored-by: wangyang<kevin.wangyang@huawei.com> # message auto-generated for no-merge-commit merge: !262 merge master into master 【feature】新增精度检测:基础设施与Controller自动恢复 Created-by: towncharlie Commit-by: wangyang 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!262 | 2 个月前 | |
Coordinator支持自熔断 Co-authored-by: WZN-JJB<wuzhineng@huawei.com> # message auto-generated for no-merge-commit merge: !438 merge circuit_628 into master Coordinator支持自熔断 Created-by: qq_46749096 Commit-by: WZN-JJB Merged-by: towncharlie Description: ## **1. 合入背景** > 请描述为什么要做这个PR内的改动。\ > 如涉及,请关联前序PR或同特性/需求下的其他PR。\ > 如果是修复之前PR引入的问题,请关联引入问题的PR。\ > 请通过#ISSUE ID关联issue。\ > 注意: Fixes #ISSUE ID会自动关闭issue,如问题部分解决请不要使用Fixes,可以用Fix part of #ISSUE ID替代. 在controller故障的情况下,coordinator要能自己感知实例故障,对实例进行隔离,从而能降级推理,完成请求。 增加coordinator自熔断机制,不依赖controller,熔断故障实例,在实例数量不足以进行pd分离推理时,降级为混部。 [#255](https://gitcode.com/Ascend/MindIE-PyMotor/issues/255) ## **2. 修改内容** > 请<ins>**描述修改内容的具体实现**</ins>,涉及哪些组件之间进行交互,可以用1、2、3、...进行罗列。 > 如果是需求或者重构类的PR,需要<ins>**补充详细设计文档**</ins>(说明上下游组件关系、时序图、类图、DFX能力等内容)。 pd分离、混部路由,scheduler server,inferenceworker ## **3. 资料变更** > 请确认<ins>**是否涉及资料变更**</ins>。\ > 如涉及,需要在PR中体现,并简要说明修改内容。\ > 如不涉及,需填写“不涉及”。 不涉及 ## **4. 接口变更** > 请确认<ins>**是否涉及跨代码仓或者客户面可见的接口变更**</ins>。\ > 如涉及,需详细说明接口以及对应的变更内容,同时需要在资料中体现。\ > 如不涉及,需填写“不涉及”。 不涉及 ## **5. 测试结果** > 需体现<ins>**测试场景,测试方法以及测试结果**</ins>。\ > 测试用例设计时需考虑硬件、部署方式、功能、性能、精度、显存等维度。 [Coordinator自熔断自验报告](https://wiki.huawei.com/domains/123696/wiki/385355/WIKI2026070611747916) ## **6. CheckList** > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] [ ] 代码注释完备 [ ] 正确记录维测日志 [ ] 是否有UT用例 [ ] 若涉及多线程场景,考虑了并发场景,不存在死锁问题 See merge request: Ascend/MindIE-PyMotor!438 | 1 个月前 | |
KV亲和场景,负载记账需要扣除已命中部分 & 删除P节点kv block负载因子,统一使用token Co-authored-by: tobking<wangjun292@huawei.com> # message auto-generated for no-merge-commit merge: !670 merge feat/workload-active-tokens-only into master KV亲和场景,负载记账需要扣除已命中部分 & 删除P节点kv block负载因子,统一使用token 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替代. [#395](https://gitcode.com/Ascend/MindIE-Motor/issues/395) ## **2. 修改内容** > 请<ins>**描述修改内容的具体实现**</ins>,涉及哪些组件之间进行交互,可以用1、2、3、...进行罗列。 > 如果是需求或者重构类的PR,需要<ins>**补充详细设计文档**</ins>(说明上下游组件关系、时序图、类图、DFX能力等内容)。 1.KV 亲和记账:Scheduler 最终选路后按 ISL − matched_tokens 提交负载 2.删除 active_kv_cache 因子,负载统一为 token 计量 ## **3. 资料变更** > 请确认<ins>**是否涉及资料变更**</ins>。\ > 如涉及,需要在PR中体现,并简要说明修改内容。\ > 如不涉及,需填写“不涉及”。 不涉及 ## **4. 接口变更** > 请确认<ins>**是否涉及跨代码仓或者客户面可见的接口变更**</ins>。\ > 如涉及,需详细说明接口以及对应的变更内容,同时需要在资料中体现。\ > 如不涉及,需填写“不涉及”。 不涉及 ## **5. 测试结果** > 需体现<ins>**测试场景,测试方法以及测试结果**</ins>。\ > 测试用例设计时需考虑硬件、部署方式、功能、性能、精度、显存等维度。 ## **6. CheckList** > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] [x] 代码注释完备 [ ] 正确记录维测日志 [ ] 是否有UT用例 [ ] 若涉及多线程场景,考虑了并发场景,不存在死锁问题 See merge request: Ascend/MindIE-Motor!670 | 25 天前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 5 天前 | ||
| 12 天前 | ||
| 18 天前 | ||
| 16 天前 | ||
| 5 天前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 10 天前 | ||
| 2 个月前 | ||
| 1 个月前 | ||
| 25 天前 |