| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
[refractor] 提取http相关公共文件,简化utils文件夹内文件数量 Co-authored-by: 吕有辉<lvyouhui@huawei.com> # message auto-generated for no-merge-commit merge: !55 merge master into master [refractor] 提取http相关公共文件,简化utils文件夹内文件数量 Created-by: codeDogPro Commit-by: 吕有辉 Merged-by: towncharlie Description: ## **1. 合入背景** https://gitcode.com/Ascend/MindIE-PyMotor/issues/47 ## **2. 修改内容** 提取utils函数,汇聚目录 ## **3. 资料变更** 涉及 ## **4. 接口变更** 不涉及 ## **5. 测试结果** 服务能正常拉起 ## **6. CheckList** > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] [x] 代码注释完备 [x] 正确记录维测日志 [x] 是否有UT用例 [x] 若涉及多线程场景,考虑了并发场景,不存在死锁问题 See merge request: Ascend/MindIE-PyMotor!55 | 3 个月前 | |
[bugfix] 优化证书私钥模数校验性能并拆分 TLS 相关 UT Co-authored-by: Jechin<yuzechen1@huawei.com> # message auto-generated for no-merge-commit merge: !694 merge test/speed-up-cert-ut into master [bugfix] 优化证书私钥模数校验性能并拆分 TLS 相关 UT Created-by: Jechin Commit-by: Jechin Merged-by: towncharlie Description: ## **1. 合入背景** Fixes [#459](https://gitcode.com/Ascend/MindIE-Motor/issues/459) 证书私钥模数校验在 RSA-3072 场景下通过 to_cryptography_key() 比对模数,单次约 550ms,导致 TLS 相关 UT 耗时过高;本 PR 改用 OpenSSL 原生校验并拆分冗余 comprehensive 用例。 ## **2. 修改内容** 1. **motor/common/http/cert_util.py** - validate_certs_and_keys_modulus 改为 SSL.Context.check_privatekey() 校验证书与私钥匹配,避免私钥 to_cryptography_key() 的慢路径。 2. **tests/coordinator/test_http_server_cert.py** - 将 test_validate_cert_and_key_comprehensive 拆为参数化用例(成功路径、非法路径、空文件、格式错误、密钥不匹配、CA 错误等),保持覆盖同时减少单函数内重复全量校验。 ## **3. 资料变更** 不涉及 ## **4. 接口变更** 不涉及跨代码仓或客户面可见的接口变更;TLS 证书校验行为与语义不变,仅优化内部实现性能。 ## **5. 测试结果** - bash tests/run_tests.sh tests/coordinator/test_http_server_cert.py:31 passed - bash tests/run_tests.sh --serial:2711 passed,1 skipped - 证书 UT 文件总耗时由约 6s+ 降至约 4s;原先最慢单用例 test_validate_cert_and_key_comprehensive(约 6.75s)已消除 ## **6. CheckList** [x] 代码注释完备 [x] 正确记录维测日志 [x] 是否有UT用例 [x] 若涉及多线程场景,考虑了并发场景,不存在死锁问题 See merge request: Ascend/MindIE-Motor!694 | 11 天前 | |
[Feature] FaultReporter 对齐 vLLM FT 框架:ZMQ 订阅改为 HTTP 轮询 Co-authored-by: 吕有辉<lvyouhui@huawei.com> # message auto-generated for no-merge-commit merge: !678 merge feature/fault_reporterV2 into master [Feature] FaultReporter 对齐 vLLM FT 框架:ZMQ 订阅改为 HTTP 轮询 Created-by: codeDogPro Commit-by: 吕有辉 Merged-by: tobking Description: ### 1. 合入背景 vLLM FaultTolerance 框架(vllm-project/vllm#44428)最终实现不再通过 ZMQ 广播引擎故障状态,改为外部轮询 REST 接口( GET /fault_tolerance/status)。Motor 侧 FaultReporter 仍基于旧版 ZMQ 设计将无法感知引擎故障。本 PR 将 FaultReporter 重构为 HTTP 轮询模式并上报软件故障。 关联 ISSUE:#448 ### 2. 修改内容 1. **NodeManager FaultReporter 重构**(motor/node_manager/core/fault_reporter.py): - ZMQ SUB 订阅 → HTTP 轮询每个 endpoint 的 GET /fault_tolerance/status(business_port) - 连续轮询失败 max_poll_failures 次按 dead 上报;_STARTUP_GRACE_SEC(300s)冷启动宽限期防误报;去重 key 统一为受管 endpoint id(多 endpoint 不互相覆盖);状态解析异常不杀死轮询线程 - 自动启用:检测 user config 引擎段 FT 开关(enable-fault-tolerance/enable_fault_tolerance 为 true 或 1),无需 NodeManager 显式配置 2. **引擎 FT 协议层**(motor/common/constants.py + motor/common/http/engine_ft_client.py):FT 状态路径/状态词/超时协议常量收敛为共享模块,query_engine_ft_status 为 FaultReporter 状态轮询入口 3. **配置变更**(NodeManager):zmq_pub_port 删除,新增 poll_interval_sec(5.0)/ poll_timeout_sec(5.0)/ max_poll_failures(3) ### 3. 资料变更 涉及,同步更新: - docs/zh/developer_guide/components/node_manager.md:软件故障上报章节(轮询模式 + 自动启用)、配置表 - docs/zh/design/fault_tolerance/fault_manager.md:FaultReporter 架构与上报链路(HTTP 轮询)、NodeManager 侧配置表 - examples/features/config_sample.json:NodeManager 段 fault_tolerance_config 字段同步 ### 4. 接口变更 涉及(NodeManager 管理面接口): - 删除 NodeManager 配置字段 fault_tolerance_config.zmq_pub_port,新增 poll_interval_sec / poll_timeout_sec / max_poll_failures ### 5. 测试结果 **单测**(bash tests/run_tests.sh tests/controller/ tests/node_manager/ tests/config/):**839 passed** 新增/重写测试覆盖: - FaultReporter:轮询 healthy/unhealthy/dead 处理、fault_info 传递、去重、连续失败上报 dead、恢复清计数、上报失败重试、user_config 自动启用检测、malformed payload 不死线程、多 endpoint dedup 互不覆盖、冷启动宽限期(宽限期内外)、1 值检测、非引擎段忽略(14 项) - NodeManager 配置:poll_interval_sec / poll_timeout_sec / max_poll_failures 字段与校验 **静态检查**:pylint / ruff 通过 ### 6. CheckList - [x] 代码注释完备 - [x] 正确记录维测日志(错误场景 error_window 防刷屏) - [x] 是否有 UT 用例(839 passed) - [x] 若涉及多线程场景,考虑了并发场景,不存在死锁问题(FaultReporter 锁内快照 endpoints、stop/start 防双线程) See merge request: Ascend/MindIE-Motor!678 | 9 天前 | |
[feature] kv-conductor /query 支持 msgpack 编码,10倍性能收益 Co-authored-by: 吕有辉<lvyouhui@huawei.com> # message auto-generated for no-merge-commit merge: !687 merge opt/kv_conductor_query_msgpack into master [feature] kv-conductor /query 支持 msgpack 编码,10倍性能收益 Created-by: codeDogPro Commit-by: 吕有辉 Merged-by: tobking Description: ## 1. 合入背景 为 kv-conductor 的 /query 与 /query_by_hash 增加 MessagePack 编解码支持,并在 Coordinator 端到端打通(ConductorApiClient.query_conductor 默认走 msgpack)。长上下文(1M/5M token)场景下,KV 亲和性查询的请求体积与编解码耗时显著下降。 借鉴 Mooncake conductor #3258 的 Content-Type 分派方案;与 KV Conductor 的前缀索引能力(#338 对应的自研 kv-conductor)配套演进。 关联 ISSUE:[#455](https://gitcode.com/Ascend/MindIE-Motor/issues/455) ## 2. 修改内容 1. **kv-conductor(Rust,motor/kv_conductor/)** - /query、/query_by_hash 按请求 Content-Type 分派:application/msgpack → rmp_serde 解码请求,响应/错误/空结果用 rmp::encode 手工编码;其他 Content-Type 走原 JSON 路径(行为不变)。 - 响应侧手工编码的原因:QueryResponse 使用 #[serde(flatten)](tenants 展开到顶层 map),msgpack 序列化器不支持 flatten——手工编码保证 msgpack wire 形状与 JSON 逐字节等价,并有单元测试(rmpv→serde_json 结构化对比)守护。 - QueryRequest / QueryByHashRequest 增加 Serialize(原仅 Deserialize)。 2. **Coordinator(Python)** - ConductorApiClient:新增 encode_query_msgpack / decode_query_response_msgpack(msgspec),query_conductor() 按 kv_conductor_config.query_encoding(默认 "msgpack")分派;响应按服务器 Content-Type 解析(msgpack → msgspec,否则 JSON),**旧版 JSON-only conductor 自动兼容,无需配置切换**。 - SafeHTTPSClient 新增 post_bytes()(原始 body POST)。 - KvConductorConfig 新增 query_encoding 配置项。 3. **测试** - Rust:单元测试 120(新增 msgpack 往返、wire 形状等价、Content-Type 嗅探、错误/空结果编码)+ 集成测试 20(新增 msgpack/JSON 查询结果一致、msgpack /query_by_hash、404/400 错误路径按请求编码返回);cargo clippy -D warnings、cargo fmt 通过。 - Python:api_client 44(新增 msgpack wire 格式断言、json 配置路径、legacy JSON 响应 fallback)、coordinator 模块 1155 全过。 - 性能验证使用临时 benchmark 脚本(真实 conductor 进程 + client 真实编解码路径),bench 属验证工具未随 PR 上库。 ## 3. 资料变更 涉及: - docs/zh/user_guide/configuration/config_reference.md:新增 kv_conductor_config.query_encoding 配置说明。 - skill reference(.agent/skills/motor-dev/references/coordinator.md、kv-conductor.md):新增 msgpack 编解码章节与端到端数据,并修正两处过时内容(服务端加权评分模型已移除、src/indexer.rs → src/indexer/ 目录)。 ## 4. 接口变更 涉及(客户面可见): - POST /query、POST /query_by_hash 新增 Content-Type: application/msgpack 请求编码支持,响应随请求编码返回(JSON 默认行为不变,向后兼容)。 - Coordinator 配置新增 kv_conductor_config.query_encoding(默认 "msgpack";对接旧版 conductor 可配 "json")。 ## 5. 测试结果 **性能收益**(真实 kv-conductor release 进程 + Coordinator client 真实编解码路径,best-of-5,DeepSeek V4 风格长上下文): === 1M tokens(block_size=128)=== step JSON msgpack 提速 请求体积 encode 29.92 ms 2.89 ms 10.4x 6.65MB -> 2.99MB (-55%) HTTP RTT 45.63 ms 12.07 ms 3.78x (客户端序列化+服务端XXH3哈希/树匹配/序列化+网络) TOTAL 45.63 ms 12.07 ms 3.78x === 5M tokens(block_size=128)=== encode 149.8 ms 14.4 ms 10.4x 33.3MB -> 14.9MB (-55%) HTTP RTT 220.5 ms 41.9 ms 5.26x TOTAL 220.5 ms 41.9 ms 5.26x - 5M 上下文单次查询省 ~178ms,1M 省 ~34ms;请求体积减半(网络传输同步受益)。 - 收益来源:客户端 msgspec 编码(10x)、服务端 rmp 解析 vs serde_json(RTT 内体现)、传输字节减半。 **短上下文覆盖**(1 ~ 16K tokens,纯编解码,msgspec vs json.dumps/loads,best-of-20000): tokens | json enc msgpack enc | json dec msgpack dec 1 | 1.07us 0.12us | 1.19us 0.21us 64 | 2.83us 0.27us | 2.94us 0.51us 1024 | 26.44us 2.31us | 26.44us 7.96us 16384 | 437.67us 32.82us | 430.86us 148.58us - 全长度区间(1 ~ 16K token)msgpack 均更快:1 token 时亦快 ~9x(编码 0.12us vs 1.07us); - **无临界点、无负收益**——msgspec 为纯 C 实现,固定开销(~0.1-0.2us)低于 json.dumps/loads 的固定开销(~1-1.2us),短上下文(普通对话场景)同样占优; - 默认 query_encoding: "msgpack" 在短/长上下文下均无回归。 **功能测试**: - cargo test:120 单元 + 20 集成全过; - bash tests/run_tests.sh tests/coordinator/:1155 用例全过; - pre-commit 全量通过(ruff/pylint/bandit/cargo clippy/fmt 等)。 **测试场景**:单元(编解码往返/等价性)、集成(HTTP Content-Type 协商、错误路径、JSON 兼容)、端到端(1M/5M 长上下文性能)。精度/显存不涉及(无模型运行)。 ## 6. CheckList - [x] 代码注释完备 - [x] 正确记录维测日志 - [x] 是否有UT用例(120 Rust 单元 + 20 集成 + 44 Python 单测) - [x] 若涉及多线程场景,考虑了并发场景,不存在死锁问题(查询路径只读锁语义未变,msgpack 编解码为无状态纯函数) See merge request: Ascend/MindIE-Motor!687 | 11 天前 | |
[refractor] 提取http相关公共文件,简化utils文件夹内文件数量 Co-authored-by: 吕有辉<lvyouhui@huawei.com> # message auto-generated for no-merge-commit merge: !55 merge master into master [refractor] 提取http相关公共文件,简化utils文件夹内文件数量 Created-by: codeDogPro Commit-by: 吕有辉 Merged-by: towncharlie Description: ## **1. 合入背景** https://gitcode.com/Ascend/MindIE-PyMotor/issues/47 ## **2. 修改内容** 提取utils函数,汇聚目录 ## **3. 资料变更** 涉及 ## **4. 接口变更** 不涉及 ## **5. 测试结果** 服务能正常拉起 ## **6. CheckList** > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] [x] 代码注释完备 [x] 正确记录维测日志 [x] 是否有UT用例 [x] 若涉及多线程场景,考虑了并发场景,不存在死锁问题 See merge request: Ascend/MindIE-PyMotor!55 | 3 个月前 | |
[refractor] 提取http相关公共文件,简化utils文件夹内文件数量 Co-authored-by: 吕有辉<lvyouhui@huawei.com> # message auto-generated for no-merge-commit merge: !55 merge master into master [refractor] 提取http相关公共文件,简化utils文件夹内文件数量 Created-by: codeDogPro Commit-by: 吕有辉 Merged-by: towncharlie Description: ## **1. 合入背景** https://gitcode.com/Ascend/MindIE-PyMotor/issues/47 ## **2. 修改内容** 提取utils函数,汇聚目录 ## **3. 资料变更** 涉及 ## **4. 接口变更** 不涉及 ## **5. 测试结果** 服务能正常拉起 ## **6. CheckList** > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] [x] 代码注释完备 [x] 正确记录维测日志 [x] 是否有UT用例 [x] 若涉及多线程场景,考虑了并发场景,不存在死锁问题 See merge request: Ascend/MindIE-PyMotor!55 | 3 个月前 | |
[refractor] 提取http相关公共文件,简化utils文件夹内文件数量 Co-authored-by: 吕有辉<lvyouhui@huawei.com> # message auto-generated for no-merge-commit merge: !55 merge master into master [refractor] 提取http相关公共文件,简化utils文件夹内文件数量 Created-by: codeDogPro Commit-by: 吕有辉 Merged-by: towncharlie Description: ## **1. 合入背景** https://gitcode.com/Ascend/MindIE-PyMotor/issues/47 ## **2. 修改内容** 提取utils函数,汇聚目录 ## **3. 资料变更** 涉及 ## **4. 接口变更** 不涉及 ## **5. 测试结果** 服务能正常拉起 ## **6. CheckList** > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] [x] 代码注释完备 [x] 正确记录维测日志 [x] 是否有UT用例 [x] 若涉及多线程场景,考虑了并发场景,不存在死锁问题 See merge request: Ascend/MindIE-PyMotor!55 | 3 个月前 | |
[feature] 在tracing中增加超时请求的请求结构 Co-authored-by: hxy<huxinyi9@huawei.com> # message auto-generated for no-merge-commit merge: !405 merge feat/tracing-sanitized-request-structure into master [feature] 在tracing中增加超时请求的请求结构 Created-by: hu-xinyi_555 Commit-by: hxy Merged-by: towncharlie Description: ## **1. 合入背景** 当前无法判断是哪个请求导致的服务挂死,对问题复现比较困难,所以希望加入超时的请求的结构(不包含请求的具体内容) ## **2. 修改内容** 增加了请求的结构 ## **3. 资料变更** 不涉及 ## **4. 接口变更** 不涉及 ## **5. 测试结果**  ## **6. CheckList** > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] [x] 代码注释完备 [x] 正确记录维测日志 [x] 是否有UT用例 [x] 若涉及多线程场景,考虑了并发场景,不存在死锁问题 See merge request: Ascend/MindIE-PyMotor!405 | 1 个月前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 3 个月前 | ||
| 11 天前 | ||
| 9 天前 | ||
| 11 天前 | ||
| 3 个月前 | ||
| 3 个月前 | ||
| 3 个月前 | ||
| 1 个月前 |