昇腾自研推理集群管理框架
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
Merge branch 'master' of https://gitcode.com/Ascend/MindIE-PyMotor into mooncake_standalone * 'master' of https://gitcode.com/Ascend/MindIE-PyMotor: [docs] docker only一键部署:部署指导与UT测试 feat(coordinator): support decode co-location fallback [反合][feature]支持配置vllm StartPlan and graph reuse acceleration能力 [feature]: 部署yaml增加自定义label和annotation功能 [features] docker only一键部署 [bugfix]新增权重挂载至coordinator,保证max_token能拿到tokenizer [feature]增加K8s、控制面与连通性诊断skill [Feature] MindIE Motor支持SGLang的服务化后端 [bugfix] 清理非必要三方依赖声明 | 5 天前 | |
[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 个月前 | |
[bugfix] 将 Read the Docs 触发 workflow 的 env 提升到顶层 Co-authored-by: Jechin<yuzechen1@huawei.com> # message auto-generated for no-merge-commit merge: !766 merge fix/actions-workflow-top-level-env into master [bugfix] 将 Read the Docs 触发 workflow 的 env 提升到顶层 Created-by: Jechin Commit-by: Jechin Merged-by: towncharlie Description: ## **1. 合入背景** .gitcode/workflows/trigger-readthedocs.yml 当前将 secrets 与分支上下文写在 step 级 env,GitCode Actions 无法正确注入,导致文档变更后 Read the Docs 构建无法触发。 Fixes [#500](https://gitcode.com/Ascend/MindIE-Motor/issues/500) ## **2. 修改内容** 1. **.gitcode/workflows/trigger-readthedocs.yml**:将 RTD_WEBHOOK_URL、RTD_WEBHOOK_TOKEN、BRANCH 从 step 级 env 提升到 workflow 顶层 env,各 job/step 共享同一注入结果。 ## **3. 资料变更** 不涉及。 ## **4. 接口变更** 不涉及跨代码仓或客户面运行时接口变更;仅调整 GitCode Actions workflow 配置。 ## **5. 测试结果** - 在 fork 仓库 master 分支调试对比 step 级 / job 级 / workflow 顶层 env 注入行为,确认仅 workflow 顶层可正确读取 secrets 与 atomgit.ref_name。 - pre-commit(含 YAML 校验)已通过。 ## **6. CheckList** [x] 代码注释完备 [x] 正确记录维测日志 [x] 是否有UT用例 [x] 若涉及多线程场景,考虑了并发场景,不存在死锁问题 See merge request: Ascend/MindIE-Motor!766 | 21 天前 | |
【docs】Motor全仓低错处理(pymotor->motor、错别字)&更新通信矩阵&补齐自动弹性扩缩容特性文档 Co-authored-by: xiao-qing123<xiaoqing14@h-partners.com> # message auto-generated for no-merge-commit merge: !844 merge master into master 【docs】Motor全仓低错处理(pymotor->motor、错别字)&更新通信矩阵&补齐自动弹性扩缩容特性文档 Created-by: xiao-qing123 Commit-by: xiao-qing123 Merged-by: towncharlie Description: ## **1. 合入背景** Fixes [#538](https://gitcode.com/Ascend/MindIE-Motor/issues/538) 1. 文档中存在一些低错,需要修复(取消文档中的分割线‘---’、修改A2/A3/A5产品命名、格式等问题) 2. 组件更名:全文描述还有多处Pymotor字眼,需要更改为Motor 3. 通信矩阵中的内容还是Motor-CPP的内容,需要替换 4. 特性中的‘自动弹性扩缩容’被合并至设计文档中,导致特性目录没有该特性,而设计文档不会在社区发布,导致特性章节缺失,故需要补充 ## **2. 修改内容** 1. 全仓低错零星修改 2. 更新通信矩阵(communication_matrix_motor.md)文档内容 3. 特性目录中新增 自动弹性扩缩容(auto_scaling.md)文档 ## **3. 资料变更** 1. 全仓低错零星修改 2. 更新通信矩阵(communication_matrix_motor.md)文档内容 3. 特性目录中新增 自动弹性扩缩容(auto_scaling.md)文档 ## **4. 接口变更** 不涉及,纯文档修改 ## **5. 测试结果** 纯文档修改 ## **6. CheckList** > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] [x ] 代码注释完备 [x ] 正确记录维测日志 [x ] 是否有UT用例 [ x] 若涉及多线程场景,考虑了并发场景,不存在死锁问题 See merge request: Ascend/MindIE-Motor!844 | 8 天前 | |
[docs] docker only一键部署:部署指导与UT测试 Co-authored-by: weixin_63825906<gaopeng140@huawei.com> Co-authored-by: 高鹏<1478931959@qq.com> # message auto-generated for no-merge-commit merge: !883 merge docker_only_docs2 into master [docs] docker only一键部署:部署指导与UT测试 Created-by: weixin_63825906 Commit-by: 高鹏;weixin_63825906 Merged-by: towncharlie Description: Fixes part of [#549](https://gitcode.com/Ascend/MindIE-Motor/issues/549) 业务代码已合入 https://gitcode.com/Ascend/MindIE-Motor/merge_requests/871 。原 https://gitcode.com/Ascend/MindIE-Motor/merge_requests/870 叠在合入前的 docker_only 上,与最新 master(含 Slurm 文档等)冲突。本 PR 基于合入后的 master 重新提交,只含文档、导航、契约测试,以及 Mooncake 配置文件名一处对齐。 不改 OVERVIEW,不改 existing_container.md。 --- ## **1. 合入背景** Docker-only 一键部署业务代码已在 !871 合入。本 PR 合入用户指南与契约测试,使单容器 / 多容器文档、CLI 口径与回归用例对齐。 --- ## **2. 修改内容** ### 2.1 单容器指导 docs/zh/user_guide/deployment/docker/single_container.md 按「特性介绍 → 部署流程 → 一键 / 分步」重写:deploy_mode=single_container、Coordinator 推理端口推荐 **1025**,说明不加 flag 即建容器并拉起。 ### 2.2 多容器指导 docs/zh/user_guide/deployment/docker/multi_container.md 按角色拆容器:--role coordinator,controller(或拆开)为管控面;--role prefill / decode / union / kv_store 为引擎或 KV。明确管控与引擎不能同容器、管控容器不挂 NPU、一键与 --start 必填 --pod-ip / --nic-name。补充开启 KV 池化时的 kv_store 步骤。 ### 2.3 导航与流程图 - docs/zh/user_guide/deployment/README.md:Docker 部署入口指向上述两篇(保留 Slurm 章节)。 - docs/zh/user_guide/menu_user_manual.md、docs/zh/user_guide/features/kv_cache_store/README.md:补 Docker 场景 KV 池化入口。 - 新增 docs/zh/imgs/docker_deploy_flow.png。 ### 2.4 契约测试 tests/examples/deployer/test_docker_utils.py 覆盖:不导入 PyYAML;--create / --start / --role 解析;A2/A3/A5 模板与 --devices;管控面身份与 workspace;--pod-ip 与网卡 IPv4 一致;shlex.quote 挂载;引擎端口与本机卡数;一键拉起后 exec bash、同名容器拒绝替换;Ctrl+C 杀掉 setsid 引擎、不误杀无关进程;停机杀掉 vLLM / PID1 Python、保留 exec bash;二次 --start 回收孤儿 vLLM。 ### 2.5 Mooncake 配置文件名 docker_utils.py 将 mooncake_config.py 拷到 configmap 时使用短文件名 mooncake_config.py,与池化启动脚本一致。 --- ## **3. 资料变更** 即 2.1–2.3。 --- ## **4. 接口变更** 不涉及。 --- ## **5. 测试结果** | 维度 | 内容 | |------|------| | UT | tests/examples/deployer/test_docker_utils.py(11 项) | | 执行 | python3 -m unittest tests.examples.deployer.test_docker_utils | | 文档核对 | 与已合入的 docker_deploy 口径一致:三种动作、--config_dir、单容器不加 --role、多容器 --role、推理 host 端口 1025 | | 结论 | 11/11 通过;文档与代码入口对齐 | --- ## **6. CheckList** > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] [x] 代码注释完备 [x] 正确记录维测日志 [x] 是否有UT用例 [x] 若涉及多线程场景,考虑了并发场景,不存在死锁问题(测试覆盖停机路径;文档不涉及) See merge request: Ascend/MindIE-Motor!883 | 5 天前 | |
Merge branch 'master' of https://gitcode.com/Ascend/MindIE-PyMotor into mooncake_standalone * 'master' of https://gitcode.com/Ascend/MindIE-PyMotor: [docs] docker only一键部署:部署指导与UT测试 feat(coordinator): support decode co-location fallback [反合][feature]支持配置vllm StartPlan and graph reuse acceleration能力 [feature]: 部署yaml增加自定义label和annotation功能 [features] docker only一键部署 [bugfix]新增权重挂载至coordinator,保证max_token能拿到tokenizer [feature]增加K8s、控制面与连通性诊断skill [Feature] MindIE Motor支持SGLang的服务化后端 [bugfix] 清理非必要三方依赖声明 | 5 天前 | |
Merge branch 'master' of https://gitcode.com/Ascend/MindIE-PyMotor into mooncake_standalone * 'master' of https://gitcode.com/Ascend/MindIE-PyMotor: [docs] docker only一键部署:部署指导与UT测试 feat(coordinator): support decode co-location fallback [反合][feature]支持配置vllm StartPlan and graph reuse acceleration能力 [feature]: 部署yaml增加自定义label和annotation功能 [features] docker only一键部署 [bugfix]新增权重挂载至coordinator,保证max_token能拿到tokenizer [feature]增加K8s、控制面与连通性诊断skill [Feature] MindIE Motor支持SGLang的服务化后端 [bugfix] 清理非必要三方依赖声明 | 5 天前 | |
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 个月前 | |
[bugfix] 清理非必要三方依赖声明 Co-authored-by: yangan7<yangan7@h-partners.com> # message auto-generated for no-merge-commit merge: !837 merge 3rd_cleanup into master [bugfix] 清理非必要三方依赖声明 Created-by: mindie_yangan Commit-by: yangan7 Merged-by: tobking Description: ## 1. 关联 Issue Related Issue:https://gitcode.com/Ascend/MindIE-Motor/issues/329 ## 2. 问题 当前代码仓正式 Python 依赖声明中存在未使用的三方库,增加安装面与维护成本。需清理确认无引用的声明,且不影响 Motor 既有功能。 ## 3. 修改内容 本 PR 只删除无使用点的依赖声明,不改保留包的版本约束。 ### 3.1 本次删除 | 依赖 | 原声明位置 | 原因 | |------|------------|------| | psutil | 根 requirements.txt、tests/run_tests.sh | 业务与测试代码均无 import psutil | | mkdocs-redirects | requirements/mkdocs.txt、docs/zh/developer_guide/build_docs.md | mkdocs.yml 未启用 redirects | | requests | examples/deployer/requirements.txt | deployer 未 import requests,探针使用 httpx | ### 3.2 根 requirements.txt:保留项及原因 | 依赖 | 为什么保留 | |------|-----------| | confluent_kafka | CCAE base_reporter 顶层导入 KafkaProducer / confluent_kafka,删则相关功能无法启动 | | fastapi | NodeManager / Coordinator 等 HTTP API | | uvicorn[standard] | Coordinator / NodeManager ASGI 服务 | | grpcio | etcd gRPC 客户端 | | grpcio-tools | scripts/generate_proto.sh 生成 protobuf 代码 | | protobuf | gRPC 生成代码运行时依赖 | | pydantic | 配置、请求、告警等模型校验 | | msgspec | Scheduler 协议编解码 | | requests | motor/common/http/http_client.py 等同步 HTTP | | httpx | Coordinator 路由、健康检查等异步 HTTP | | pytest-asyncio | 异步单元测试 | | pyOpenSSL | TLS / 证书处理 | | watchdog | 配置文件监听 | | kubernetes | Controller 故障恢复、K8s 客户端 | | opentelemetry-exporter-otlp-proto-http | Tracing HTTP 导出 | | opentelemetry-exporter-otlp-proto-grpc | Tracing gRPC 导出 | | pyzmq | Scheduler / 日志进程间通信 | | uvloop | Coordinator 事件循环 | | anyio | Router 取消传播 | | setproctitle | 进程命名 | | transformers | KV Cache Affinity 等策略使用 tokenizer | | Pillow | 多模态图片处理 | ### 3.3 requirements/mkdocs.txt:保留项及原因 | 依赖 | 为什么保留 | |------|-----------| | mkdocs | 文档站点构建 | | mkdocs-material | mkdocs.yml 主题 | | mkdocs-awesome-nav | 导航插件 | | mkdocs-glightbox | 图片插件 | | mkdocs-git-revision-date-localized-plugin | 文档日期插件 | | mkdocs-minify-plugin | 压缩插件 | | pymdown-extensions | Markdown 扩展 | ### 3.4 examples/deployer/requirements.txt:保留项及原因 | 依赖 | 为什么保留 | |------|-----------| | httpx | 探针 HTTP | | PyYAML | 配置解析 | | tqdm | TUI 进度 | ### 3.5 examples/features/observability/requirements.txt:保留项及原因 | 依赖 | 为什么保留 | |------|-----------| | watchdog | CCAE 配置/文件监听 | | confluent_kafka | CCAE Kafka Producer | ## 4. 影响 仅删除无使用点的三方库声明,Motor 现有功能可正常使用。验收:冒烟通过即可。 See merge request: Ascend/MindIE-Motor!837 | 7 天前 | |
支持引擎原生方式拉起: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 | 14 天前 | |
Merge branch 'master' of https://gitcode.com/Ascend/MindIE-PyMotor into mooncake_standalone * 'master' of https://gitcode.com/Ascend/MindIE-PyMotor: [docs] docker only一键部署:部署指导与UT测试 feat(coordinator): support decode co-location fallback [反合][feature]支持配置vllm StartPlan and graph reuse acceleration能力 [feature]: 部署yaml增加自定义label和annotation功能 [features] docker only一键部署 [bugfix]新增权重挂载至coordinator,保证max_token能拿到tokenizer [feature]增加K8s、控制面与连通性诊断skill [Feature] MindIE Motor支持SGLang的服务化后端 [bugfix] 清理非必要三方依赖声明 | 5 天前 | |
[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 | 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 个月前 | |
[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 | 4 个月前 | |
[feature]增加K8s、控制面与连通性诊断skill Co-authored-by: jicheng27<jicheng27@huawei.com> # message auto-generated for no-merge-commit merge: !843 merge codex/motor-diagnosis-domain-skills into master [feature]增加K8s、控制面与连通性诊断skill Created-by: jicheng27 Commit-by: jicheng27 Merged-by: tobking Description: ## **1. 合入背景** PR #833 已为 Motor 建立部署、验证和诊断 Agent Skill family,其中 motor-diagnosis 负责保存首次失败现场,motor-diagnosis-startup 负责对 deploy/startup 失败进行 environment、deployer、config 和 runtime-code 分类。 当前诊断框架尚缺少 K8s、控制面和服务连通性三个具体故障域的原子 Skill。本 PR 补充上述能力,使 Agent 能对 Kubernetes 拉起失败、Controller/Coordinator readiness 未收敛和 curl 无法建立 HTTP 连接进行只读采证与阶段定界。 关联 Issue:https://gitcode.com/Ascend/MindIE-Motor/issues/537 PR #833 已合入 master。本 PR 已基于最新 master 重建,仅保留三个专项诊断 Skill、必要的诊断路由、原子 Skill 元数据和仓库 Agent 说明更新。当前相对 master 仅包含 1 个提交、9 个文件,不再携带与 #833 重复的 deploy/validation/diagnosis 基础脚手架。 ## **2. 修改内容** 1. **增加 Kubernetes 诊断 Skill** 新增 motor-diagnosis-k8s,覆盖 K8s API/RBAC/admission、资源未创建、Pending、调度、镜像、挂载、容器、CrashLoopBackOff、probe、Service selector 和 Endpoint。Skill 关联 user config、rendered YAML、live 对象、Events、容器状态和日志,输出最早失败阶段及 environment、deployer、config 或 runtime-code 分类。 2. **增加控制面诊断 Skill** 新增 motor-diagnosis-control-plane,覆盖 Controller/Coordinator readiness、HA 主备角色、NodeManager register/reregister、heartbeat、实例刷新和 prefill/decode 拓扑收敛。Skill 明确 Pod Running、HTTP 503 和 ready=false 都只是状态,不直接等于 runtime-code 根因。 3. **增加服务连通性诊断 Skill** 新增 motor-diagnosis-connectivity,作为“curl 不通”问题的原子入口,覆盖 DNS、TCP、TLS、timeout、connection refused/reset、ClusterIP、NodePort、node InternalIP、Service port/targetPort、EndpointSlice 和 kubectl port-forward。一旦已经收到 HTTP 状态及响应体,连接链路已经成立:ready=false/503 转到控制面诊断;推理 HTTP 4xx/5xx 转到功能或运行时分析。 4. **更新诊断路由** - 更新 motor-diagnosis,增加三个原子 Skill 的路由入口; - 更新 motor-diagnosis-startup,根据最早可证明的失败边界进行路由; - 明确 Readiness probe failed 需要继续区分容器、连接和控制面响应; - 保持 .agents/skills/ 目录平铺、相对路径链接和逻辑父子的现有组织方式。 5. **补齐原子 Skill 元数据** - 为三个新增 Skill 增加 agents/openai.yaml; - 设置 policy.allow_implicit_invocation: false,由父级 motor-diagnosis 路由或由用户显式调用; - 更新 AGENTS.md 中原子 Skill 数量,由 10 个更新为 13 个。 6. **保持安全边界** 三个 Skill 均只执行读取和有限探测,不自动执行 retry、restart、repair、delete、patch、scale、配置修改、Service/NetworkPolicy 修改、主备切换或故障注入。 ## **3. 资料变更** 涉及仓库级 Agent 开发资料: - 新增 .agents/skills/motor-diagnosis-k8s/SKILL.md 及 agents/openai.yaml; - 新增 .agents/skills/motor-diagnosis-control-plane/SKILL.md 及 agents/openai.yaml; - 新增 .agents/skills/motor-diagnosis-connectivity/SKILL.md 及 agents/openai.yaml; - 更新 motor-diagnosis 和 motor-diagnosis-startup 的路由说明; - 更新 AGENTS.md 中的原子 Skill 数量。 不涉及 docs/ 下的客户使用手册变更。 ## **4. 接口变更** 不涉及 Motor 客户面 API、Python API、配置字段、命令行参数或运行时行为变更。Agent 集成侧新增 $motor-diagnosis-k8s、$motor-diagnosis-control-plane 和 $motor-diagnosis-connectivity 调用入口。 ## **5. 测试结果** 1. motor-diagnosis、motor-diagnosis-startup、motor-diagnosis-k8s、motor-diagnosis-control-plane 和 motor-diagnosis-connectivity 的 Skill 格式检查通过。 2. 三个新增 Skill 的 YAML frontmatter、名称与目录一致性、路由引用和原子 Skill 元数据检查通过;仓库原子 Skill 元数据总数为 13。 3. git diff --check 通过;GitCode 服务器端 Git Hooks:PASSED。 4. 路由边界检查通过: - ErrImagePull、调度、挂载、容器启动失败 → motor-diagnosis-k8s; - HTTP 已返回且 ready=false/503 → motor-diagnosis-control-plane; - DNS、connection refused/reset、timeout、TLS、port-forward → motor-diagnosis-connectivity; - 推理接口已返回 HTTP 4xx/5xx → 不路由到 connectivity。 5. 已在绿区 A2 环境完成对应运行链路的只读基础观察:检查 Controller、Coordinator、Prefill、Decode Pod 及 Service/Endpoint,并观察 Coordinator readiness 从 ready=false 收敛到 ready=true。 6. 本次未在共享集群主动注入 ErrImagePull、调度失败或连续 503 等故障;真实故障端到端验收作为后续环境验收项。 ## **6. CheckList** [x] 代码注释完备——不涉及生产代码 [x] 正确记录维测日志——不涉及运行时代码和日志变更 [x] 是否有 UT 用例——不涉及生产代码,无需新增 UT [x] 若涉及多线程场景,考虑了并发场景,不存在死锁问题——不涉及多线程逻辑 See merge request: Ascend/MindIE-Motor!843 | 7 天前 | |
【docs】Motor全仓低错处理(pymotor->motor、错别字)&更新通信矩阵&补齐自动弹性扩缩容特性文档 Co-authored-by: xiao-qing123<xiaoqing14@h-partners.com> # message auto-generated for no-merge-commit merge: !844 merge master into master 【docs】Motor全仓低错处理(pymotor->motor、错别字)&更新通信矩阵&补齐自动弹性扩缩容特性文档 Created-by: xiao-qing123 Commit-by: xiao-qing123 Merged-by: towncharlie Description: ## **1. 合入背景** Fixes [#538](https://gitcode.com/Ascend/MindIE-Motor/issues/538) 1. 文档中存在一些低错,需要修复(取消文档中的分割线‘---’、修改A2/A3/A5产品命名、格式等问题) 2. 组件更名:全文描述还有多处Pymotor字眼,需要更改为Motor 3. 通信矩阵中的内容还是Motor-CPP的内容,需要替换 4. 特性中的‘自动弹性扩缩容’被合并至设计文档中,导致特性目录没有该特性,而设计文档不会在社区发布,导致特性章节缺失,故需要补充 ## **2. 修改内容** 1. 全仓低错零星修改 2. 更新通信矩阵(communication_matrix_motor.md)文档内容 3. 特性目录中新增 自动弹性扩缩容(auto_scaling.md)文档 ## **3. 资料变更** 1. 全仓低错零星修改 2. 更新通信矩阵(communication_matrix_motor.md)文档内容 3. 特性目录中新增 自动弹性扩缩容(auto_scaling.md)文档 ## **4. 接口变更** 不涉及,纯文档修改 ## **5. 测试结果** 纯文档修改 ## **6. CheckList** > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] [x ] 代码注释完备 [x ] 正确记录维测日志 [x ] 是否有UT用例 [ x] 若涉及多线程场景,考虑了并发场景,不存在死锁问题 See merge request: Ascend/MindIE-Motor!844 | 8 天前 | |
[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】Motor全仓低错处理(pymotor->motor、错别字)&更新通信矩阵&补齐自动弹性扩缩容特性文档 Co-authored-by: xiao-qing123<xiaoqing14@h-partners.com> # message auto-generated for no-merge-commit merge: !844 merge master into master 【docs】Motor全仓低错处理(pymotor->motor、错别字)&更新通信矩阵&补齐自动弹性扩缩容特性文档 Created-by: xiao-qing123 Commit-by: xiao-qing123 Merged-by: towncharlie Description: ## **1. 合入背景** Fixes [#538](https://gitcode.com/Ascend/MindIE-Motor/issues/538) 1. 文档中存在一些低错,需要修复(取消文档中的分割线‘---’、修改A2/A3/A5产品命名、格式等问题) 2. 组件更名:全文描述还有多处Pymotor字眼,需要更改为Motor 3. 通信矩阵中的内容还是Motor-CPP的内容,需要替换 4. 特性中的‘自动弹性扩缩容’被合并至设计文档中,导致特性目录没有该特性,而设计文档不会在社区发布,导致特性章节缺失,故需要补充 ## **2. 修改内容** 1. 全仓低错零星修改 2. 更新通信矩阵(communication_matrix_motor.md)文档内容 3. 特性目录中新增 自动弹性扩缩容(auto_scaling.md)文档 ## **3. 资料变更** 1. 全仓低错零星修改 2. 更新通信矩阵(communication_matrix_motor.md)文档内容 3. 特性目录中新增 自动弹性扩缩容(auto_scaling.md)文档 ## **4. 接口变更** 不涉及,纯文档修改 ## **5. 测试结果** 纯文档修改 ## **6. CheckList** > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] [x ] 代码注释完备 [x ] 正确记录维测日志 [x ] 是否有UT用例 [ x] 若涉及多线程场景,考虑了并发场景,不存在死锁问题 See merge request: Ascend/MindIE-Motor!844 | 8 天前 | |
【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 个月前 | |
[bugfix] 清理非必要三方依赖声明 Co-authored-by: yangan7<yangan7@h-partners.com> # message auto-generated for no-merge-commit merge: !837 merge 3rd_cleanup into master [bugfix] 清理非必要三方依赖声明 Created-by: mindie_yangan Commit-by: yangan7 Merged-by: tobking Description: ## 1. 关联 Issue Related Issue:https://gitcode.com/Ascend/MindIE-Motor/issues/329 ## 2. 问题 当前代码仓正式 Python 依赖声明中存在未使用的三方库,增加安装面与维护成本。需清理确认无引用的声明,且不影响 Motor 既有功能。 ## 3. 修改内容 本 PR 只删除无使用点的依赖声明,不改保留包的版本约束。 ### 3.1 本次删除 | 依赖 | 原声明位置 | 原因 | |------|------------|------| | psutil | 根 requirements.txt、tests/run_tests.sh | 业务与测试代码均无 import psutil | | mkdocs-redirects | requirements/mkdocs.txt、docs/zh/developer_guide/build_docs.md | mkdocs.yml 未启用 redirects | | requests | examples/deployer/requirements.txt | deployer 未 import requests,探针使用 httpx | ### 3.2 根 requirements.txt:保留项及原因 | 依赖 | 为什么保留 | |------|-----------| | confluent_kafka | CCAE base_reporter 顶层导入 KafkaProducer / confluent_kafka,删则相关功能无法启动 | | fastapi | NodeManager / Coordinator 等 HTTP API | | uvicorn[standard] | Coordinator / NodeManager ASGI 服务 | | grpcio | etcd gRPC 客户端 | | grpcio-tools | scripts/generate_proto.sh 生成 protobuf 代码 | | protobuf | gRPC 生成代码运行时依赖 | | pydantic | 配置、请求、告警等模型校验 | | msgspec | Scheduler 协议编解码 | | requests | motor/common/http/http_client.py 等同步 HTTP | | httpx | Coordinator 路由、健康检查等异步 HTTP | | pytest-asyncio | 异步单元测试 | | pyOpenSSL | TLS / 证书处理 | | watchdog | 配置文件监听 | | kubernetes | Controller 故障恢复、K8s 客户端 | | opentelemetry-exporter-otlp-proto-http | Tracing HTTP 导出 | | opentelemetry-exporter-otlp-proto-grpc | Tracing gRPC 导出 | | pyzmq | Scheduler / 日志进程间通信 | | uvloop | Coordinator 事件循环 | | anyio | Router 取消传播 | | setproctitle | 进程命名 | | transformers | KV Cache Affinity 等策略使用 tokenizer | | Pillow | 多模态图片处理 | ### 3.3 requirements/mkdocs.txt:保留项及原因 | 依赖 | 为什么保留 | |------|-----------| | mkdocs | 文档站点构建 | | mkdocs-material | mkdocs.yml 主题 | | mkdocs-awesome-nav | 导航插件 | | mkdocs-glightbox | 图片插件 | | mkdocs-git-revision-date-localized-plugin | 文档日期插件 | | mkdocs-minify-plugin | 压缩插件 | | pymdown-extensions | Markdown 扩展 | ### 3.4 examples/deployer/requirements.txt:保留项及原因 | 依赖 | 为什么保留 | |------|-----------| | httpx | 探针 HTTP | | PyYAML | 配置解析 | | tqdm | TUI 进度 | ### 3.5 examples/features/observability/requirements.txt:保留项及原因 | 依赖 | 为什么保留 | |------|-----------| | watchdog | CCAE 配置/文件监听 | | confluent_kafka | CCAE Kafka Producer | ## 4. 影响 仅删除无使用点的三方库声明,Motor 现有功能可正常使用。验收:冒烟通过即可。 See merge request: Ascend/MindIE-Motor!837 | 7 天前 | |
【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 个月前 | |
支持引擎原生拉起:删除Engine Server冗余代码 Co-authored-by: tobking<wangjun292@huawei.com> # message auto-generated for no-merge-commit merge: !717 merge feat/pr3-remove-engine-server into master 支持引擎原生拉起:删除Engine Server冗余代码 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替代. 在 NodeManager 原生拉起 vLLM/SGLang、Coordinator 直连原生推理端口(前序原生引擎 / PD 路由能力)落地后,motor/engine_server 已不再承担启动、推理转发与管理面职责,继续保留会带来: 1. **双栈维护成本**:EngineServer 与 Native Runtime 两套启动、健康检查与错误处理路径并存; 2. **架构不一致**:文档与部署仍暗示存在独立 EngineServer 进程,而实际链路为 Controller → NodeManager → 原生引擎; 3. **遗留协议负担**:EngineServer 侧 dispatch 信封、管理 HTTP、虚推(sim_inference)等与原生路径无关的代码/文档仍残留。 本 PR 是「删除 EngineServer、收敛到 Native Runtime」系列的收尾重构:删除 motor/engine_server 及其测试/入口,清理仅服务于 EngineServer 的 dispatch/配置/文档。容器快照中,显存保存/恢复由具备快照能力的引擎镜像自闭环完成;NodeManager 不再触发 /suspend、/device_unlock、/resume,只保留框架侧状态刷新、元数据准备和完成态感知。 - **关联前序能力**:NodeManager 原生拉起引擎、解除 Engine Server 层依赖;同系列 PR2(原生引擎直连 / PD 路由)。 - **关联 Issue**:[\#486](https://gitcode.com/Ascend/MindIE-Motor/issues/486) ## **2. 修改内容** > 请<ins>**描述修改内容的具体实现**</ins>,涉及哪些组件之间进行交互,可以用1、2、3、...进行罗列。 > 如果是需求或者重构类的PR,需要<ins>**补充详细设计文档**</ins>(说明上下游组件关系、时序图、类图、DFX能力等内容)。 1. **删除 EngineServer 组件** 移除 motor/engine_server/(CLI、推理/管理 Endpoint、dispatch adapter、vLLM/SGLang 封装、sim_inference、snapshot_sentinel 等)、setup.py 入口及相关 UT;进程模型收敛为 NodeManager 直接拉起 vllm serve / sglang.launch_server。 2. **容器快照职责切分(vLLM 快照镜像)** 显存快照保存/恢复是引擎原子能力,由支持快照的独立引擎镜像自闭环完成。NodeManager 在整个快照生命周期只做框架侧编排: - 快照前后刷新服务框架状态(Controller 域名、job_name、pod_ip),保证恢复后能向 Controller 注册; - 准备显存快照所需元数据(model_save_path / model_load_path、data_parallel_master_ip 等); - 通过引擎就绪状态和 Host 侧 checkpoint 标记感知保存/恢复是否完成(心跳屏障、readiness)。 因此删除 native_engine/snapshot.py(SnapshotOrchestrator / NativeSnapshotControl)及其在 EngineManager、Daemon、NativeEngineService 上的触发接线。原先 EngineServer 的 snapshot_sentinel 下沉到引擎原生 server(如 api_server),不在 NodeManager 中重建。 总开关 motor_container_snapshot_config.enable_snapshot 默认 false;SGLang 开启该开关时配置校验失败。 3. **配置与公共协议精简** - 去掉 EndpointConfig 的 EngineServer CLI / init_endpoint_config / snapshot_metadata 等入口;TLS 更新改为 _update_native_engine_tls_config; - 删除 engine_constants 中仅 EngineServer 使用的常量; - 精简 dispatch.py:移除 EngineServer 侧 dispatch 信封模型与相关 helper,保留原生路由所需的 DispatchProfile / capability 分类。 4. **资料与开发指南同步** 删除 EngineServer 架构/接口/虚推文档与插图;更新 architecture、NodeManager/Coordinator 开发指南、container_snapshot、部署与配置参考;管理面文档补充原生场景下 mgmt_port / bootstrap_port 语义说明,并修正失效链接。快照文档改为:引擎负责 Device 侧 suspend/resume/unlock,NodeManager 负责元数据、注册与状态感知。 5. **测试** 删除 tests/engine_server/** 以及 NodeManager 侧 snapshot orchestrator UT(test_snapshot.py 及 snapshot_targets 相关用例);保留 metadata 准备、restore 注册刷新、checkpoint 屏障等框架侧 UT。 ### 上下游关系(简要) text Controller └─ start/stop/pause → NodeManager API ├─ NativeEngineService → ProcessSupervisor → vLLM/SGLang ├─ HeartbeatManager → Controller(checkpoint 屏障、restore 后重新注册) └─ snapshot metadata / job_name / pod_ip 刷新 Coordinator └─ 直连原生 business_port(不再经 EngineServer) Engine(快照能力镜像) └─ Device 侧 suspend / device_unlock / resume 自闭环 Host/MindCluster └─ checkpoint 元数据 ↔ NodeManager readiness/status ### 设计文档位置 - .agent/skills/motor-dev/references/nodeman.md(Native Runtime + Snapshot Boundary) - docs/zh/user_guide/features/container_snapshot.md - docs/zh/developer_guide/components/node_manager.md - docs/zh/architecture.md / docs/zh/design/pd_disaggregation.md ### DFX - 快照框架侧日志前缀 [snapshot];恢复后刷新注册信息并重试向 Controller 注册; - 健康探测仍走原生 /health;pause 返回原生 metrics URL; - 不引入 EngineServer 管理端口,也不由 NodeManager 调用引擎快照 HTTP 接口。 ## **3. 资料变更** > 请确认<ins>**是否涉及资料变更**</ins>。\ > 如涉及,需要在PR中体现,并简要说明修改内容。\ > 如不涉及,需填写“不涉及”。 涉及。删除 EngineServer 文档与插图;更新 NodeManager / 容器快照 / 架构与配置说明,明确显存快照由引擎自闭环、NodeManager 只做框架侧编排。 ## **4. 接口变更** > 请确认<ins>**是否涉及跨代码仓或者客户面可见的接口变更**</ins>。\ > 如涉及,需详细说明接口以及对应的变更内容,同时需要在资料中体现。\ > 如不涉及,需填写“不涉及”。 不涉及对外客户面接口变更。删除的是 Motor 内部 EngineServer 进程及 NodeManager 对引擎 /suspend、/device_unlock、/resume 的主动调用;容器快照仍通过 motor_container_snapshot_config.enable_snapshot 显式打开,默认关闭。 ## **5. 测试结果** > 需体现<ins>**测试场景,测试方法以及测试结果**</ins>。\ > 测试用例设计时需考虑硬件、部署方式、功能、性能、精度、显存等维度。 - 单元测试:tests/node_manager/core/test_engine_manager.py、test_daemon.py、native_engine/test_service.py 等框架侧用例通过(含 snapshot metadata / restore 准备、原生拉起与恢复门闩)。 - 删除 EngineServer 及 snapshot orchestrator 后,不再保留对 NodeManager 主动调用 /suspend /resume 的 UT。 - 容器快照端到端需使用支持镜像快照的引擎独立镜像,并显式打开 enable_snapshot 后验证:冷启动稳态点、Host checkpoint、恢复后重新注册与推理恢复。 ## **6. CheckList** > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] [x] 代码注释完备 [x] 正确记录维测日志 [x] 是否有UT用例 [x] 若涉及多线程场景,考虑了并发场景,不存在死锁问题 See merge request: Ascend/MindIE-Motor!717 | 22 天前 |
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 开源许可证。