已开启
[Feature-Request|需求反馈]: 添加standalone-coordinator部署方式 #546
灏悦心陈创建于  8月30日
灏悦心陈
灏悦心陈
8月30日 创建

在您提交issue前,请确认以下信息:

背景信息

MindIE Motor 现有主路径是云原生整栈:Controller 管生命周期,Node Manager 拉引擎,Coordinator 做推理入口和 P/D 调度。裸机、已有 vLLM 进程、或只要一个等价 Proxy 的场景里,这一套过重:

Coordinator 运行时仍依赖 Controller 配置和告警上报;不写 user_config.json 时,告警会打到默认 127.0.0.1:1026,和自身管理口冲突。
实例变更走 Controller 完整 InsEventMsg(job_name、dict 形态 endpoints、business_port 等)。外部编排只掌握 IP:PORT,填不齐内部字段。
原生 vLLM 已提供 HTTP 服务时,用户仍要再部署控制面,才能用上 Motor 的 P/D 分离、handoff / Layerwise sync、可选 KV 亲和。
kv-conductor 未配时,注册路径仍会按有 Conductor 去连,独立部署会被拖死。
需要一条不依赖 Controller / Node Manager / NPU 的 Coordinator 独立部署路径:对接已经起来的 vLLM Prefill / Decode,多 P 多 D,推理入口仍走 Coordinator。

需求来源

Coordinator 与 Controller 解耦,可单独拉起。
对外等价替代原生 vLLM Proxy(OpenAI 兼容 /v1/completions、/v1/chat/completions)。
实例只推路由必需字段;set / add / del 只改纳管表,不启停 P/D 进程;重启后由外部重放完整 set。
KV Cache 亲和可选:配了 kv-conductor 就注册;conductor_service 为空则跳过,不影响基础推理。

价值/作用

  • 降部署成本:无 K8s、无 Controller、无 Node Manager 也能用 Motor 调度;Coordinator 是纯 CPU 服务。
  • 接已有引擎:vllm serve 已在跑时,只需 POST /instances/refresh 或 python3 -m motor.coordinator.register 登记 host:port。
  • 能力不打折:内部仍走原 Scheduler / Inference Worker。支持 prefill_handoff_decode(默认)和 concurrent_engine_sync(Layerwise / trigger)。
  • 协议变薄:实例只需 id、role、endpoints[].id、endpoints[].address;model_name 可省略,从引擎 /v1/models 发现;job_name / parallel_config / status 由 Coordinator 生成。
  • 亲和可选:scheduler_type=kv_cache_affinity 时走 kv-conductor;不配 Conductor 时照常推理。
  • 可运维:无配置可本机启动(默认 127.0.0.1:1025/1026/1027);跨机再写 coordinator.json。

设计方案

  1. 控制面解耦
  • 用户配置没有 motor_controller_config、路径缺失或文件不存在:视为 standalone。
  • has_motor_controller_config() 为 False 时不加载 ControllerConfig 默认值,告警不上报 127.0.0.1:1026。
  • Controller 配置改为惰性加载,避免独立部署被控制面配置拖死。
  1. External Deployer 精简协议
    同一 URL POST /instances/refresh,两种体:
  • Controller:完整 InsEventMsg(job_name + dict endpoints)。
  • Standalone:顶层有 model_name / dispatch_capabilities / engine_type,或 endpoints 为 [{"id":0,"address":"host:port"}] 且实例无job_name。混用返回 400。
    to_internal() 补 job_name=external-{role}-{id}、status=active、parallel_config.dp_size=endpoint 数。del 的 role+address 必须和登记时一致,否则 409。Coordinator 重启后必须重放完整 set。
  1. KV conductor 可选
  • conductor_service 为空:注册/注销直接跳过。
  • 已配置:按 npu_endpoint + endpoint.id 订 ZMQ,dp_rank=endpoint.id。单 DP 实例 id 必须为 0,才能和引擎 DP0、亲和查找 DP["0"] 对齐。
  1. 使用入口
  • 无配置:python3 -m motor.coordinator.main
  • 登记:python3 -m motor.coordinator.register --prefill ip:port --decode ip:port(默认 set,另有 add / del / list)
  • 也可直接 POST 精简 JSON。文档:docs/zh/user_guide/deployment/standalone.md,管理面说明同步在 management_interfaces.md。

感谢您的贡献 🎉!

likedislike
灏悦心陈灏悦心陈
8月30日 修改了issue 的描述
灏悦心陈灏悦心陈
8月30日 修改了issue 的描述
wangyang
wangyang成员
8月31日 评论:

👋 您好,感谢向 mindie-motor 提交 Issue!
🎉 我们已收到您的反馈,感谢你对开源社区的支持!

📅 处理时效 维护团队将在工作日 24 小时内查看并回复您的问题。
🔍 自助排查(推荐优先查看) 在等待回复期间,您可以先查阅仓库README以及历史 Issue 中相似问题的解决方案,多数问题可快速解决。
💡 为了更快定位问题,请您确保 Issue 包含:

清晰的问题描述
可复现的操作步骤
相关日志、截图或环境信息
我们会尽快跟进,感谢您的理解与配合!

likedislike
Ffuduyouyuanren成员
8月31日 关联了看板:MindIE-Motor
灏悦心陈灏悦心陈
9月8日 关联了pull request:【Feature】新增mindie-motor_standalone_coordinator部署模式
灏悦心陈灏悦心陈
9月8日 关联了pull request:【Feature】新增mindie-motor_standalone_coordinator部署模式
灏悦心陈灏悦心陈
29 天前 修改了issue 的描述