昇腾自研推理集群管理框架
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
【bugfix】coordinator add weight config Co-authored-by: ganglv<lvgang1@huawei.com> # message auto-generated for no-merge-commit merge: !677 merge master_icbc_shanghai into master 【bugfix】coordinator add weight config Created-by: ganglv Commit-by: ganglv Merged-by: tobking Description: ## **1. 合入背景** > 请描述为什么要做这个PR内的改动。\ > 如涉及,请关联前序PR或同特性/需求下的其他PR。\ > 如果是修复之前PR引入的问题,请关联引入问题的PR。\ > 请通过#ISSUE ID关联issue。\ > 注意: Fixes #ISSUE ID会自动关闭issue,如问题部分解决请不要使用Fixes,可以用Fix part of #ISSUE ID替代. KV Cache 亲和调度此前用 Conductor 返回的 matched_tokens(按介质覆盖终点)直接参与打分,存在两点不足: 1. **npu/cpu/disk_blocks 语义不清**:重叠前缀下各介质块数可能重复计入,无法表达「互斥真实命中块数」。 2. **介质价值差异无法配置**:HBM/NPU、CPU、Disk 对 TTFT 的贡献不同,但调度侧无法按介质加权;权重属于调度策略,不宜放在 Conductor(事实层)。 本 PR 将职责拆清:Conductor 只上报互斥命中事实;Coordinator 按 w_npu/w_cpu/w_disk 做亲和加权,并顺带把亲和参数收敛到嵌套配置 scheduler_config.kv_affinity。 ## **2. 修改内容** > 请<ins>**描述修改内容的具体实现**</ins>,涉及哪些组件之间进行交互,可以用1、2、3、...进行罗列。 > 如果是需求或者重构类的PR,需要<ins>**补充详细设计文档**</ins>(说明上下游组件关系、时序图、类图、DFX能力等内容)。 1. **KV Conductor(事实层)** - 匹配阶段收集每 DP 的介质绝对终点(npu_end/cpu_end/disk_end)。 - build_response 按优先级 **NPU > CPU > Disk** 做互斥划分,写入 npu_blocks/cpu_blocks/disk_blocks。 - matched_tokens = (npu+cpu+disk) × block_size(未加权真实覆盖长度);实例级 longest_matched 仍取各 DP max。 2. **Coordinator(策略层)** - 新增/使用 KvAffinityConfig,配置迁入 scheduler_config.kv_affinity: - 原有:mode / load_weight / overlap_credit / prefill_load_scale / load_gate_topn - 新增:w_npu / w_cpu / w_disk(默认 **1.0 / 1.0 / 0.0**) - 亲和打分: text affinity_matched = min(round((npu×w_npu + cpu×w_cpu + disk×w_disk)×block_size), isl) prefill_cost = max(0, isl − overlap_credit × affinity_matched) - 兼容旧 flat key(kv_affinity_mode 等):自动迁入嵌套结构并告警;嵌套优先。 3. **配置透传** - scheduler_connection_manager / scheduler_client 将 kv_affinity 权重传入 KvCacheAffinityPolicy。 4. **文档与示例** - 更新亲和调度用户指南、配置参考、kv-conductor README/设计文档、config_sample.json 及 skill 文档。 ## **3. 资料变更** > 请确认<ins>**是否涉及资料变更**</ins>。\ > 如涉及,需要在PR中体现,并简要说明修改内容。\ > 如不涉及,需填写“不涉及”。 涉及。已更新: - docs/zh/user_guide/features/kvcache_affinity.md - docs/zh/user_guide/configuration/config_reference.md - docs/zh/user_guide/deployment/k8s/pd_aggregation_deployment.md - docs/zh/design/kv_conductor.md - motor/kv_conductor/README.md - examples/features/config_sample.json - .agent/skills/motor-dev/references/{kv-conductor,coordinator}.md ## **4. 接口变更** > 请确认<ins>**是否涉及跨代码仓或者客户面可见的接口变更**</ins>。\ > 如涉及,需详细说明接口以及对应的变更内容,同时需要在资料中体现。\ > 如不涉及,需填写“不涉及”。 涉及(客户面配置与 Conductor 响应语义): | 位置 | 变更 | |------|------| | Coordinator 配置 | 亲和参数由 flat kv_affinity_* 改为嵌套 scheduler_config.kv_affinity;保留 legacy 迁移 | | kv_affinity.w_npu/w_cpu/w_disk | 新增;默认 1.0/1.0/0.0 | | Conductor *_blocks | 语义改为互斥真实命中块数(NPU>CPU>Disk) | | Conductor matched_tokens | 改为互斥块数之和 × block_size(不再在 Conductor 侧乘权重) | ## **5. 测试结果** > 需体现<ins>**测试场景,测试方法以及测试结果**</ins>。\ > 测试用例设计时需考虑硬件、部署方式、功能、性能、精度、显存等维度。  ## **6. CheckList** > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] [ ] 代码注释完备 [ ] 正确记录维测日志 [ ] 是否有UT用例 [ ] 若涉及多线程场景,考虑了并发场景,不存在死锁问题 See merge request: Ascend/MindIE-Motor!677 | 28 天前 | |
[Feature] 支持 Dev Container 开发环境 Co-authored-by: ChenDAO1<alkaidb3v.chen@gmail.com> # message auto-generated for no-merge-commit merge: !613 merge codex/issue-228-devcontainer into master [Feature] 支持 Dev Container 开发环境 Created-by: kaid____a Commit-by: kaid____a;ChenDAO1 Merged-by: tobking Description: ## **1. 合入背景** 当前仓库缺少统一的 Dev Container 配置,开发者需要自行安装 Python、Rust、系统工具及项目依赖,增加了环境配置成本。 本 PR 为仓库增加可复现的容器化开发环境。 Fixes #228 ## **2. 修改内容** 1. 新增 .devcontainer/devcontainer.json - 使用 Python 3.11 开发环境 - 配置 Python、Pylance、Ruff、ShellCheck 等 VS Code 扩展 - 安装稳定版 Rust 工具链 - 通过 postCreateCommand 自动初始化项目 2. 新增 .devcontainer/Dockerfile - 安装编译工具、ZeroMQ、OpenSSL、ShellCheck 等系统依赖 - 处理基础镜像中失效的 Yarn APT 软件源 3. 新增 .devcontainer/post-create.sh - 安装 requirements.txt 依赖 - 以 editable 模式安装 MindIE-Motor - 自动生成 Protobuf Python 文件 - 兼容 Windows checkout 产生的 CRLF shell 脚本 4. 新增 .gitattributes - 确保容器内执行的 Shell 脚本使用 LF 换行符 5. 更新 contributing.md - 增加 Dev Container 使用方法及适用范围说明 ## **3. 资料变更** 更新 contributing.md,补充通过 VS Code **Dev Containers: Reopen in Container** 创建开发环境的说明。 ## **4. 接口变更** 不涉及对外接口变更。 ## **5. 测试结果** 本地 Windows + Docker Desktop 环境验证结果: - Dev Container 配置解析通过 - Dev Container 镜像实际构建成功 - 容器创建及 postCreateCommand 执行成功 - 重复执行 postCreateCommand 成功 - Python 版本:3.11.13 - Rust/Cargo 版本:1.97.1 - ShellCheck 检查通过 - Pytest 成功收集 2492 个测试用例 - cargo check --manifest-path motor/kv_conductor/Cargo.toml 通过 - 非集成测试:2489 passed,1 skipped - test_file_check 依赖 os.chown,Windows Docker Desktop bind mount 不支持该操作,未执行 - test_pre_separate_l6_inactive_instances_triggers_scale_p2d 在完整测试集中存在顺序依赖,单独重跑通过 涉及 NPU、CANN 或其他昇腾硬件环境的集成测试未在本机执行。 ## **6. CheckList** - [x] 代码注释完备 - [x] 正确记录维测日志(不涉及新增运行时日志) - [x] 是否有 UT 用例(已运行现有非集成测试) - [x] 若涉及多线程场景,考虑了并发场景,不存在死锁问题(不涉及) See merge request: Ascend/MindIE-Motor!613 | 1 个月前 | |
Motor仓issue模板更新 Co-authored-by: zhoujing101<zhoujing101@huawei.com> # message auto-generated for no-merge-commit merge: !607 merge master into master Motor仓issue模板更新 Created-by: zhoujing101 Commit-by: zhoujing101 Merged-by: towncharlie Description: https://gitcode.com/Ascend/MindIE-Motor/issues/351 ## **1. 合入背景** 优化 Issue 模板体系,提升社区用户反馈质量;在 .gitignore 中添加 gitleaks 忽略规则。 ## **2. 修改内容** 1. **Issue 模板优化**:对 bug-report.yml、documentation.yml、feature-request.yml、question.yml 四个模板进行了统一优化: - 标题增加 emoji 图标(🐛、📚、🚀、💬),提升视觉识别度 - 新增 title 字段,规范 issue 标题前缀格式 - 将原有的英文欢迎致辞改为 Checkboxes 确认项,要求提交前确认已搜索过现有 issue,减少重复提交 - 简化字段标签,统一使用中文描述 - 修复文件末尾换行问题 - feature-request.yml 重构为"背景信息/需求来源/价值作用/设计方案"等结构化字段 2. **新增 RFC 模板**:新增 request-for-comments.yml(RFC 模板),包含需求描述、功能要点、上下游影响、API 变更、技术方案、测试方案、验收标准等结构化字段,规范新需求评审流程 3. **.gitignore 更新**:添加 gitleaks 忽略规则 ## **3. 资料变更** 不涉及。 ## **4. 接口变更** 不涉及。 ## **5. 测试结果** 不涉及功能代码变更,无需额外测试。 ## **6. CheckList** > PR 提交人对以下 CheckList 自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] [x] 代码注释完备 [x] 正确记录维测日志 [x] 是否有 UT 用例 — 不涉及 [x] 若涉及多线程场景,考虑了并发场景,不存在死锁问题 — 不涉及 See merge request: Ascend/MindIE-Motor!607 | 1 个月前 | |
[Feature] 新增 Dockerfile 制作镜像方式 Co-authored-by: jingyp<jingyp@chinatelecom.cn> # message auto-generated for no-merge-commit merge: !143 merge feature/add-dockerfile into master [Feature] 新增 Dockerfile 制作镜像方式 Created-by: gcw_gxG14I7x Commit-by: jingyp Merged-by: tobking Description: ## **1. 合入背景** 新增 Dockerfile 构建镜像方式方便制作镜像 Fixes https://gitcode.com/Ascend/MindIE-Motor/issues/348 ## **2. 修改内容** 新增 Dockerfile 及 Makefile ## **3. 资料变更** 已更新文档 docs/zh/user_guide/maintenance/build_motor_image_from_vllm_ascend.md 和 docs/zh/developer_guide/build_motor_image_from_vllm_ascend.md ## **4. 接口变更** 不涉及 ## **5. 测试结果**  ## **6. CheckList** > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] [ ] 代码注释完备 [x] 正确记录维测日志 [x] 是否有UT用例 [x] 若涉及多线程场景,考虑了并发场景,不存在死锁问题 See merge request: Ascend/MindIE-Motor!143 | 1 个月前 | |
刷新d2d说明文档 | 24 天前 | |
刷新d2d说明文档 | 24 天前 | |
[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 | 27 天前 | |
feat: 添加 Gitleaks 本地离线二进制密钥扫描 pre-commit hook Co-authored-by: LinWei100<linwei100@huawei.com> # message auto-generated for no-merge-commit merge: !517 merge codex/gitleaks-secret-scan into master feat: 添加 Gitleaks 本地离线二进制密钥扫描 pre-commit hook Created-by: LinWei100 Commit-by: LinWei100 Merged-by: towncharlie Description: ## **1. 合入背景** Fixes [#313](https://gitcode.com/Ascend/MindIE-PyMotor/issues/313) 本仓库缺少自动化密钥泄露扫描能力,开发者在提交代码时可能无意中将 API Key、Token、AK/SK 等敏感凭证硬编码到源码中,存在安全风险。 参考 MindSpeed-Ops 的 [PR #81](https://gitcode.com/Ascend/MindSpeed-Ops/pull/81),引入 Gitleaks 本地离线二进制扫描作为 pre-commit hook,在提交阶段自动拦截密钥泄露。 ## **2. 修改内容** 1. **新增 pre-commit/.gitleaks.toml**:Gitleaks 自定义配置文件,当前仅通过 [extend] useDefault = true 继承二进制内置全套默认规则(涵盖 AWS/Git/SSH/OBS 等常见密钥格式),未启用任何新增或屏蔽规则。配置中保留了注释示例,便于后续按需添加自定义规则或白名单。 2. **修改 .pre-commit-config.yaml**:在文件末尾新增 repo: local 的 gitleaks-offline-scan hook,pre-commit 阶段调用 ./gitleaks protect --verbose --redact --config=pre-commit/.gitleaks.toml,对变更文件进行密钥扫描。 ## **3. 资料变更** 不涉及。 ## **4. 接口变更** 不涉及。 ## **5. 测试结果** - **测试场景**:本地提交包含模拟密钥(如 AKID1234567890abcdef)的测试文件 - **测试方法**:将 ./gitleaks 二进制放入仓库根目录后执行 git commit - **测试结果**:pre-commit hook 成功拦截,./gitleaks protect --verbose --redact 输出密钥告警并阻止提交;移除密钥后可正常提交通过。 - **不涉及**:硬件、部署方式、性能、精度、显存。 ## **6. CheckList** [x] 代码注释完备 [x] 正确记录维测日志 [x] 是否有UT用例(不涉及,纯配置文件变更) [x] 若涉及多线程场景,考虑了并发场景,不存在死锁问题(不涉及) See merge request: Ascend/MindIE-PyMotor!517 | 1 个月前 | |
[docs] 添加文档托管网站基础设施 Co-authored-by: Jechin<yuzechen1@huawei.com> # message auto-generated for no-merge-commit merge: !114 merge docs/readthedocs into master [docs] 添加文档托管网站基础设施 Created-by: Jechin Commit-by: Jechin Merged-by: towncharlie Description: ## **1. 合入背景** > 请描述为什么要做这个PR内的改动。\ > 如涉及,请关联前序PR或同特性/需求下的其他PR。\ > 如果是修复之前PR引入的问题,请关联引入问题的PR。\ > 请通过#ISSUE ID关联issue。\ > 注意: Fixes #ISSUE ID会自动关闭issue,如问题部分解决请不要使用Fixes,可以用Fix part of #ISSUE ID替代. Fixes [#80](https://gitcode.com/Ascend/MindIE-PyMotor/issues/80) ## **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] [x] 代码注释完备 [x] 正确记录维测日志 [x] 是否有UT用例 [x] 若涉及多线程场景,考虑了并发场景,不存在死锁问题 See merge request: Ascend/MindIE-PyMotor!114 | 3 个月前 | |
[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 | 4 个月前 | |
fix: multi_deployment 静态扩缩容基于集群 index 动态 list 统一扩缩容决策 Co-authored-by: lbr711<liuboru1@huawei.com> # message auto-generated for no-merge-commit merge: !686 merge pr/fix-static-scale into master fix: multi_deployment 静态扩缩容基于集群 index 动态 list 统一扩缩容决策 Created-by: lbr711 Commit-by: lbr711 Merged-by: towncharlie Description: ## **1. 合入背景** > multi_deployment 静态扩缩容原先扩/缩不对称:扩容部分看集群,缩容仍按配置 reversed(range(base)) 推断,Pending 场景会误删健康实例;稀疏 index 下扩容无法补洞、缩容可能删不到实际 Deployment。 > > 本 PR 以**集群实际 Deployment index 集合**为动态 list,统一 P/D/U 扩缩容 index 选择逻辑。 > > Fixes #454 ## **2. 修改内容** 1. 新增 get_pending_engine_instance_indices():查询 Pending Pod 对应 index(无 idx < base 限制)。 2. 新增 compute_scale_in_delete_indices() / compute_scale_out_add_indices():纯函数,基于 live index set 计算删/增列表。 3. 重构 get_instance_scale_in_delete_order():删除数量 = len(现有) - target;删序 Pending 优先 → 高位优先;deployment 查询失败回退 reversed(range(base))。 4. 重构 get_instance_scale_out_indices():在 [0, total) 内从低到高补缺失 index。 5. scale_engine_by_type() 中 P/D/U 接入上述逻辑;E 保持原有行为。 6. 扩展 UT tests/examples/deployer/test_scale_in.py(含稀疏 index 全链路、orphan 高位回收等场景)。 ## **3. 资料变更** 不涉及。 ## **4. 接口变更** 不涉及。 ## **5. 测试结果** - 部署方式:multi_deployment - 测试方法:pytest 单元测试 - 测试场景: 1. Pending 优先于 Running 删除(P/D/U) 2. 无 Pending 时高位优先删除 3. 稀疏 index 扩容补洞(如 {0,4} → 补 index 1) 4. 稀疏 index 缩容回收 orphan 高位(如 {0,1,4} 3→2 删 index 4) 5. 全链路:5→2 Pending 删洞 → 2→3 补位 → 3→2 正常缩容 6. deployment 查询失败回退旧逻辑 - 测试结果:21/21 passed(test_scale_in.py) bash pytest tests/examples/deployer/test_scale_in.py -v ## **6. CheckList** [x] 代码注释完备 [x] 正确记录维测日志 [x] 是否有UT用例 [x] 若涉及多线程场景,考虑了并发场景,不存在死锁问题 See merge request: Ascend/MindIE-Motor!686 | 26 天前 | |
[update] 更新precommit规则 Co-authored-by: LinWei100<linwei100@huawei.com> # message auto-generated for no-merge-commit merge: !130 merge feat/pre-commit_update into master [update] 更新precommit规则 Created-by: LinWei100 Commit-by: LinWei100 Merged-by: towncharlie Description: ## **1. 合入背景** > 请描述为什么要做这个PR内的改动。\ > 如涉及,请关联前序PR或同特性/需求下的其他PR。\ > 如果是修复之前PR引入的问题,请关联引入问题的PR。\ > 请通过#ISSUE ID关联issue。\ > 注意: Fixes #ISSUE ID会自动关闭issue,如问题部分解决请不要使用Fixes,可以用Fix part of #ISSUE ID替代. precommit规则需要更新 ## **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!130 | 3 个月前 | |
[Feature] 支持 Dev Container 开发环境 Co-authored-by: ChenDAO1<alkaidb3v.chen@gmail.com> # message auto-generated for no-merge-commit merge: !613 merge codex/issue-228-devcontainer into master [Feature] 支持 Dev Container 开发环境 Created-by: kaid____a Commit-by: kaid____a;ChenDAO1 Merged-by: tobking Description: ## **1. 合入背景** 当前仓库缺少统一的 Dev Container 配置,开发者需要自行安装 Python、Rust、系统工具及项目依赖,增加了环境配置成本。 本 PR 为仓库增加可复现的容器化开发环境。 Fixes #228 ## **2. 修改内容** 1. 新增 .devcontainer/devcontainer.json - 使用 Python 3.11 开发环境 - 配置 Python、Pylance、Ruff、ShellCheck 等 VS Code 扩展 - 安装稳定版 Rust 工具链 - 通过 postCreateCommand 自动初始化项目 2. 新增 .devcontainer/Dockerfile - 安装编译工具、ZeroMQ、OpenSSL、ShellCheck 等系统依赖 - 处理基础镜像中失效的 Yarn APT 软件源 3. 新增 .devcontainer/post-create.sh - 安装 requirements.txt 依赖 - 以 editable 模式安装 MindIE-Motor - 自动生成 Protobuf Python 文件 - 兼容 Windows checkout 产生的 CRLF shell 脚本 4. 新增 .gitattributes - 确保容器内执行的 Shell 脚本使用 LF 换行符 5. 更新 contributing.md - 增加 Dev Container 使用方法及适用范围说明 ## **3. 资料变更** 更新 contributing.md,补充通过 VS Code **Dev Containers: Reopen in Container** 创建开发环境的说明。 ## **4. 接口变更** 不涉及对外接口变更。 ## **5. 测试结果** 本地 Windows + Docker Desktop 环境验证结果: - Dev Container 配置解析通过 - Dev Container 镜像实际构建成功 - 容器创建及 postCreateCommand 执行成功 - 重复执行 postCreateCommand 成功 - Python 版本:3.11.13 - Rust/Cargo 版本:1.97.1 - ShellCheck 检查通过 - Pytest 成功收集 2492 个测试用例 - cargo check --manifest-path motor/kv_conductor/Cargo.toml 通过 - 非集成测试:2489 passed,1 skipped - test_file_check 依赖 os.chown,Windows Docker Desktop bind mount 不支持该操作,未执行 - test_pre_separate_l6_inactive_instances_triggers_scale_p2d 在完整测试集中存在顺序依赖,单独重跑通过 涉及 NPU、CANN 或其他昇腾硬件环境的集成测试未在本机执行。 ## **6. CheckList** - [x] 代码注释完备 - [x] 正确记录维测日志(不涉及新增运行时日志) - [x] 是否有 UT 用例(已运行现有非集成测试) - [x] 若涉及多线程场景,考虑了并发场景,不存在死锁问题(不涉及) See merge request: Ascend/MindIE-Motor!613 | 1 个月前 | |
[skill]新增Motor开发skill Co-authored-by: 吕有辉<lvyouhui@huawei.com> # message auto-generated for no-merge-commit merge: !395 merge skills_upload into master [skill]新增Motor开发skill Created-by: codeDogPro Commit-by: 吕有辉 Merged-by: tobking Description: ## 摘要 关联 ISSUE:https://gitcode.com/Ascend/MindIE-Motor/issues/383 新增 Agent Skill motor-dev,将 MindIE-PyMotor 的开发规范、模块架构、测试工作流固化为 Agent 的长期知识,并支持**持续学习**(bug 案例沉淀)与**问题定位后自动提 ISSUE**。使 AI 辅助开发自动遵循项目约定、从历史 bug 中学习、并可将验证过的问题一键反馈到社区。 ## 内容 ### 仓库结构( .agent/skills/motor-dev/) Skill 遵循 [Agent Skills 开放标准](https://agentskills.io/specification)(纯 Markdown + YAML frontmatter,Claude Code / Codex / Gemini CLI 等均可读取),放在通用路径 .agent/skills/ 下: text .agent/skills/motor-dev/ ├── SKILL.md # 入口:硬性约束 + 持续学习声明 + 调试工作流 ├── bug-fix-history/ # 持续学习案例库(渐进式披露) │ ├── INDEX.md # 轻量索引(一行一条,按关键词检索) │ └── <module>/<case>.md # 案例正文(现象/根因/为什么会写出/修复/测试拦截/场景/关键词) └── references/ # 10 篇深度参考(按需加载) ├── code-style.md # 代码风格完整指南(含 Python 3.10+ 类型语法、pre-commit 规则) ├── testing-guide.md # 测试命令选项、mock/fixture 模式 ├── coordinator.md # Coordinator:多进程、ZMQ/SHM、调度策略 ├── controller.md # Controller:Observer、状态机、FaultManager ├── node_manager.md # NodeManager:sidecar 生命周期 ├── engine-server.md # EngineServer:双端点、dispatch adapter、健康监控 ├── metrics.md # Metrics:4 层设计、Prometheus 解析 ├── e2e-testing.md # E2E 测试约定 ├── kv-conductor.md # KV Conductor(Rust):radix tree、事件解析 └── issue-reporting.md # 提 ISSUE 流程(token 提交 / markdown 降级 / 防重复检查) ### 核心能力 #### 1. 开发约束(SKILL.md) - 硬性约束:每个 motor/ 改动必须附带测试、只用 bash tests/run_tests.sh、日志用 %s 占位、Mulan PSL v2 license 头、Python 3.10+ 原生类型语法(X | None 而非 Optional[X],pre-commit check-modern-typing 强制) - 「模块 → 参考文档」路由表:改哪个模块读哪篇,只加载需要的深度(渐进式披露) - 渐进式测试工作流:单文件 → 模块 → 全量 #### 2. 持续学习(bug-fix-history/) - 每个调试会话自动沉淀案例:「为什么会写出这个 bug」的认知教训 + 拦截测试 - 调试前先查 INDEX.md(轻量索引),命中关键词再读案例正文——历史越长,上下文开销不变 - 防噪音规则:仅固化已验证结论,去重,每模块上限 10 例 #### 3. 问题定位后自动提 ISSUE(references/issue-reporting.md) - 修复闭环完成后询问用户是否按 Motor bug-report 模板提交 ISSUE - 提 ISSUE 前**硬性检查历史 issue**(GitCode API 搜索),相似已存在则不重复提交 - 提交方式三选一:GITCODE_TOKEN 环境变量直接提交(token 绝不落盘/落日志)/ 生成 markdown 草稿手动粘贴 / 跳过 - 渐进式披露:提 ISSUE 细节仅在用户同意后才加载 #### 4. 渐进式披露(本 skill 的核心设计) - 热路径(SKILL.md)约 100 行;深度知识按需加载,每次会话只花约 1K token 起步 - 案例库、提 ISSUE 细节均按需读取,不提前加载 ## 为什么重要 1. **一致性**:默认情况下,每个 motor/ 改动都自带测试、规范日志、license 头和新语法类型标注——不再需要评审来回纠结风格问题。 2. **上手成本低**:新贡献者(人或 AI)在一个地方就能了解模块架构,无需通读上万行源码。 3. **上下文高效**:渐进式披露让热路径只有约 100 行;只有触及相关模块时才加载深度内容。 4. **正确性**:固化了很多不易重新发现的非显性知识(ZMQ/SHM 协议布局、状态机转换、KV 事件线格式、负数 workload 等踩坑案例)。 5. **社区反馈闭环**:验证过的问题可直接按模板反馈为 ISSUE(防重复),反哺上游。 ## 使用方式(对协作者) 仓库只上库 .agent/skills/(通用标准路径)。**Claude Code 原生只扫描 .claude/skills/**,因此 Claude Code 用户需在本地创建 symlink 启用(官方支持 symlink 跟随): bash cd <repo-root> ln -s ../.agent/skills .claude/skills .claude/ 已在 .gitignore 中,该 symlink 不会进入版本库。其他 Agent(Codex / Gemini CLI / 通用工具)直接读取 .agent/skills/,无需额外配置。 ## 测试 - npx markdownlint-cli .agent/skills/**/*.md — 0 处格式违规(MD031/MD032/MD033/MD040/MD058/MD024/MD012)。 - 案例库与 skill 文档中引用的文件路径/行数均与当前 master 源码核对一致。 See merge request: Ascend/MindIE-Motor!395 | 30 天前 | |
【feature】kv-conductor Co-authored-by: 吕有辉<lvyouhui@huawei.com> # message auto-generated for no-merge-commit merge: !568 merge feat/kv-conductor into master 【feature】kv-conductor Created-by: codeDogPro Commit-by: 吕有辉 Merged-by: towncharlie Description: ## **1. 合入背景** https://gitcode.com/Ascend/MindIE-PyMotor/issues/338 内部subCMC已经评审,该大PR同意合入 ## **2. 修改内容** 1、引入kv-conductor【rust源代码,测试代码,设计文档】 2、Coordinator conductor client适配kv-conductor 3、新增kv-conductor config 4、kvcache_affine.md重写,以kv-conductor为准 5、build.sh集成kv-conductor二进制打包进whl的能力,支持跳过kv-conductor打包,便于在无rust编译环境上构建基础组件 ## **3. 资料变更** 涉及 ## **4. 接口变更** 涉及 ## **5. 测试结果** whl包版kv-conductor拉起成功,请求命中匹配成功 Looking in indexes: https://repo.huaweicloud.com/repository/pypi/simple, https://mirrors.huaweicloud.com/ascend/repos/pypi Processing ./dist/motor-0.1.0-py3-none-any.whl Installing collected packages: motor Attempting uninstall: motor Found existing installation: motor 0.1.0 Uninstalling motor-0.1.0: Successfully uninstalled motor-0.1.0 Successfully installed motor-0.1.0 WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv [notice] A new release of pip is available: 24.0 -> 26.1.2 [notice] To update, run: pip install --upgrade pip Current node role: ROLE=kv_conductor Starting KV Conductor on 0.0.0.0:13333 2026-07-21T17:12:09.17062356+08:00 INFO scoring config hbm_weight=3 cpu_weight=2 disk_weight=1 2026-07-21T17:12:09.17093877+08:00 INFO KV conductor starting on 0.0.0.0:13333 2026-07-21T17:12:10.44555639+08:00 TRACE connection 192.168.196.1:50480 accepted 2026-07-21T17:12:10.44581192+08:00 TRACE connection 192.168.196.1:50480 closed 2026-07-21T18:18:48.26729199+08:00 DEBUG request{method=POST uri=/query version=HTTP/1.1}: started processing request 2026-07-21T18:18:48.26737949+08:00 DEBUG request{method=POST uri=/query version=HTTP/1.1}: query request model=Qwen3-30B-A3B-W8A8 tenant=default num_tokens=1503 2026-07-21T18:18:48.26740762+08:00 DEBUG request{method=POST uri=/query version=HTTP/1.1}: find_matches seq_len=12 depth=11 active_workers=2 elapsed_us=13 2026-07-21T18:18:48.26741747+08:00 DEBUG request{method=POST uri=/query version=HTTP/1.1}: hash_computed num_tokens=1503 block_size=128 num_hashes=12 hash_us=2 scores=2 2026-07-21T18:18:48.26743069+08:00 DEBUG request{method=POST uri=/query version=HTTP/1.1}: query profile num_tokens=1503 block_size=128 hash_us=37 total_us=43 2026-07-21T18:18:48.26745731+08:00 DEBUG request{method=POST uri=/query version=HTTP/1.1}: finished processing request latency=0 ms status=200 Qwen3-30B-A3B,Prefill DP2,Decode DP2测试如下: 发送8个请求,gsm8 未开启亲和性调度: ╒══════════════════════════╤═════════╤═════════════════╤════════════════╤═════════════════╤═════════════════╤═════════════════╤═════════════════╤═════════════════╤═════╕ │ Performance Parameters │ Stage │ Average │ Min │ Max │ Median │ P75 │ P90 │ P99 │ N │ ╞══════════════════════════╪═════════╪═════════════════╪════════════════╪═════════════════╪═════════════════╪═════════════════╪═════════════════╪═════════════════╪═════╡ │ E2EL │ total │ 7389.6 ms │ 4197.7 ms │ 8487.4 ms │ 8063.4 ms │ 8298.8 ms │ 8377.5 ms │ 8476.4 ms │ 8 │ ├──────────────────────────┼─────────┼─────────────────┼────────────────┼─────────────────┼─────────────────┼─────────────────┼─────────────────┼─────────────────┼─────┤ │ TTFT │ total │ 311.4 ms │ 226.1 ms │ 484.5 ms │ 284.1 ms │ 373.7 ms │ 409.9 ms │ 477.0 ms │ 8 │ ├──────────────────────────┼─────────┼─────────────────┼────────────────┼─────────────────┼─────────────────┼─────────────────┼─────────────────┼─────────────────┼─────┤ │ TPOT │ total │ 15.7 ms │ 15.3 ms │ 15.9 ms │ 15.8 ms │ 15.9 ms │ 15.9 ms │ 15.9 ms │ 8 │ ├──────────────────────────┼─────────┼─────────────────┼────────────────┼─────────────────┼─────────────────┼─────────────────┼─────────────────┼─────────────────┼─────┤ │ ITL │ total │ 15.6 ms │ 0.0 ms │ 48.4 ms │ 15.6 ms │ 15.8 ms │ 16.0 ms │ 20.1 ms │ 8 │ ├──────────────────────────┼─────────┼─────────────────┼────────────────┼─────────────────┼─────────────────┼─────────────────┼─────────────────┼─────────────────┼─────┤ │ InputTokens │ total │ 1491.5 │ 1460.0 │ 1545.0 │ 1490.5 │ 1499.25 │ 1515.6 │ 1542.06 │ 8 │ ├──────────────────────────┼─────────┼─────────────────┼────────────────┼─────────────────┼─────────────────┼─────────────────┼─────────────────┼─────────────────┼─────┤ │ OutputTokens │ total │ 452.125 │ 242.0 │ 512.0 │ 509.0 │ 512.0 │ 512.0 │ 512.0 │ 8 │ ├──────────────────────────┼─────────┼─────────────────┼────────────────┼─────────────────┼─────────────────┼─────────────────┼─────────────────┼─────────────────┼─────┤ │ OutputTokenThroughput │ total │ 60.9652 token/s │ 57.651 token/s │ 63.2079 token/s │ 61.2631 token/s │ 62.0915 token/s │ 63.0926 token/s │ 63.1963 token/s │ 8 │ ╘══════════════════════════╧═════════╧═════════════════╧════════════════╧═════════════════╧═════════════════╧═════════════════╧═════════════════╧═════════════════╧═════╛ 开启亲和性: ╒══════════════════════════╤═════════╤═════════════════╤═════════════════╤═════════════════╤═════════════════╤═════════════════╤═════════════════╤═════════════════╤═════╕ │ Performance Parameters │ Stage │ Average │ Min │ Max │ Median │ P75 │ P90 │ P99 │ N │ ╞══════════════════════════╪═════════╪═════════════════╪═════════════════╪═════════════════╪═════════════════╪═════════════════╪═════════════════╪═════════════════╪═════╡ │ E2EL │ total │ 7240.3 ms │ 4261.9 ms │ 8632.0 ms │ 7745.1 ms │ 8326.5 ms │ 8438.4 ms │ 8612.6 ms │ 8 │ ├──────────────────────────┼─────────┼─────────────────┼─────────────────┼─────────────────┼─────────────────┼─────────────────┼─────────────────┼─────────────────┼─────┤ │ TTFT │ total │ 320.5 ms │ 241.6 ms │ 519.1 ms │ 260.4 ms │ 393.4 ms │ 432.8 ms │ 510.5 ms │ 8 │ ├──────────────────────────┼─────────┼─────────────────┼─────────────────┼─────────────────┼─────────────────┼─────────────────┼─────────────────┼─────────────────┼─────┤ │ TPOT │ total │ 15.8 ms │ 15.4 ms │ 15.9 ms │ 15.9 ms │ 15.9 ms │ 15.9 ms │ 15.9 ms │ 8 │ ├──────────────────────────┼─────────┼─────────────────┼─────────────────┼─────────────────┼─────────────────┼─────────────────┼─────────────────┼─────────────────┼─────┤ │ ITL │ total │ 15.7 ms │ 0.0 ms │ 45.1 ms │ 15.6 ms │ 15.9 ms │ 16.1 ms │ 23.1 ms │ 8 │ ├──────────────────────────┼─────────┼─────────────────┼─────────────────┼─────────────────┼─────────────────┼─────────────────┼─────────────────┼─────────────────┼─────┤ │ InputTokens │ total │ 1491.5 │ 1460.0 │ 1545.0 │ 1490.5 │ 1499.25 │ 1515.6 │ 1542.06 │ 8 │ ├──────────────────────────┼─────────┼─────────────────┼─────────────────┼─────────────────┼─────────────────┼─────────────────┼─────────────────┼─────────────────┼─────┤ │ OutputTokens │ total │ 439.125 │ 254.0 │ 512.0 │ 481.5 │ 512.0 │ 512.0 │ 512.0 │ 8 │ ├──────────────────────────┼─────────┼─────────────────┼─────────────────┼─────────────────┼─────────────────┼─────────────────┼─────────────────┼─────────────────┼─────┤ │ OutputTokenThroughput │ total │ 60.5041 token/s │ 58.5203 token/s │ 62.9559 token/s │ 60.4373 token/s │ 61.3642 token/s │ 61.9798 token/s │ 62.8583 token/s │ 8 │ ╘══════════════════════════╧═════════╧═════════════════╧═════════════════╧═════════════════╧═════════════════╧═════════════════╧═════════════════╧═════════════════╧═════╛ ## **6. CheckList** > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] [ ] 代码注释完备 [ ] 正确记录维测日志 [ ] 是否有UT用例 [ ] 若涉及多线程场景,考虑了并发场景,不存在死锁问题 See merge request: Ascend/MindIE-Motor!568 | 1 个月前 | |
[docs] 添加文档托管网站基础设施 Co-authored-by: Jechin<yuzechen1@huawei.com> # message auto-generated for no-merge-commit merge: !114 merge docs/readthedocs into master [docs] 添加文档托管网站基础设施 Created-by: Jechin Commit-by: Jechin Merged-by: towncharlie Description: ## **1. 合入背景** > 请描述为什么要做这个PR内的改动。\ > 如涉及,请关联前序PR或同特性/需求下的其他PR。\ > 如果是修复之前PR引入的问题,请关联引入问题的PR。\ > 请通过#ISSUE ID关联issue。\ > 注意: Fixes #ISSUE ID会自动关闭issue,如问题部分解决请不要使用Fixes,可以用Fix part of #ISSUE ID替代. Fixes [#80](https://gitcode.com/Ascend/MindIE-PyMotor/issues/80) ## **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] [x] 代码注释完备 [x] 正确记录维测日志 [x] 是否有UT用例 [x] 若涉及多线程场景,考虑了并发场景,不存在死锁问题 See merge request: Ascend/MindIE-PyMotor!114 | 3 个月前 | |
[skill]新增Motor开发skill Co-authored-by: 吕有辉<lvyouhui@huawei.com> # message auto-generated for no-merge-commit merge: !395 merge skills_upload into master [skill]新增Motor开发skill Created-by: codeDogPro Commit-by: 吕有辉 Merged-by: tobking Description: ## 摘要 关联 ISSUE:https://gitcode.com/Ascend/MindIE-Motor/issues/383 新增 Agent Skill motor-dev,将 MindIE-PyMotor 的开发规范、模块架构、测试工作流固化为 Agent 的长期知识,并支持**持续学习**(bug 案例沉淀)与**问题定位后自动提 ISSUE**。使 AI 辅助开发自动遵循项目约定、从历史 bug 中学习、并可将验证过的问题一键反馈到社区。 ## 内容 ### 仓库结构( .agent/skills/motor-dev/) Skill 遵循 [Agent Skills 开放标准](https://agentskills.io/specification)(纯 Markdown + YAML frontmatter,Claude Code / Codex / Gemini CLI 等均可读取),放在通用路径 .agent/skills/ 下: text .agent/skills/motor-dev/ ├── SKILL.md # 入口:硬性约束 + 持续学习声明 + 调试工作流 ├── bug-fix-history/ # 持续学习案例库(渐进式披露) │ ├── INDEX.md # 轻量索引(一行一条,按关键词检索) │ └── <module>/<case>.md # 案例正文(现象/根因/为什么会写出/修复/测试拦截/场景/关键词) └── references/ # 10 篇深度参考(按需加载) ├── code-style.md # 代码风格完整指南(含 Python 3.10+ 类型语法、pre-commit 规则) ├── testing-guide.md # 测试命令选项、mock/fixture 模式 ├── coordinator.md # Coordinator:多进程、ZMQ/SHM、调度策略 ├── controller.md # Controller:Observer、状态机、FaultManager ├── node_manager.md # NodeManager:sidecar 生命周期 ├── engine-server.md # EngineServer:双端点、dispatch adapter、健康监控 ├── metrics.md # Metrics:4 层设计、Prometheus 解析 ├── e2e-testing.md # E2E 测试约定 ├── kv-conductor.md # KV Conductor(Rust):radix tree、事件解析 └── issue-reporting.md # 提 ISSUE 流程(token 提交 / markdown 降级 / 防重复检查) ### 核心能力 #### 1. 开发约束(SKILL.md) - 硬性约束:每个 motor/ 改动必须附带测试、只用 bash tests/run_tests.sh、日志用 %s 占位、Mulan PSL v2 license 头、Python 3.10+ 原生类型语法(X | None 而非 Optional[X],pre-commit check-modern-typing 强制) - 「模块 → 参考文档」路由表:改哪个模块读哪篇,只加载需要的深度(渐进式披露) - 渐进式测试工作流:单文件 → 模块 → 全量 #### 2. 持续学习(bug-fix-history/) - 每个调试会话自动沉淀案例:「为什么会写出这个 bug」的认知教训 + 拦截测试 - 调试前先查 INDEX.md(轻量索引),命中关键词再读案例正文——历史越长,上下文开销不变 - 防噪音规则:仅固化已验证结论,去重,每模块上限 10 例 #### 3. 问题定位后自动提 ISSUE(references/issue-reporting.md) - 修复闭环完成后询问用户是否按 Motor bug-report 模板提交 ISSUE - 提 ISSUE 前**硬性检查历史 issue**(GitCode API 搜索),相似已存在则不重复提交 - 提交方式三选一:GITCODE_TOKEN 环境变量直接提交(token 绝不落盘/落日志)/ 生成 markdown 草稿手动粘贴 / 跳过 - 渐进式披露:提 ISSUE 细节仅在用户同意后才加载 #### 4. 渐进式披露(本 skill 的核心设计) - 热路径(SKILL.md)约 100 行;深度知识按需加载,每次会话只花约 1K token 起步 - 案例库、提 ISSUE 细节均按需读取,不提前加载 ## 为什么重要 1. **一致性**:默认情况下,每个 motor/ 改动都自带测试、规范日志、license 头和新语法类型标注——不再需要评审来回纠结风格问题。 2. **上手成本低**:新贡献者(人或 AI)在一个地方就能了解模块架构,无需通读上万行源码。 3. **上下文高效**:渐进式披露让热路径只有约 100 行;只有触及相关模块时才加载深度内容。 4. **正确性**:固化了很多不易重新发现的非显性知识(ZMQ/SHM 协议布局、状态机转换、KV 事件线格式、负数 workload 等踩坑案例)。 5. **社区反馈闭环**:验证过的问题可直接按模板反馈为 ISSUE(防重复),反哺上游。 ## 使用方式(对协作者) 仓库只上库 .agent/skills/(通用标准路径)。**Claude Code 原生只扫描 .claude/skills/**,因此 Claude Code 用户需在本地创建 symlink 启用(官方支持 symlink 跟随): bash cd <repo-root> ln -s ../.agent/skills .claude/skills .claude/ 已在 .gitignore 中,该 symlink 不会进入版本库。其他 Agent(Codex / Gemini CLI / 通用工具)直接读取 .agent/skills/,无需额外配置。 ## 测试 - npx markdownlint-cli .agent/skills/**/*.md — 0 处格式违规(MD031/MD032/MD033/MD040/MD058/MD024/MD012)。 - 案例库与 skill 文档中引用的文件路径/行数均与当前 master 源码核对一致。 See merge request: Ascend/MindIE-Motor!395 | 30 天前 | |
doc tools问题整改 Co-authored-by: xiao-qing123<xiaoqing14@h-partners.com> # message auto-generated for no-merge-commit merge: !74 merge dev into master doc tools问题整改 Created-by: xiao-qing123 Commit-by: xiao-qing123 Merged-by: ascend-robot Description: Fixes [#57](https://gitcode.com/Ascend/MindIE-PyMotor/issues/57) 1、Doc Tools四类问题修改 2、docs目录文档内容格式(接口格式等)整改 See merge request: Ascend/MindIE-PyMotor!74 | 4 个月前 | |
[Feature] 新增 Dockerfile 制作镜像方式 Co-authored-by: jingyp<jingyp@chinatelecom.cn> # message auto-generated for no-merge-commit merge: !143 merge feature/add-dockerfile into master [Feature] 新增 Dockerfile 制作镜像方式 Created-by: gcw_gxG14I7x Commit-by: jingyp Merged-by: tobking Description: ## **1. 合入背景** 新增 Dockerfile 构建镜像方式方便制作镜像 Fixes https://gitcode.com/Ascend/MindIE-Motor/issues/348 ## **2. 修改内容** 新增 Dockerfile 及 Makefile ## **3. 资料变更** 已更新文档 docs/zh/user_guide/maintenance/build_motor_image_from_vllm_ascend.md 和 docs/zh/developer_guide/build_motor_image_from_vllm_ascend.md ## **4. 接口变更** 不涉及 ## **5. 测试结果**  ## **6. CheckList** > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] [ ] 代码注释完备 [x] 正确记录维测日志 [x] 是否有UT用例 [x] 若涉及多线程场景,考虑了并发场景,不存在死锁问题 See merge request: Ascend/MindIE-Motor!143 | 1 个月前 | |
[docs] README 增加版本说明书入口链接 Co-authored-by: 高鹏<gaopeng140@huawei.com> # message auto-generated for no-merge-commit merge: !688 merge cursor/readme-version-doc-link into master [docs] README 增加版本说明书入口链接 Created-by: weixin_63825906 Commit-by: 高鹏 Merged-by: tobking Description: ## **1. 合入背景** > README 未直接给出版本说明书入口,用户不易找到组件版本配套与兼容性信息。单独成节并放在「最新消息」前,提升可见性。 Fix part of [#456](https://gitcode.com/Ascend/MindIE-Motor/issues/456) ## **2. 修改内容** 1. 在 README.md「最新消息」前新增独立标题「# 版本说明书」。 ## **3. 资料变更** 涉及:更新仓库根目录 README.md。 ## **4. 接口变更** 不涉及。 ## **5. 测试结果** 文档变更,人工检视无问题。 ## **6. CheckList** [x] 代码注释完备(不涉及) [x] 正确记录维测日志(不涉及) [x] 是否有UT用例(不涉及) [x] 若涉及多线程场景,考虑了并发场景,不存在死锁问题(不涉及) See merge request: Ascend/MindIE-Motor!688 | 27 天前 | |
【feature】kv-conductor Co-authored-by: 吕有辉<lvyouhui@huawei.com> # message auto-generated for no-merge-commit merge: !568 merge feat/kv-conductor into master 【feature】kv-conductor Created-by: codeDogPro Commit-by: 吕有辉 Merged-by: towncharlie Description: ## **1. 合入背景** https://gitcode.com/Ascend/MindIE-PyMotor/issues/338 内部subCMC已经评审,该大PR同意合入 ## **2. 修改内容** 1、引入kv-conductor【rust源代码,测试代码,设计文档】 2、Coordinator conductor client适配kv-conductor 3、新增kv-conductor config 4、kvcache_affine.md重写,以kv-conductor为准 5、build.sh集成kv-conductor二进制打包进whl的能力,支持跳过kv-conductor打包,便于在无rust编译环境上构建基础组件 ## **3. 资料变更** 涉及 ## **4. 接口变更** 涉及 ## **5. 测试结果** whl包版kv-conductor拉起成功,请求命中匹配成功 Looking in indexes: https://repo.huaweicloud.com/repository/pypi/simple, https://mirrors.huaweicloud.com/ascend/repos/pypi Processing ./dist/motor-0.1.0-py3-none-any.whl Installing collected packages: motor Attempting uninstall: motor Found existing installation: motor 0.1.0 Uninstalling motor-0.1.0: Successfully uninstalled motor-0.1.0 Successfully installed motor-0.1.0 WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv [notice] A new release of pip is available: 24.0 -> 26.1.2 [notice] To update, run: pip install --upgrade pip Current node role: ROLE=kv_conductor Starting KV Conductor on 0.0.0.0:13333 2026-07-21T17:12:09.17062356+08:00 INFO scoring config hbm_weight=3 cpu_weight=2 disk_weight=1 2026-07-21T17:12:09.17093877+08:00 INFO KV conductor starting on 0.0.0.0:13333 2026-07-21T17:12:10.44555639+08:00 TRACE connection 192.168.196.1:50480 accepted 2026-07-21T17:12:10.44581192+08:00 TRACE connection 192.168.196.1:50480 closed 2026-07-21T18:18:48.26729199+08:00 DEBUG request{method=POST uri=/query version=HTTP/1.1}: started processing request 2026-07-21T18:18:48.26737949+08:00 DEBUG request{method=POST uri=/query version=HTTP/1.1}: query request model=Qwen3-30B-A3B-W8A8 tenant=default num_tokens=1503 2026-07-21T18:18:48.26740762+08:00 DEBUG request{method=POST uri=/query version=HTTP/1.1}: find_matches seq_len=12 depth=11 active_workers=2 elapsed_us=13 2026-07-21T18:18:48.26741747+08:00 DEBUG request{method=POST uri=/query version=HTTP/1.1}: hash_computed num_tokens=1503 block_size=128 num_hashes=12 hash_us=2 scores=2 2026-07-21T18:18:48.26743069+08:00 DEBUG request{method=POST uri=/query version=HTTP/1.1}: query profile num_tokens=1503 block_size=128 hash_us=37 total_us=43 2026-07-21T18:18:48.26745731+08:00 DEBUG request{method=POST uri=/query version=HTTP/1.1}: finished processing request latency=0 ms status=200 Qwen3-30B-A3B,Prefill DP2,Decode DP2测试如下: 发送8个请求,gsm8 未开启亲和性调度: ╒══════════════════════════╤═════════╤═════════════════╤════════════════╤═════════════════╤═════════════════╤═════════════════╤═════════════════╤═════════════════╤═════╕ │ Performance Parameters │ Stage │ Average │ Min │ Max │ Median │ P75 │ P90 │ P99 │ N │ ╞══════════════════════════╪═════════╪═════════════════╪════════════════╪═════════════════╪═════════════════╪═════════════════╪═════════════════╪═════════════════╪═════╡ │ E2EL │ total │ 7389.6 ms │ 4197.7 ms │ 8487.4 ms │ 8063.4 ms │ 8298.8 ms │ 8377.5 ms │ 8476.4 ms │ 8 │ ├──────────────────────────┼─────────┼─────────────────┼────────────────┼─────────────────┼─────────────────┼─────────────────┼─────────────────┼─────────────────┼─────┤ │ TTFT │ total │ 311.4 ms │ 226.1 ms │ 484.5 ms │ 284.1 ms │ 373.7 ms │ 409.9 ms │ 477.0 ms │ 8 │ ├──────────────────────────┼─────────┼─────────────────┼────────────────┼─────────────────┼─────────────────┼─────────────────┼─────────────────┼─────────────────┼─────┤ │ TPOT │ total │ 15.7 ms │ 15.3 ms │ 15.9 ms │ 15.8 ms │ 15.9 ms │ 15.9 ms │ 15.9 ms │ 8 │ ├──────────────────────────┼─────────┼─────────────────┼────────────────┼─────────────────┼─────────────────┼─────────────────┼─────────────────┼─────────────────┼─────┤ │ ITL │ total │ 15.6 ms │ 0.0 ms │ 48.4 ms │ 15.6 ms │ 15.8 ms │ 16.0 ms │ 20.1 ms │ 8 │ ├──────────────────────────┼─────────┼─────────────────┼────────────────┼─────────────────┼─────────────────┼─────────────────┼─────────────────┼─────────────────┼─────┤ │ InputTokens │ total │ 1491.5 │ 1460.0 │ 1545.0 │ 1490.5 │ 1499.25 │ 1515.6 │ 1542.06 │ 8 │ ├──────────────────────────┼─────────┼─────────────────┼────────────────┼─────────────────┼─────────────────┼─────────────────┼─────────────────┼─────────────────┼─────┤ │ OutputTokens │ total │ 452.125 │ 242.0 │ 512.0 │ 509.0 │ 512.0 │ 512.0 │ 512.0 │ 8 │ ├──────────────────────────┼─────────┼─────────────────┼────────────────┼─────────────────┼─────────────────┼─────────────────┼─────────────────┼─────────────────┼─────┤ │ OutputTokenThroughput │ total │ 60.9652 token/s │ 57.651 token/s │ 63.2079 token/s │ 61.2631 token/s │ 62.0915 token/s │ 63.0926 token/s │ 63.1963 token/s │ 8 │ ╘══════════════════════════╧═════════╧═════════════════╧════════════════╧═════════════════╧═════════════════╧═════════════════╧═════════════════╧═════════════════╧═════╛ 开启亲和性: ╒══════════════════════════╤═════════╤═════════════════╤═════════════════╤═════════════════╤═════════════════╤═════════════════╤═════════════════╤═════════════════╤═════╕ │ Performance Parameters │ Stage │ Average │ Min │ Max │ Median │ P75 │ P90 │ P99 │ N │ ╞══════════════════════════╪═════════╪═════════════════╪═════════════════╪═════════════════╪═════════════════╪═════════════════╪═════════════════╪═════════════════╪═════╡ │ E2EL │ total │ 7240.3 ms │ 4261.9 ms │ 8632.0 ms │ 7745.1 ms │ 8326.5 ms │ 8438.4 ms │ 8612.6 ms │ 8 │ ├──────────────────────────┼─────────┼─────────────────┼─────────────────┼─────────────────┼─────────────────┼─────────────────┼─────────────────┼─────────────────┼─────┤ │ TTFT │ total │ 320.5 ms │ 241.6 ms │ 519.1 ms │ 260.4 ms │ 393.4 ms │ 432.8 ms │ 510.5 ms │ 8 │ ├──────────────────────────┼─────────┼─────────────────┼─────────────────┼─────────────────┼─────────────────┼─────────────────┼─────────────────┼─────────────────┼─────┤ │ TPOT │ total │ 15.8 ms │ 15.4 ms │ 15.9 ms │ 15.9 ms │ 15.9 ms │ 15.9 ms │ 15.9 ms │ 8 │ ├──────────────────────────┼─────────┼─────────────────┼─────────────────┼─────────────────┼─────────────────┼─────────────────┼─────────────────┼─────────────────┼─────┤ │ ITL │ total │ 15.7 ms │ 0.0 ms │ 45.1 ms │ 15.6 ms │ 15.9 ms │ 16.1 ms │ 23.1 ms │ 8 │ ├──────────────────────────┼─────────┼─────────────────┼─────────────────┼─────────────────┼─────────────────┼─────────────────┼─────────────────┼─────────────────┼─────┤ │ InputTokens │ total │ 1491.5 │ 1460.0 │ 1545.0 │ 1490.5 │ 1499.25 │ 1515.6 │ 1542.06 │ 8 │ ├──────────────────────────┼─────────┼─────────────────┼─────────────────┼─────────────────┼─────────────────┼─────────────────┼─────────────────┼─────────────────┼─────┤ │ OutputTokens │ total │ 439.125 │ 254.0 │ 512.0 │ 481.5 │ 512.0 │ 512.0 │ 512.0 │ 8 │ ├──────────────────────────┼─────────┼─────────────────┼─────────────────┼─────────────────┼─────────────────┼─────────────────┼─────────────────┼─────────────────┼─────┤ │ OutputTokenThroughput │ total │ 60.5041 token/s │ 58.5203 token/s │ 62.9559 token/s │ 60.4373 token/s │ 61.3642 token/s │ 61.9798 token/s │ 62.8583 token/s │ 8 │ ╘══════════════════════════╧═════════╧═════════════════╧═════════════════╧═════════════════╧═════════════════╧═════════════════╧═════════════════╧═════════════════╧═════╛ ## **6. CheckList** > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] [ ] 代码注释完备 [ ] 正确记录维测日志 [ ] 是否有UT用例 [ ] 若涉及多线程场景,考虑了并发场景,不存在死锁问题 See merge request: Ascend/MindIE-Motor!568 | 1 个月前 | |
[Feature] 支持 Dev Container 开发环境 Co-authored-by: ChenDAO1<alkaidb3v.chen@gmail.com> # message auto-generated for no-merge-commit merge: !613 merge codex/issue-228-devcontainer into master [Feature] 支持 Dev Container 开发环境 Created-by: kaid____a Commit-by: kaid____a;ChenDAO1 Merged-by: tobking Description: ## **1. 合入背景** 当前仓库缺少统一的 Dev Container 配置,开发者需要自行安装 Python、Rust、系统工具及项目依赖,增加了环境配置成本。 本 PR 为仓库增加可复现的容器化开发环境。 Fixes #228 ## **2. 修改内容** 1. 新增 .devcontainer/devcontainer.json - 使用 Python 3.11 开发环境 - 配置 Python、Pylance、Ruff、ShellCheck 等 VS Code 扩展 - 安装稳定版 Rust 工具链 - 通过 postCreateCommand 自动初始化项目 2. 新增 .devcontainer/Dockerfile - 安装编译工具、ZeroMQ、OpenSSL、ShellCheck 等系统依赖 - 处理基础镜像中失效的 Yarn APT 软件源 3. 新增 .devcontainer/post-create.sh - 安装 requirements.txt 依赖 - 以 editable 模式安装 MindIE-Motor - 自动生成 Protobuf Python 文件 - 兼容 Windows checkout 产生的 CRLF shell 脚本 4. 新增 .gitattributes - 确保容器内执行的 Shell 脚本使用 LF 换行符 5. 更新 contributing.md - 增加 Dev Container 使用方法及适用范围说明 ## **3. 资料变更** 更新 contributing.md,补充通过 VS Code **Dev Containers: Reopen in Container** 创建开发环境的说明。 ## **4. 接口变更** 不涉及对外接口变更。 ## **5. 测试结果** 本地 Windows + Docker Desktop 环境验证结果: - Dev Container 配置解析通过 - Dev Container 镜像实际构建成功 - 容器创建及 postCreateCommand 执行成功 - 重复执行 postCreateCommand 成功 - Python 版本:3.11.13 - Rust/Cargo 版本:1.97.1 - ShellCheck 检查通过 - Pytest 成功收集 2492 个测试用例 - cargo check --manifest-path motor/kv_conductor/Cargo.toml 通过 - 非集成测试:2489 passed,1 skipped - test_file_check 依赖 os.chown,Windows Docker Desktop bind mount 不支持该操作,未执行 - test_pre_separate_l6_inactive_instances_triggers_scale_p2d 在完整测试集中存在顺序依赖,单独重跑通过 涉及 NPU、CANN 或其他昇腾硬件环境的集成测试未在本机执行。 ## **6. CheckList** - [x] 代码注释完备 - [x] 正确记录维测日志(不涉及新增运行时日志) - [x] 是否有 UT 用例(已运行现有非集成测试) - [x] 若涉及多线程场景,考虑了并发场景,不存在死锁问题(不涉及) See merge request: Ascend/MindIE-Motor!613 | 1 个月前 | |
【docs】修改pymotor名称&新增目录结构&新增通信矩阵 Co-authored-by: xiao-qing123<xiaoqing14@h-partners.com> # message auto-generated for no-merge-commit merge: !504 merge master into master 【docs】修改pymotor名称&新增目录结构&新增通信矩阵 Created-by: xiao-qing123 Commit-by: xiao-qing123 Merged-by: towncharlie Description: Fixes [#301](https://gitcode.com/Ascend/MindIE-PyMotor/issues/301) 1、修改MindIE Pymotor名称为:MindIE Motor 2、新增menu文件 3、新增MindIE Motor通信矩阵 See merge request: Ascend/MindIE-PyMotor!504 | 1 个月前 | |
[docs] 对齐 MindIE-Motor 文档站品牌、锚点与仓链 Co-authored-by: Jechin<yuzechen1@huawei.com> # message auto-generated for no-merge-commit merge: !621 merge fix/docs-mkdocs-site-motor into master [docs] 对齐 MindIE-Motor 文档站品牌、锚点与仓链 Created-by: Jechin Commit-by: Jechin Merged-by: towncharlie Description: ## **1. 合入背景** > Read the Docs 页眉仍显示旧品牌 MindIE-PyMotor;中文标题锚点失效;文档内存在旧仓名断链;README 缺少在线文档入口且 Ask AI 仍指向旧仓。 Fixes [#366](https://gitcode.com/Ascend/MindIE-Motor/issues/366) 双合:本 PR 合入 master;同改动另提至 v3.1.0:!622。 ## **2. 修改内容** 1. 更新 mkdocs.yml:站点元数据改为 MindIE-Motor,site_url 对齐 https://mindie-motor.readthedocs.io/;toc 启用 Unicode 友好 slugify(不使用标题显式 {#id})。 2. 修正文档内旧仓名 MindIE-PyMotor 链接与 docs 外断链(改为指向 Ascend/MindIE-Motor 的可点击绝对链接;仓内路径纠错)。 3. 更新 README.md:补充 Read the Docs 入口;Zread / DeepWiki 改为 Ascend/MindIE-Motor。 ## **3. 资料变更** 涉及:mkdocs.yml、README.md,以及相关 docs/zh 中文文档链接与品牌文案。 ## **4. 接口变更** 不涉及 ## **5. 测试结果** > 本地:conda activate motor 后 mkdocs build 可验证。\ > 已 rebase 至最新 master。 ## **6. CheckList** > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] [x] 代码注释完备 [x] 正确记录维测日志 [x] 是否有UT用例 [x] 若涉及多线程场景,考虑了并发场景,不存在死锁问题 See merge request: Ascend/MindIE-Motor!621 | 1 个月前 | |
[test] ut耗时与warning告警优化 Co-authored-by: Jechin<yuzechen1@huawei.com> # message auto-generated for no-merge-commit merge: !269 merge test/ut-speedup-and-warnings-report into master [test] ut耗时与warning告警优化 Created-by: Jechin Commit-by: Jechin Merged-by: towncharlie Description: ## **1. 合入背景** > 请描述为什么要做这个PR内的改动。\ > 如涉及,请关联前序PR或同特性/需求下的其他PR。\ > 如果是修复之前PR引入的问题,请关联引入问题的PR。\ > 请通过#ISSUE ID关联issue。\ > 注意: Fixes #ISSUE ID会自动关闭issue,如问题部分解决请不要使用Fixes,可以用Fix part of #ISSUE ID替代. Fixes [#171](https://gitcode.com/Ascend/MindIE-PyMotor/issues/171) ## **2. 修改内容** > 请<ins>**描述修改内容的具体实现**</ins>,涉及哪些组件之间进行交互,可以用1、2、3、...进行罗列。 > 如果是需求或者重构类的PR,需要<ins>**补充详细设计文档**</ins>(说明上下游组件关系、时序图、类图、DFX能力等内容)。 | 文件 | 改动性质 | |------|----------| | pytest.ini | 移除第三方 warning 过滤 | | tests/run_tests.sh | warning 不再导致失败 | | tests/coordinator/router/test_router_cdp_separation.py | CDP 重试加速 | | tests/engine_server/core/test_sim_inference.py | health_check 加速 | | tests/coordinator/test_http_server.py | 限流 mock + pylint/ruff 修复 | > 全量并行 UT 耗时从约 31s 降至约 5s(优化前后对比验证过)。 ## **3. 资料变更** > 请确认<ins>**是否涉及资料变更**</ins>。\ > 如涉及,需要在PR中体现,并简要说明修改内容。\ > 如不涉及,需填写“不涉及”。 不涉及 ## **4. 接口变更** > 请确认<ins>**是否涉及跨代码仓或者客户面可见的接口变更**</ins>。\ > 如涉及,需详细说明接口以及对应的变更内容,同时需要在资料中体现。\ > 如不涉及,需填写“不涉及”。 不涉及 ## **5. 测试结果** > 需体现<ins>**测试场景,测试方法以及测试结果**</ins>。\ > 测试用例设计时需考虑硬件、部署方式、功能、性能、精度、显存等维度。 已测试 ## **6. CheckList** > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] [x] 代码注释完备 [x] 正确记录维测日志 [x] 是否有UT用例 [x] 若涉及多线程场景,考虑了并发场景,不存在死锁问题 See merge request: Ascend/MindIE-PyMotor!269 | 2 个月前 | |
Coordinator支持故障请求重调度 Co-authored-by: wenjinhust<wenjin.sh@huawei.com> # message auto-generated for no-merge-commit merge: !260 merge dev2606/rescheduler/0609 into master Coordinator支持故障请求重调度 Created-by: wenjinhust Commit-by: wenjinhust Merged-by: towncharlie Description: ## **1. 合入背景** > 请描述为什么要做这个PR内的改动。\ > 如涉及,请关联前序PR或同特性/需求下的其他PR。\ > 如果是修复之前PR引入的问题,请关联引入问题的PR。\ > 请通过#ISSUE ID关联issue。\ > 注意: Fixes #ISSUE ID会自动关闭issue,如问题部分解决请不要使用Fixes,可以用Fix part of #ISSUE ID替代. Fixes [#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!260 | 2 个月前 | |
【docs】修改pymotor名称&新增目录结构&新增通信矩阵 Co-authored-by: xiao-qing123<xiaoqing14@h-partners.com> # message auto-generated for no-merge-commit merge: !504 merge master into master 【docs】修改pymotor名称&新增目录结构&新增通信矩阵 Created-by: xiao-qing123 Commit-by: xiao-qing123 Merged-by: towncharlie Description: Fixes [#301](https://gitcode.com/Ascend/MindIE-PyMotor/issues/301) 1、修改MindIE Pymotor名称为:MindIE Motor 2、新增menu文件 3、新增MindIE Motor通信矩阵 See merge request: Ascend/MindIE-PyMotor!504 | 1 个月前 | |
【feature】kv-conductor Co-authored-by: 吕有辉<lvyouhui@huawei.com> # message auto-generated for no-merge-commit merge: !568 merge feat/kv-conductor into master 【feature】kv-conductor Created-by: codeDogPro Commit-by: 吕有辉 Merged-by: towncharlie Description: ## **1. 合入背景** https://gitcode.com/Ascend/MindIE-PyMotor/issues/338 内部subCMC已经评审,该大PR同意合入 ## **2. 修改内容** 1、引入kv-conductor【rust源代码,测试代码,设计文档】 2、Coordinator conductor client适配kv-conductor 3、新增kv-conductor config 4、kvcache_affine.md重写,以kv-conductor为准 5、build.sh集成kv-conductor二进制打包进whl的能力,支持跳过kv-conductor打包,便于在无rust编译环境上构建基础组件 ## **3. 资料变更** 涉及 ## **4. 接口变更** 涉及 ## **5. 测试结果** whl包版kv-conductor拉起成功,请求命中匹配成功 Looking in indexes: https://repo.huaweicloud.com/repository/pypi/simple, https://mirrors.huaweicloud.com/ascend/repos/pypi Processing ./dist/motor-0.1.0-py3-none-any.whl Installing collected packages: motor Attempting uninstall: motor Found existing installation: motor 0.1.0 Uninstalling motor-0.1.0: Successfully uninstalled motor-0.1.0 Successfully installed motor-0.1.0 WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv [notice] A new release of pip is available: 24.0 -> 26.1.2 [notice] To update, run: pip install --upgrade pip Current node role: ROLE=kv_conductor Starting KV Conductor on 0.0.0.0:13333 2026-07-21T17:12:09.17062356+08:00 INFO scoring config hbm_weight=3 cpu_weight=2 disk_weight=1 2026-07-21T17:12:09.17093877+08:00 INFO KV conductor starting on 0.0.0.0:13333 2026-07-21T17:12:10.44555639+08:00 TRACE connection 192.168.196.1:50480 accepted 2026-07-21T17:12:10.44581192+08:00 TRACE connection 192.168.196.1:50480 closed 2026-07-21T18:18:48.26729199+08:00 DEBUG request{method=POST uri=/query version=HTTP/1.1}: started processing request 2026-07-21T18:18:48.26737949+08:00 DEBUG request{method=POST uri=/query version=HTTP/1.1}: query request model=Qwen3-30B-A3B-W8A8 tenant=default num_tokens=1503 2026-07-21T18:18:48.26740762+08:00 DEBUG request{method=POST uri=/query version=HTTP/1.1}: find_matches seq_len=12 depth=11 active_workers=2 elapsed_us=13 2026-07-21T18:18:48.26741747+08:00 DEBUG request{method=POST uri=/query version=HTTP/1.1}: hash_computed num_tokens=1503 block_size=128 num_hashes=12 hash_us=2 scores=2 2026-07-21T18:18:48.26743069+08:00 DEBUG request{method=POST uri=/query version=HTTP/1.1}: query profile num_tokens=1503 block_size=128 hash_us=37 total_us=43 2026-07-21T18:18:48.26745731+08:00 DEBUG request{method=POST uri=/query version=HTTP/1.1}: finished processing request latency=0 ms status=200 Qwen3-30B-A3B,Prefill DP2,Decode DP2测试如下: 发送8个请求,gsm8 未开启亲和性调度: ╒══════════════════════════╤═════════╤═════════════════╤════════════════╤═════════════════╤═════════════════╤═════════════════╤═════════════════╤═════════════════╤═════╕ │ Performance Parameters │ Stage │ Average │ Min │ Max │ Median │ P75 │ P90 │ P99 │ N │ ╞══════════════════════════╪═════════╪═════════════════╪════════════════╪═════════════════╪═════════════════╪═════════════════╪═════════════════╪═════════════════╪═════╡ │ E2EL │ total │ 7389.6 ms │ 4197.7 ms │ 8487.4 ms │ 8063.4 ms │ 8298.8 ms │ 8377.5 ms │ 8476.4 ms │ 8 │ ├──────────────────────────┼─────────┼─────────────────┼────────────────┼─────────────────┼─────────────────┼─────────────────┼─────────────────┼─────────────────┼─────┤ │ TTFT │ total │ 311.4 ms │ 226.1 ms │ 484.5 ms │ 284.1 ms │ 373.7 ms │ 409.9 ms │ 477.0 ms │ 8 │ ├──────────────────────────┼─────────┼─────────────────┼────────────────┼─────────────────┼─────────────────┼─────────────────┼─────────────────┼─────────────────┼─────┤ │ TPOT │ total │ 15.7 ms │ 15.3 ms │ 15.9 ms │ 15.8 ms │ 15.9 ms │ 15.9 ms │ 15.9 ms │ 8 │ ├──────────────────────────┼─────────┼─────────────────┼────────────────┼─────────────────┼─────────────────┼─────────────────┼─────────────────┼─────────────────┼─────┤ │ ITL │ total │ 15.6 ms │ 0.0 ms │ 48.4 ms │ 15.6 ms │ 15.8 ms │ 16.0 ms │ 20.1 ms │ 8 │ ├──────────────────────────┼─────────┼─────────────────┼────────────────┼─────────────────┼─────────────────┼─────────────────┼─────────────────┼─────────────────┼─────┤ │ InputTokens │ total │ 1491.5 │ 1460.0 │ 1545.0 │ 1490.5 │ 1499.25 │ 1515.6 │ 1542.06 │ 8 │ ├──────────────────────────┼─────────┼─────────────────┼────────────────┼─────────────────┼─────────────────┼─────────────────┼─────────────────┼─────────────────┼─────┤ │ OutputTokens │ total │ 452.125 │ 242.0 │ 512.0 │ 509.0 │ 512.0 │ 512.0 │ 512.0 │ 8 │ ├──────────────────────────┼─────────┼─────────────────┼────────────────┼─────────────────┼─────────────────┼─────────────────┼─────────────────┼─────────────────┼─────┤ │ OutputTokenThroughput │ total │ 60.9652 token/s │ 57.651 token/s │ 63.2079 token/s │ 61.2631 token/s │ 62.0915 token/s │ 63.0926 token/s │ 63.1963 token/s │ 8 │ ╘══════════════════════════╧═════════╧═════════════════╧════════════════╧═════════════════╧═════════════════╧═════════════════╧═════════════════╧═════════════════╧═════╛ 开启亲和性: ╒══════════════════════════╤═════════╤═════════════════╤═════════════════╤═════════════════╤═════════════════╤═════════════════╤═════════════════╤═════════════════╤═════╕ │ Performance Parameters │ Stage │ Average │ Min │ Max │ Median │ P75 │ P90 │ P99 │ N │ ╞══════════════════════════╪═════════╪═════════════════╪═════════════════╪═════════════════╪═════════════════╪═════════════════╪═════════════════╪═════════════════╪═════╡ │ E2EL │ total │ 7240.3 ms │ 4261.9 ms │ 8632.0 ms │ 7745.1 ms │ 8326.5 ms │ 8438.4 ms │ 8612.6 ms │ 8 │ ├──────────────────────────┼─────────┼─────────────────┼─────────────────┼─────────────────┼─────────────────┼─────────────────┼─────────────────┼─────────────────┼─────┤ │ TTFT │ total │ 320.5 ms │ 241.6 ms │ 519.1 ms │ 260.4 ms │ 393.4 ms │ 432.8 ms │ 510.5 ms │ 8 │ ├──────────────────────────┼─────────┼─────────────────┼─────────────────┼─────────────────┼─────────────────┼─────────────────┼─────────────────┼─────────────────┼─────┤ │ TPOT │ total │ 15.8 ms │ 15.4 ms │ 15.9 ms │ 15.9 ms │ 15.9 ms │ 15.9 ms │ 15.9 ms │ 8 │ ├──────────────────────────┼─────────┼─────────────────┼─────────────────┼─────────────────┼─────────────────┼─────────────────┼─────────────────┼─────────────────┼─────┤ │ ITL │ total │ 15.7 ms │ 0.0 ms │ 45.1 ms │ 15.6 ms │ 15.9 ms │ 16.1 ms │ 23.1 ms │ 8 │ ├──────────────────────────┼─────────┼─────────────────┼─────────────────┼─────────────────┼─────────────────┼─────────────────┼─────────────────┼─────────────────┼─────┤ │ InputTokens │ total │ 1491.5 │ 1460.0 │ 1545.0 │ 1490.5 │ 1499.25 │ 1515.6 │ 1542.06 │ 8 │ ├──────────────────────────┼─────────┼─────────────────┼─────────────────┼─────────────────┼─────────────────┼─────────────────┼─────────────────┼─────────────────┼─────┤ │ OutputTokens │ total │ 439.125 │ 254.0 │ 512.0 │ 481.5 │ 512.0 │ 512.0 │ 512.0 │ 8 │ ├──────────────────────────┼─────────┼─────────────────┼─────────────────┼─────────────────┼─────────────────┼─────────────────┼─────────────────┼─────────────────┼─────┤ │ OutputTokenThroughput │ total │ 60.5041 token/s │ 58.5203 token/s │ 62.9559 token/s │ 60.4373 token/s │ 61.3642 token/s │ 61.9798 token/s │ 62.8583 token/s │ 8 │ ╘══════════════════════════╧═════════╧═════════════════╧═════════════════╧═════════════════╧═════════════════╧═════════════════╧═════════════════╧═════════════════╧═════╛ ## **6. CheckList** > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] [ ] 代码注释完备 [ ] 正确记录维测日志 [ ] 是否有UT用例 [ ] 若涉及多线程场景,考虑了并发场景,不存在死锁问题 See merge request: Ascend/MindIE-Motor!568 | 1 个月前 |
MindIE Motor
简介
提供一键式 PD 分离与 PD 混部部署,基于云原生插件化架构灵活适配多种推理引擎(vLLM、SGLang),结合高性能调度与负载均衡能力,构建高可用、可扩展的大规模推理服务。
快速开始
在线文档:MindIE Motor 文档
以下是代码仓库智能体,点击 "Ask AI" ,即可开启智能代码学习与问答体验!它们将帮助您更深入地理解 MindIE Motor 的运行原理,并协助解决使用过程中遇到的问题与错误!
环境准备:安装前的相关软硬件环境准备,以及安装步骤,请参见环境准备。
快速部署:快速体验启动服务、接口调用、精度&性能测试和停止服务全流程,请参见快速部署。
最佳实践:PD 分离部署请参见PD 分离服务部署详细指导,PD 混部部署请参见PD 混部服务部署详细指导。
版本说明书
组件版本配套与兼容性说明,请参见版本配套说明。
最新消息
[2026/03] 🚀 MindIE Motor正式开源,新增代码仓智能体。
社区活动
MindIE 系列 TC/SIG 会议安排,请查看 Ascend会议中心。
开源社区论坛与技术交流、问题讨论及经验分享,请访问 昇腾论坛。
问题反馈
如果您在使用过程中发现异常,建议先查看仓库的 Issues 列表,确认是否已有相同或相近的问题。
如果现有问题列表中没有对应项,可以直接 创建新的 Issue,并尽量补充完整的问题现象、复现步骤、日志片段和环境信息,便于快速定位。
如果问题涉及安全风险,请不要通过公开 Issue 直接披露,建议按照 security.md 中的方式联系项目维护者。
贡献指南
如果您计划提交代码修改,建议按下面的流程进行:
- Fork 本项目的仓库,并 Clone 到本地。
- 提交前请通过所有单元测试,完整测试入口见 tests/run_tests.sh。
- 提交代码,并新建 Pull Request,需在 Pull Request 回复
compile触发门禁流水线(CI)。 - 代码检视:您需要根据评审意见修改代码,并重新提交更新。此流程可能涉及多轮迭代。
- 审核和测试通过后,会将您的 Pull Request 合并到项目的 master 分支。
许可证
本项目使用 Mulan PSL v2 开源许可证。