已合并
支持引擎原生方式拉起:Coordinator 支持独立部署 #771
支持引擎原生方式拉起:Coordinator 支持独立部署 #771
已合并
tobking创建于 24 天前
tobking
tobking成员
24 天前

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,支持 setadddellist
    • 实例 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] 若涉及多线程场景,考虑了并发场景,不存在死锁问题

likedislike
Pull Request已成功合入, 合并人@wangyang
(感谢 tobking 的贡献)
atomgit-bot
atomgit-bot
24 天前 评论:

变更摘要

引擎改为由 NodeManager 原生拉起 vLLM/SGLang、Engine Server 下线后,本 PR 清理了 Endpoint、配置、注册/心跳及 Controller 组装路径上残留的 mgmt_port 控制面端口字段(引擎侧仅保留业务 HTTP 端口),同时补齐不依赖 Controller/NodeManager/K8s 的 Coordinator 独立部署模式:新增注册 CLI python3 -m motor.coordinator.register、管理面实例查询接口 GET /instances 以及用户指南 docs/zh/user_guide/deployment/standalone.md,并同步对齐 grpcio/protobuf 依赖版本。

主要改动

  • 删除残留控制面端口字段:从 Endpoint 模型、RegisterMsgEndpointConfig/NodeManagerConfigLaunchContextInstanceAssemblerRegisterManager、心跳上报及 port_allocator 端口分配中移除 mgmt_port/mgmt_ports,引擎侧仅保留 business_port/service_portsEndpoint 构造器通过 **_unused 兜底并新增 UT,保证旧注册/刷新 JSON 中残留的 mgmt_port 不再报错。

  • 新增独立部署注册 CLI:新增 motor/coordinator/register.py,支持 python3 -m motor.coordinator.register,默认 set 覆盖全表、add/del 增量、list 查询;实例 idrole + 首个 IP:PORT 经 CRC32 稳定派生,同一组 endpoint 可增可删,支持 --prefill/--decode/--id/--model-name/--dry-run 等参数。

  • 新增管理面实例查询接口ManagementServer 增加 GET /instances,通过 InstanceManager.snapshot_instances() 汇总 available/unavailable/paused 实例,返回 id、role、job_name、model_name、status 及 endpoints 摘要,并配套补充接口说明与 UT。

  • 新增独立部署资料:新增 docs/zh/user_guide/deployment/standalone.md 用户指南,.nav.yaml、目录及部署概述增加「Coordinator 独立部署」入口;管理接口文档补充 GET /instances,配置参考/NodeManager/Coordinator 开发者文档去掉 mgmt_port 相关说明。

  • 依赖版本对齐scripts/generate_proto.shtests/run_tests.shgrpcio/grpcio-tools 最低版本提升至 1.82.1protobuf>=7.35.1,<8.0.0,避免 gencode/runtime 不匹配;PR 描述中同时移除了未使用的 httpx2 依赖。

likedislike
不准确?
atomgit-bot
atomgit-bot
24 天前 评论:

代码审查

✅ 未发现问题

likedislike
不准确?
Xxiangjie10成员
24 天前 添加了label:pr-audit-failed
xiangjie10成员
24 天前 评论:
🔍 PR 规范审计未通过,以下项目需要修正:
  • PR 未关联里程碑或 Issue
  • PR 新增代码 2825 行超过 1000 行,且标题未标注"反合"

请修正后重新提交,或联系仓库管理员。

likedislike
ascend-robotascend-robot成员
24 天前 添加了label:stat/needs-squash
此处折叠了177条消息 查看更多
jason lyu
jason lyu成员
18 天前 评论:

/lgtm

likedislike
ascend-robotascend-robot成员
18 天前 添加了label:lgtm
tobkingtobking成员
18 天前 修改标题为 “支持引擎原生拉起:Coordinator 支持独立部署”,原标题为“上线Coordinator 独立部署指南 & 删除endpoint 残留mgmt port配置”
tobkingtobking成员
18 天前 修改标题为 “支持引擎原生方式拉起:Coordinator 支持独立部署”,原标题为“支持引擎原生拉起:Coordinator 支持独立部署”
wangyangwangyang成员
18 天前 合入了pull request