| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
[feature]增加告警清除逻辑 Co-authored-by: hxy<huxinyi9@huawei.com> # message auto-generated for no-merge-commit merge: !598 merge feat/hybrid-precision-detection into master [feature]增加告警清除逻辑 Created-by: hu-xinyi_555 Commit-by: hxy Merged-by: towncharlie Description: ## **1. 合入背景** 可见https://gitcode.com/Ascend/MindIE-Motor/issues/359 精度检测特性(前序合入 61b0475 [feature]支持混布场景的精度异常检测)已具备 **告警产生** 与 **auto-recovery 实例终止** 能力,但缺少完整的 **告警清除(CLEAR)闭环**: - auto-recovery 终止 P/D 实例后,OM 侧精度告警仍可能残留; - CCAE 手动下发 precision control 终止实例后,未同步清除对应 PD Group 告警; - 未开启 auto-recovery 时,实例恢复后无法通过连续正常检测自动清除活动告警; - Coordinator Scheduler 侧 alarm_active 状态无统一清理入口,影响后续同 PD Group 重复告警。 ## **2. 修改内容** 详细设计见:[docs/zh/design/fault_tolerance/precision_detection.md](../../pymotor/MindIE-PyMotor_8989/docs/zh/design/fault_tolerance/precision_detection.md)(告警清除章节) ### 2.1 三条清除路径 | 路径 | 触发方 | 行为 | |------|--------|------| | **auto-recovery 清除** | Controller | 精度 ALARM 触发终止 P/D 全部成功后,上报 CLEAR 至 OM,并通知 Coordinator 清理 Scheduler 活动状态 | | **CCAE 手动清除** | CCAE Reporter → Controller | 终止 P/D 时携带 precision_alarm_clear=true,复用统一恢复入口清除 OM 告警 + 通知 Coordinator | | **连续正常清除** | Coordinator | 活动告警下连续 precision_clear_threshold(默认 10)次有效正常检测后,上报 CLEAR | ### 2.2 组件交互(实现要点) 1. **Controller recovery_service.py(新增统一入口)** - complete_precision_pd_group_recovery():可选终止 P/D → 从 AlarmStore 查找活动精度告警 → 深拷贝原 Alarm 并 clear() 上报 OM → 调用 CoordinatorApiClient.notify_precision_alarm_cleared() 清理 Scheduler 状态 - terminate_pd_group() / is_precision_raise_alarm() 等辅助函数供 API 层复用 2. **Controller alarm_store.py** - 新增 _active_precision_alarms 索引与 find_active_precision_alarm(p_id, d_id),按 PD Group 追踪活动精度告警及其 moi 3. **Controller controller_api.py** - 精度 auto-recovery 成功后走 complete_precision_pd_group_recovery,响应携带 precision_alarm_cleared / precision_alarm_cleared_by_auto_recovery - POST /controller/terminate_instance 支持 precision_alarm_clear=true,CCAE 手动清除走同一恢复入口 4. **Coordinator Scheduler(scheduler.py + runtime)** - 新增 alarm_active、clear_probing、clear_tokens 等 per-PD-Group 状态 - record_precision_result() 在活动告警下累计连续正常样本,达 clear_threshold 触发 clear action - finish_precision_action(action_type=clear|raise) 提交 action 结果;auto-recovery 已清除时直接删除整组状态 - 新增 ZMQ 协议与 client/server 透传 finish_precision_action / record_precision_result(clear_threshold=...) 5. **Coordinator PrecisionReporter + PrecisionAlarm** - Reporter 支持 raise / clear 双 action 编排,clear_threshold_hit 时异步触发 CLEAR 上报 - PrecisionAlarm.execute(action=clear) 构造 build_precision_issue_clear_alarm() 并上报 Controller;CLEAR 必须使用与产生告警相同的 moi 6. **Coordinator Management API(新增)** - POST /precision/alarm_cleared:Controller 通知 Coordinator 删除 Scheduler 活动告警状态(Mgmt 进程 → Scheduler) 7. **CCAE Reporter + MotorBackend** - precision control 终止成功后调用带 precision_alarm_clear=true 的 group terminate - 新增 precision task 上报窗口与 controlCode 抑制逻辑 8. **公共层** - 新增 motor/common/alarm/deserialize.py:告警反序列化 - precision_issue_alarm.py:新增 build_precision_issue_clear_alarm() - coordinator.py:新增 precision_clear_threshold 配置项 ### 2.3 时序(auto-recovery 清除) mermaid sequenceDiagram participant CR as Coordinator PrecisionAlarm participant CT as Controller participant OM as OM/CCAE participant SCH as Coordinator Scheduler CR->>CT: POST report_alarms (ALARM) CT->>CT: terminate P/D instances CT->>OM: report ALARM + CLEAR (same moi) CT->>SCH: POST /precision/alarm_cleared SCH->>SCH: clear alarm_active state CT-->>CR: precision_alarm_cleared_by_auto_recovery=true --- ## **3. 资料变更** **涉及**,修改如下: | 文件 | 变更说明 | |------|----------| | docs/zh/design/fault_tolerance/precision_detection.md | 补充告警清除设计:三条清除路径、moi 一致性约束、Scheduler 状态清理、CCAE 手动清除时序 | | docs/zh/user_guide/features/precision_detection.md | 补充 precision_clear_threshold 配置说明 | | docs/zh/user_guide/api/observability_interface.md | 补充 CCAE precision control 调用 /controller/terminate_instance 时 precision_alarm_clear 字段说明 | --- ## **4. 接口变更** **涉及**,均为客户面/跨组件可见接口: | 接口 | 变更类型 | 说明 | |------|----------|------| | POST /controller/terminate_instance | **请求体扩展** | 新增可选字段 precision_alarm_clear: bool(默认 false)。为 true 时按 PD Group 终止 P/D 并清除精度告警;响应 data 新增 precision_alarm_cleared、scheduler_state_cleared、moi | | POST /controller/report_alarms(精度 ALARM 响应) | **响应扩展** | auto-recovery 成功后 data 新增 precision_alarm_cleared、precision_alarm_cleared_by_auto_recovery、scheduler_state_cleared | | POST /precision/alarm_cleared(Coordinator Mgmt) | **新增** | Controller → Coordinator,请求体 {p_instance_id, d_instance_id},清除 Scheduler 侧活动精度告警状态 | | Coordinator 配置 | **新增字段** | precision_detection_config.precision_clear_threshold(默认 10) | | CCAE precision control → MotorBackend | **行为变更** | 终止实例时携带 precision_alarm_clear=true | --- ## **5. 测试结果**  --- ## **6. CheckList** > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] [x] 代码注释完备 [x] 正确记录维测日志 [x] 是否有UT用例 [x] 若涉及多线程场景,考虑了并发场景,不存在死锁问题 See merge request: Ascend/MindIE-Motor!598 | 13 天前 | |
[metric] 移除Controller metrics接口,统一使用Coordinator提供的接口【提供新端口】,CCAE_Reporter改为对接Coordinator Co-authored-by: 吕有辉<lvyouhui@huawei.com> # message auto-generated for no-merge-commit merge: !165 merge metrics_optimize into master [metric] 移除Controller metrics接口,统一使用Coordinator提供的接口【提供新端口】,CCAE_Reporter改为对接Coordinator Created-by: codeDogPro Commit-by: 吕有辉 Merged-by: towncharlie Description: ## **1. 合入背景** https://gitcode.com/Ascend/MindIE-PyMotor/issues/106 ## **2. 修改内容** 1、弃用Controller对外metrics接口【保留接口,增加warning告知用户弃用了,引导其使用Coordinator的接口】 2、ccae_reporter对接Coordinator metrics接口 3、Coordinator新增Observability API-Server,独立进程,MetricsCollector模块移动到该进程中,新增1027可观测性接口(NodePort) ## **3. 资料变更** 涉及 ## **4. 接口变更** 涉及 ## **5. 测试结果** > 需体现<ins>**测试场景,测试方法以及测试结果**</ins>。\ > 测试用例设计时需考虑硬件、部署方式、功能、性能、精度、显存等维度。 ## **6. CheckList** > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] [ ] 代码注释完备 [ ] 正确记录维测日志 [ ] 是否有UT用例 [ ] 若涉及多线程场景,考虑了并发场景,不存在死锁问题 See merge request: Ascend/MindIE-PyMotor!165 | 2 个月前 | |
[feature] 支持 Prefill 跨机 Pipeline Parallel 拉起 Co-authored-by: Jechin<yuzechen1@huawei.com> # message auto-generated for no-merge-commit merge: !653 merge feature/prefill-cross-node-pp into master [feature] 支持 Prefill 跨机 Pipeline Parallel 拉起 Created-by: Jechin Commit-by: Jechin Merged-by: towncharlie Description: ## **1. 合入背景** Fixes [#389](https://gitcode.com/Ascend/MindIE-Motor/issues/389) Prefill 跨机 Pipeline Parallel(如 TP=16、PP=2、nnodes=2)场景下,控制面仍按“单机并行积”计算 local_world_size(pcp×tp×pp),导致本机设备数校验失败、Endpoint 为空;同时 master_addr=placeholder / 静态 node_rank 会盖住运行时注入,分布式初始化无法连通。Assembler 在无 Endpoint 时还会误报 start 成功。本 PR 补齐跨机 PP 与跨机 PCP 共用的 nnodes 路径,并让 Deployer 从 vLLM 脚本正确生成 PP/nnodes 配置;并行度读取统一为 CLI 整数优先、缺省回退 kv_connector_extra_config(含 pp_size)。 ## **2. 修改内容** 1. **NodeManager 配置**(motor/config/node_manager.py) - 跨机时按 (pcp×tp×pp)//nnodes 折算本机 local_world_size(覆盖 PP/PCP) - pcp×pp 不能被 nnodes 整除时直接报错,避免错误拓扑静默通过 2. **EngineServer VLLMConfig**(motor/engine_server/core/vllm/vllm_config.py) - 跨机场景强制覆盖 master_addr / node_rank / headless,不再被 placeholder 挡住 - Mooncake kv extra 合并并行度时保留用户字段(如 pp_layer_partition) 3. **Controller InstanceAssembler**(motor/controller/core/instance_assembler.py) - 所有 NodeManager 均无 Endpoint 时,_send_start_command 返回失败并打 ERROR,禁止假成功 4. **Deployer 转换**(examples/deployer/config_tool/vllm_to_motor.py) - 保留并正确写出 pipeline_parallel_size,按 tp×pp 推导 Pod / nnodes - 跨机时写入 nnodes / master-port;不写 master-addr / node-rank(运行时注入) - **dp/tp/pp 统一读取优先级**:命令行给了正整数用 CLI,否则回退 kv_connector_extra_config 的 dp_size / tp_size / pp_size(kv 中的 size 在写出前剥离) - 去除硬件侧强制 remap tp/dp;infer_*_motor_deploy_config 回传 nnodes,与跨机 engine 注入共用一次 _infer_pod_layout - 抽取 hybrid 默认 deploy / 权重挂载路径 / preset+cards 等重复逻辑,降低漂移风险 5. **UT** - 覆盖 PP 折算、不可整除、placeholder 覆盖、kv 字段保留、空 Endpoint start 失败 - Deployer:CLI>kv、仅 kv 回退(含 pp_size)、跨机 nnodes/master-port、跳过脚本透传多机键等 **进程视图** mermaid flowchart LR subgraph deploy [Deploy] script["vLLM serve 脚本\nCLI 与 kv extra"] conv["vllm_to_motor\nCLI大于kv"] uc["user_config\nPP nnodes master-port"] end subgraph control [Control Plane] nm0["NodeManager node_rank=0"] nm1["NodeManager node_rank=1"] asm["InstanceAssembler"] end subgraph engine [Engine] es0["EngineServer PP stage0"] es1["EngineServer PP stage1 headless"] end script --> conv --> uc uc --> nm0 uc --> nm1 nm0 -->|"Register local_world_size"| asm nm1 -->|"Register local_world_size"| asm asm -->|"StartCmd master_dp_ip/node_rank"| nm0 asm -->|"StartCmd"| nm1 nm0 --> es0 nm1 --> es1 es0 <-->|"master-port rendezvous"| es1 ## **3. 资料变更** 不涉及仓库内用户文档更新(Deployer README / 跨机说明未改)。 ## **4. 接口变更** 涉及配置约定(客户面可见): - Prefill 跨机 PP 需配置 pipeline_parallel_size、nnodes、master-port;**不要**配置 master-addr / node-rank - Deployer 从 vLLM 脚本转换时会自动生成上述项;pipeline_parallel_size 不再被强制改写为 1 - Deployer 并行度语义:--data/tensor/pipeline-parallel-size 正整数优先于 kv extra 的 dp_size/tp_size/pp_size;二者皆无时 dp/tp 走手动占位提示,pp 缺省为 1 - 无新增/变更 HTTP API ## **5. 测试结果** (自行补充) ## **6. CheckList** [x] 代码注释完备 [x] 正确记录维测日志 [x] 是否有UT用例 [x] 若涉及多线程场景,考虑了并发场景,不存在死锁问题 See merge request: Ascend/MindIE-Motor!653 | 3 天前 | |
[bugfix]cpu/disk命中根据parent_hash + token_hash查找 Co-authored-by: ganglv<lvgang1@huawei.com> # message auto-generated for no-merge-commit merge: !601 merge conductor into master [bugfix]cpu/disk命中根据parent_hash + token_hash查找 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替代. 完善 KV Conductor 多级缓存亲和性匹配,支持 HBM、CPU、Disk 间连续前缀查询,提升匹配准确性。 [#386](https://gitcode.com/Ascend/MindIE-Motor/issues/386) [#387](https://gitcode.com/Ascend/MindIE-Motor/issues/387) ## **2. 修改内容** > 请<ins>**描述修改内容的具体实现**</ins>,涉及哪些组件之间进行交互,可以用1、2、3、...进行罗列。 > 如果是需求或者重构类的PR,需要<ins>**补充详细设计文档**</ins>(说明上下游组件关系、时序图、类图、DFX能力等内容)。 - 重构多级缓存索引及跨介质断点续查逻辑。 - bugfix for dsv4 flash - 支持disk查询 - 按实例和 DP 聚合各介质命中块数,移除加权评分。 - 完善事件兼容、测试、设计文档及第三方许可证声明。 - 修复log monitor收集日志有重复的问题 - 修改rust precommit失败问题 & rust commit执行慢问题 ## **3. 资料变更** > 请确认<ins>**是否涉及资料变更**</ins>。\ > 如涉及,需要在PR中体现,并简要说明修改内容。\ > 如不涉及,需填写“不涉及”。 不涉及 ## **4. 接口变更** > 请确认<ins>**是否涉及跨代码仓或者客户面可见的接口变更**</ins>。\ > 如涉及,需详细说明接口以及对应的变更内容,同时需要在资料中体现。\ > 如不涉及,需填写“不涉及”。 - 配置项 xpu_endpoint 更名为 gpu_endpoint。 - 注册接口介质名称由 xpu 调整为 gpu,仍兼容旧名称。 - 查询结果由 XPU/CPU/DISK/total 加权分数调整为 gpu_blocks/cpu_blocks/disk_blocks/matched_tokens。 ## **5. 测试结果** > 需体现<ins>**测试场景,测试方法以及测试结果**</ins>。\ > 测试用例设计时需考虑硬件、部署方式、功能、性能、精度、显存等维度。 dsv4_flash  qwen  disk  rename to npu  ## **6. CheckList** > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] [ ] 代码注释完备 [ ] 正确记录维测日志 [ ] 是否有UT用例 [ ] 若涉及多线程场景,考虑了并发场景,不存在死锁问题 See merge request: Ascend/MindIE-Motor!601 | 6 天前 | |
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 | 5 天前 | |
update license Co-authored-by: y1lou<louyi6@huawei.com> # message auto-generated for no-merge-commit merge: !185 merge update_license into master update license Created-by: y1lou Commit-by: y1lou Merged-by: ascend-robot 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!185 | 6 个月前 | |
[refractor] Controller代码微重构,提升代码可维护性 Co-authored-by: 吕有辉<lvyouhui@huawei.com> # message auto-generated for no-merge-commit merge: !623 merge refractor/controller into master [refractor] Controller代码微重构,提升代码可维护性 Created-by: codeDogPro Commit-by: 吕有辉 Merged-by: tobking Description: # Controller 重构 PR 说明 ISSUE:https://gitcode.com/Ascend/MindIE-Motor/issues/368 关联 PR:[NodeManager 重构](https://gitcode.com/Ascend/MindIE-Motor/pull/620) ## 1. 合入背景 Controller 的 main.py 将模块管理、配置更新传播、daemon loop、信号处理等逻辑全部写在模块级全局变量和函数中,与 NodeManager 的 main.py 存在大量重复代码。此前 NodeManager 已完成重构(提取 Application 基类和 NodeManager 类),本次将相同模式应用到 Controller,并同步 daemon_loop_interval 热更新能力。 ## 2. 修改内容 ### 2.1 ControllerConfig 新增 daemon_loop_interval 配置 **文件**: motor/config/controller.py 新增 ControllerConfig.daemon_loop_interval: float = 5.0,支持在 user_config.json 中配置 daemon loop 检查间隔,默认 5 秒。 ### 2.2 Controller 类同步 check_interval 能力 **文件**: motor/controller/controller.py 1. Controller.__init__ 传入 check_interval=config.daemon_loop_interval 到 Application 基类。 2. 重写 _refresh_check_interval(),配置热更新时自动同步间隔。 ### 2.3 改动文件清单 | 文件 | 改动类型 | |------|----------| | motor/config/controller.py | 新增 daemon_loop_interval 字段 | | motor/controller/controller.py | 传入 check_interval + 重写 _refresh_check_interval | ## 3. 资料变更 不涉及。 ## 4. 接口变更 不涉及。 ## 5. 测试结果  python -m pytest tests/controller/ -q 544 passed in 12.37s ## 6. CheckList - [x] 代码注释完备 - [x] 正确记录维测日志 - [x] 是否有UT用例(全量 544 passed) - [x] 若涉及多线程场景,考虑了并发场景,不存在死锁问题 See merge request: Ascend/MindIE-Motor!623 | 10 天前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 13 天前 | ||
| 2 个月前 | ||
| 3 天前 | ||
| 6 天前 | ||
| 5 天前 | ||
| 6 个月前 | ||
| 10 天前 |