已合并
[docs]: 补充 SGLang PD 分离部署指导 #893
[docs]: 补充 SGLang PD 分离部署指导 #893
已合并
chaofengdev创建于 14 天前
11 个文件变更+362-3
@@ -38,6 +38,8 @@ vLLM 引擎按 `kv_connector` 名称(大小写不敏感)推导 capability,
38| `MooncakeLayerwiseConnector` | `concurrent_engine_sync` |38| `MooncakeLayerwiseConnector` | `concurrent_engine_sync` |
39| `MultiConnector` | 取 `kv_connector_extra_config.connectors[0]`(传输连接器,要求至少 2 个)递归判定 |39| `MultiConnector` | 取 `kv_connector_extra_config.connectors[0]`(传输连接器,要求至少 2 个)递归判定 |
40 40 
41+> `MooncakeConnectorV1` 适用于标准 attention 模型;混合 attention 模型(V4 系列)须用 `MooncakeHybridConnector`。详见 [KV 池化 Connector 选型](../user_guide/features/kv_cache_store/README.md#pd-传输-connector-选型)。
42+ 
41- **`MultiConnector` 只看 `connectors[0]`(传输层)**。KV 池/存储类连接器(如 `AscendStoreConnector``MooncakeConnectorStoreV1``UCMConnector``LMCacheAscendConnector`)一般作为 `connectors[1]` 的后端使用,不参与 capability 判定,因此**无需**出现在白名单中。43- **`MultiConnector` 只看 `connectors[0]`(传输层)**。KV 池/存储类连接器(如 `AscendStoreConnector``MooncakeConnectorStoreV1``UCMConnector``LMCacheAscendConnector`)一般作为 `connectors[1]` 的后端使用,不参与 capability 判定,因此**无需**出现在白名单中。
42- 不在上表内、且 `connectors[0]` 也无法识别的连接器会被判为 `unknown`**不产生任何 capability**44- 不在上表内、且 `connectors[0]` 也无法识别的连接器会被判为 `unknown`**不产生任何 capability**
43 45 
@@ -6,7 +6,7 @@ MindIE Motor 支持以下部署方式,可根据自身环境选择:
6 6 
Y
Yyilunh11 天前

相关的agent文档是不是也要补充下

likedislike
chaofengdev
chaofengdev
11 天前 评论:
7适用于已有 Kubernetes 集群的场景,通过 deployer 工具一键生成并 apply 资源文件,支持 PD 分离、PD 聚合等多种部署形态,具备完整的服务发现、负载均衡与自愈能力。7适用于已有 Kubernetes 集群的场景,通过 deployer 工具一键生成并 apply 资源文件,支持 PD 分离、PD 聚合等多种部署形态,具备完整的服务发现、负载均衡与自愈能力。
8 8 
9-→ 从 [部署模式说明](k8s/README.md) 开始9+→ 从 [部署模式说明](k8s/README.md) 开始;SGLang 引擎见 [SGLang PD 分离部署](k8s/pd_disaggregation_sglang.md)
10 10 
11需要在集群内通过 Job 执行 deployer 时,可使用[云原生部署与 Helm Chart](https://gitcode.com/Ascend/MindIE-Motor/blob/master/examples/cloud_native_deploy/README.zh.md)。社区 Chart 支持直接 `helm install/upgrade`11需要在集群内通过 Job 执行 deployer 时,可使用[云原生部署与 Helm Chart](https://gitcode.com/Ascend/MindIE-Motor/blob/master/examples/cloud_native_deploy/README.zh.md)。社区 Chart 支持直接 `helm install/upgrade`
12 12 
@@ -15,7 +15,7 @@ MindIE Motor支持两种业务拓扑结构(**影响功能**)和 三种服务
15 15 
16### PD 分离16### PD 分离
17 17 
18-Prefill 与 Decode 分属不同实例,适用于需要独立规划 P/D 资源、追求更高吞吐的场景。详细步骤见 [PD 分离服务部署](./pd_disaggregation_deployment.md)。18+Prefill 与 Decode 分属不同实例,适用于需要独立规划 P/D 资源、追求更高吞吐的场景。详细步骤见 [PD 分离服务部署](./pd_disaggregation_deployment.md)。若底层引擎为 SGLang,见 [SGLang PD 分离服务部署](./pd_disaggregation_sglang.md)。
19 19 
20### PD 混部20### PD 混部
21 21 
@@ -1,6 +1,6 @@
1# PD分离服务部署指导1# PD分离服务部署指导
2 2 
3-本文档通过**完整详细**的部署案例,指导开发者体验基于 Motor 的 PD 分离服务部署,并指导生产环境配置优化实践。3+本文档通过**完整详细**的部署案例,指导开发者体验基于 Motor 的 PD 分离服务部署,并指导生产环境配置优化实践。若底层引擎为 **SGLang**,请优先参阅 [SGLang PD 分离服务部署指导](./pd_disaggregation_sglang.md)。
4 4 
5## 950系列服务器预检查(其他系列服务器可跳过检查)5## 950系列服务器预检查(其他系列服务器可跳过检查)
6 6 
@@ -0,0 +1,333 @@
1+# SGLang PD 分离服务部署指导
2+ 
3+本文档指导基于 MindIE Motor 的 **SGLang** 引擎完成 K8s **PD 分离**部署,并说明与 vLLM 的关键差异。
4+ 
5+通用 PD 分离流程与 [PD 分离服务部署指导](./pd_disaggregation_deployment.md) 一致,本文只写 **SGLang 必改项与已验证典配用法**
6+ 
7+> [!NOTE]说明
8+>
9+> - 官方文档将 SGLang 标为 **已支持**:可通过 `engine_type: sglang` 部署;
10+> - 基于推理引擎的部分高级能力与 vLLM 覆盖范围可能不同;
11+> - 客户端只访问 **Coordinator** 北向接口,切换引擎无需改调用方式。
12+ 
13+## 与 vLLM PD 分离的差异
14+ 
15+| 项 | vLLM | SGLang |
16+| --- | --- | --- |
17+| 配置字段 | `engine_type: vllm` | `engine_type: sglang` |
18+| 引擎拉起 | `vllm serve` | `python3 -m sglang.launch_server` |
19+| PD 协调 | handoff / trigger(`kv_transfer_params` 等) | bootstrap(`bootstrap_host` / `bootstrap_port` / `bootstrap_room`) |
20+| 必配端口 | 业务口为主 | 业务口 + `disaggregation-bootstrap-port` |
21+| 传输 / 存储 | 按 Connector 配置 | 需配置 `disaggregation-transfer-backend: ascend`,Deployer 会额外拉起 **MF Store** |
22+| 健康探测 | 可选 Motor 虚推(`enable_virtual_inference`) | **原生生成式** `GET /health`,不创建 Motor 虚推 monitor |
23+| 配置生成 | 可用 vLLM→Motor 转换工具 | **暂无对等转换工具**;请基于 `examples/infer_engines/sglang/` 典配修改 |
24+ 
25+## 950 系列服务器预检查
26+ 
27+仅在使用 950 系列服务器时:请在每台服务器检查 `/lib/route.conf``/etc/hccl_rootinfo.json` 以及 `/etc/hixlep` 是否存在且正确。若不存在或不正确,请参考 [hixlep 配置文件生成文档](https://gitcode.com/cann/hixl/wiki/A5%20LocalCommRes%E9%85%8D%E7%BD%AE%E6%8C%87%E5%8D%97.md),在生成 `/etc/hixlep` 时使用「D2D 场景」。
28+ 
29+## 获取启动脚本与镜像
30+ 
31+### 环境要求
32+ 
33+- 推理节点已完成 [环境准备](../../environment_preparation.md)。
34+- 模型权重已放到集群可访问路径,并与 `weight_mount_path` / `model-path` 一致。
35+- P/D 各至少具备典配所需的 NPU 数量(示例见下文「推荐典配」)。
36+ 
37+### 准备镜像
38+ 
39+将镜像加载到 K8s 集群**所有相关节点**
40+ 
41+- **方式一**:使用已安装 MindIE Motor 的 SGLang 镜像,保证镜像内可执行 `python3 -m motor``python3 -m sglang.launch_server`。(计划支持)
42+- **方式二**:基于 Ascend SGLang 基座镜像手动安装 MindIE Motor,参考 [基于 vllm-ascend/sglang 镜像安装 MindIE Motor](../../maintenance/build_motor_image_from_vllm_ascend.md#基于vllm-ascendsglang镜像安装mindie-motor)。
43+ 
44+### 准备 examples
45+ 
46+`examples` 放到 K8s master 节点:
47+ 
48+- **方式一**:从代码仓拷贝仓库内目录 `examples/`
49+- **方式二**:从镜像导出(路径一般为 `/tmp/motor/examples`):(计划支持)
50+ 
51+```bash
52+IMAGE="<镜像名或镜像ID>"
53+cid=$(docker create "$IMAGE")
54+docker cp "$cid:/tmp/motor/examples" ./examples
55+docker rm "$cid"
56+```
57+ 
58+## 准备配置文件
59+ 
60+SGLang 目前 **没有** vLLM 侧的脚本自动转换工具,请直接选用仓库典配,并按个人需求修改后部署。
61+ 
62+### 推荐典配
63+ 
64+| 典型场景 | 目录 | 说明 |
65+| --- | --- | --- |
66+| GLM 5.1 / A3 1P1D | `examples/infer_engines/sglang/models/glm5.1/A3/` | GLM 5.1 PD 分离参考;更多典配见 [SGLang GLM 5.1 Best Practice](https://docs.sglang.io/docs/hardware-platforms/ascend-npus/model-deployment/best-practices/glm_5_1) |
67+| GLM 5.2 / A3 1P1D | `examples/infer_engines/sglang/models/glm5.2/A3/` | GLM 5.2 PD 分离参考;更多典配见 [SGLang GLM 5.2 Best Practice](https://docs.sglang.io/docs/hardware-platforms/ascend-npus/model-deployment/best-practices/glm_5_2) |
68+| Qwen3-8B / A2 | `examples/infer_engines/sglang/models/qwen_8b/A2/` | 资源占用较小,适合打通流程;更多典配见 [SGLang Qwen3-8B Best Practice](https://docs.sglang.io/docs/hardware-platforms/ascend-npus/model-deployment/best-practices/qwen3_8b) |
69+| 更多模型 | `examples/infer_engines/sglang/` | 根目录及子目录下的 `user_config.json` / `env.json` |
70+ 
71+每个典配目录需包含:
72+ 
73+- `user_config.json`:部署拓扑、Motor 组件配置、引擎参数
74+- `env.json`:各角色环境变量
75+ 
76+### 部署前必改项
77+ 
78+打开典配中的 `user_config.json`,至少确认:
79+ 
80+| 字段 | 位置 | 说明 |
81+| --- | --- | --- |
82+| `image_name` | `motor_deploy_config` | 与集群内可用镜像一致 |
83+| `job_id` | `motor_deploy_config` | 即 K8s namespace 名 |
84+| `hardware_type` | `motor_deploy_config` | 硬件类型,如 `800I_A2` / `800I_A3` |
85+| `weight_mount_path` | `motor_deploy_config` | 宿主机权重挂载根路径 |
86+| `p_*` / `d_*` 实例与卡数 | `motor_deploy_config` | 与节点 NPU、并行度匹配 |
87+| `*_node_selector` | `motor_deploy_config` | 非必须,按集群 hostname 绑定 Controller / Coordinator / P / D / MF Store |
88+| `coordinator_infer_node_port` 等 | `motor_deploy_config` | 非必须,避免与现网 NodePort 冲突 |
89+| `engine_type` | P/D 引擎段 | 引擎类型,必须为 `sglang` |
90+| `model-path` / `served-model-name` | `engine_config` | 权重路径与对外模型名 |
91+| `disaggregation-bootstrap-port` | **Prefill** `engine_config` | SGLang PD bootstrap 端口;未配置则不生成 bootstrap 元数据 |
92+ 
93+### 最小引擎配置示例
94+ 
95+以下仅为 `Qwen3-8B` 示例,更多详细配置见 `examples/infer_engines/sglang/models/{model_name}/{hardware_type}/`
96+ 
97+```json
98+"motor_engine_prefill_config": {
99+ "engine_type": "sglang",
100+ "engine_config": {
101+ "served-model-name": "qwen3-8B",
102+ "model-path": "/mnt/weight/Qwen3-8B",
103+ "tp-size": 2,
104+ "pp-size": 1,
105+ "dp-size": 1,
106+ "mem-fraction-static": 0.7,
107+ "disaggregation-bootstrap-port": 9100,
108+ "disaggregation-transfer-backend": "ascend",
109+ "attention-backend": "ascend",
110+ "trust-remote-code": true
111+ }
112+},
113+"motor_engine_decode_config": {
114+ "engine_type": "sglang",
115+ "engine_config": {
116+ "served-model-name": "qwen3-8B",
117+ "model-path": "/mnt/weight/Qwen3-8B",
118+ "tp-size": 2,
119+ "pp-size": 1,
120+ "dp-size": 1,
121+ "mem-fraction-static": 0.7,
122+ "disaggregation-transfer-backend": "ascend",
123+ "attention-backend": "ascend",
124+ "trust-remote-code": true
125+ }
126+}
127+```
128+ 
129+说明:
130+ 
131+- `engine_config` 由 NodeManager 组件**透传**`sglang.launch_server` 参数,字段名以所用 SGLang 版本 CLI 为准(支持 kebab-case,部分也兼容 underscore)。
132+- Prefill 侧 `disaggregation-bootstrap-port`(或 `disaggregation_bootstrap_port`)写入实例元数据的 `bootstrap_port`,供 Coordinator 的 SGLang Adapter 做 P/D 对接,**不要**与业务口 `endpoint_config.service_ports` 混用。
133+- 首次打通建议 `scheduler_type: load_balance``reschedule_config.enable: false`,高级特性见下文。
134+ 
135+全量字段说明见 [user_config 配置参考](../../configuration/config_reference.md)。
136+ 
137+## 服务部署与验证
138+ 
139+以下操作在 K8s master 节点执行。以 GLM 5.1 A3 典配为例。
140+ 
141+### 拉起服务
142+ 
143+```bash
144+# <namespace> 须与 user_config.json 中 job_id 一致
145+kubectl create namespace <namespace>
146+ 
147+cd examples/deployer
148+python3 deploy.py --config_dir ../infer_engines/sglang/models/glm5.1/A3
149+```
150+ 
151+大模型权重加载可能需要数分钟,请等待 P/D Ready 后再测试。
152+ 
153+### 查看状态
154+ 
155+```bash
156+kubectl get pods -n <namespace> -o wide
157+```
158+ 
159+| 运行时类型(示例) | 说明 |
160+| --- | --- |
161+| `mindie-motor-controller-*` | 服务管理 |
162+| `mindie-motor-coordinator-*` | 请求调度 / 业务入口 |
163+| `mindie-motor-mf-store-*``mf-store` | 服务 KV Cache 传输 |
164+| `sglang-p*` | Prefill 实例 |
165+| `sglang-d*` | Decode 实例 |
166+| `kv-conductor-*`(可选) | 服务 KV 亲和特性 |
167+ 
168+Pod `Running` 不等于业务完全就绪,实际拉起状态需结合日志与 `/v1/models` 确认。
169+ 
170+### 查看日志
171+ 
172+```bash
173+cd examples/deployer
174+# 编辑 log_collect/log_config.ini:name_space 改为 job_id
175+vim log_collect/log_config.ini
176+bash show_log.sh
177+```
178+ 
179+### 验证服务
180+ 
181+```bash
182+# <node_ip>:暴露 Coordinator Infer NodePort 的节点 IP
183+# <infer_port>:user_config 中 coordinator_infer_node_port
184+# <model>:engine_config 中 served-model-name
185+curl -s http://<node_ip>:<infer_port>/v1/models
186+ 
187+curl -X POST http://<node_ip>:<infer_port>/v1/chat/completions \
188+ -H "Content-Type: application/json" \
189+ -d '{
190+ "model": "<model>",
191+ "messages": [{"role": "user", "content": "你是谁?"}],
192+ "max_tokens": 360,
193+ "stream": true
194+ }'
195+```
196+ 
197+- 若返回 `{"detail":"Service is not available"}`:尚未就绪,稍后重试并查 P/D / MF Store 日志。
198+- 若返回流式 JSON:推理正常。更多接口见 [业务接口](../../api/service_interfaces.md)。
199+ 
200+### 终止服务
201+ 
202+```bash
203+cd examples/deployer
204+bash delete.sh <namespace>
205+```
206+ 
207+重部署前请确认旧 Pod 已退出、NPU 已释放,再执行 `deploy.py`。避免仅 `kubectl rollout restart` 或部分重建导致持续 Pending。
208+ 
209+## 特性配置指导
210+ 
211+通用能力配置方式与 [PD 分离服务部署指导 · 特性配置](./pd_disaggregation_deployment.md#特性配置指导) 相同,下面仅列与 SGLang 相关的要点。
212+ 
213+### 健康探测
214+ 
215+- NodeManager 对业务口做 `GET /health` 就绪与心跳。
216+- SGLang 使用**原生生成式** `/health`(闲时跑轻量生成、忙时可跳过),Motor **不**创建虚推 Worker。
217+- `enable_virtual_inference` 仅影响 vLLM,设为 `false` **不会**关闭 SGLang 生成式 `/health`
218+- 详见 [虚推健康探测](../../features/sim_inference.md)。
219+ 
220+### ChunkPrefill
221+ 
222+在 P 侧的 `engine_config` 中配置,例如:
223+ 
224+```json
225+"chunked-prefill-size": 4096
226+```
227+ 
228+- 用于控制超长 Prefill 切块,减轻长短请求互相拖死。
229+- 取值需结合模型与显存验证,详见 SGLang 官网。
230+ 
231+### 不对等 TP / PCP / MTP
232+ 
233+均属引擎原生能力,经 `engine_config` 透传即可,例如:
234+ 
235+- 不对等 TP:P/D 的 `tp-size` 可不同,非 MLA 模型不保证相关性能,详见 SGLang 官网。
236+- PCP:Prefill 侧配置如 `enable-prefill-cp``cp-strategy``attn-cp-size`,详见 SGLang 官网。
237+- MTP:Decode 侧如 `speculative-algorithm` 及相关 draft 参数,详见 SGLang 官网。
238+ 
239+### 故障重调度
240+ 
241+```json
242+"motor_coordinator_config": {
243+ "exception_config": {
244+ "reschedule_config": { "enable": true },
245+ "max_retry": 5,
246+ "transport_max_retry": 3,
247+ "retry_delay": 0.2
248+ }
249+}
250+```
251+ 
252+- 默认关闭。开启后,`completions` 流式/非流式与 `chat` 非流式场景已经支持。
253+- **已知限制**:流式路径依赖引擎回传 token ids 做续流。SGLang 当前对 chat 流式不支持 `return_token_ids``stream` 同时开启,导致 chat 流式重调度不可用。
254+- 详见 [故障场景重调度](../../features/fault_tolerance/rescheduler.md)。
255+ 
256+### KV Cache 亲和调度(可选)
257+ 
258+```json
259+"motor_coordinator_config": {
260+ "scheduler_config": {
261+ "scheduler_type": "kv_cache_affinity",
262+ "kv_affinity": { "mode": "unified" }
263+ }
264+},
265+"motor_engine_prefill_config": {
266+ "engine_config": {
267+ "kv-events-config": {
268+ "publisher": "zmq",
269+ "enable_kv_cache_events": true,
270+ "endpoint": "tcp://*:5557",
271+ "replay_endpoint": "tcp://*:6667",
272+ "topic": "kv-events"
273+ }
274+ }
275+},
276+"kv_conductor_config": {
277+ "http_server_port": 13333,
278+ "block_size": 128,
279+ "engine_type": "sglang"
280+}
281+```
282+ 
283+若典配已包含或需开启亲和调度,检查是否同时具备:
284+ 
285+- `motor_coordinator_config``scheduler_type: kv_cache_affinity`
286+- `motor_engine_prefill_config``kv-events-config`(ZMQ 发布),且**不要**关闭 SGLang Radix(勿设 `disable-radix-cache`
287+- `kv_conductor_config`:配置 `http_server_port`
288+ 
289+关闭时改回 `load_balance`,并去掉 `kv-events-config``kv_conductor_config`。详见 [KV Cache 亲和性调度](../../features/kvcache_affinity.md)。
290+ 
291+### KV 池化(Mooncake / Memcache)
292+ 
293+- SGLang 路径上 KV 池化能力覆盖与验收进度弱于 vLLM,正在积极适配中。
294+- 更多池化专项请参考 [KV 池化部署指南](../../features/kv_cache_store/README.md),并以实际验证结论为准。
295+ 
296+## 附录
297+ 
298+### 运维技巧
299+ 
300+- **Service is not available**:先等 P/D / MF Store Ready。检查 Prefill 是否因 MF Store 未就绪导致 SMEM / 传输初始化失败。
301+- **镜像与权重**:确认各节点可拉取 `image_name``model-path` 在容器内可读。
302+- **NPU Pending**:部署前检查目标节点 Ascend 资源是否被其他任务占满,Motor 与纯 SGLang 等同机路径勿并行抢卡。
303+- **重部署**:先完整卸载并等待资源释放,再 `deploy.py`,勿依赖 `rollout restart` 做配置切换。
304+- **PP 场景**:多 PP 时需保证 bootstrap 和集合通信相关环境与典配一致,保证 NodeManager 可注入 PP bootstrap 相关环境变量。
305+ 
306+### 已知限制
307+ 
308+| 项 | 说明 |
309+| --- | --- |
310+| Anthropic 接口 `/v1/messages` | 依赖上游 SGLang。仅 `/v1/messages/count_tokens` 可用 |
311+| chat 流式 + 重调度 | 受引擎 `return_token_ids` 限制,当前不可用 |
312+| 池化能力 | 以特性文档与实测为准,尚未与 vLLM 对齐 |
313+| 容器快照 | 以特性文档与实测为准,尚未与 vLLM 对齐 |
314+ 
315+### examples 目录结构(SGLang)
316+ 
317+```text
318+examples/
319+├── deployer/ # deploy.py / delete.sh / show_log.sh
320+└── infer_engines/
321+ └── sglang/
322+ ├── user_config.json # 通用模板
323+ ├── env.json
324+ ├── user_config_pd_hetero.json
325+ ├── models/
326+ │ ├── glm5.1/A3/ # GLM 5.1 A3 参考典配
327+ │ ├── glm5.2/A3/ # GLM 5.2 A3 参考典配
328+ │ └── qwen_8b/A3/ # Qwen3 8b A3 参考典配
329+ └── pd_hybrid/ # 混部相关示例
330+```
331+ 
332+- 部署工具说明见 `examples/deployer/README.md`
333+- 业务拓扑与 `deploy_mode` 说明见 [部署方式配置说明](./README.md)。
@@ -36,6 +36,17 @@ KV池化主要通过 `user_config.json` 配置;使用 UCM 功能时还需要
36 36 
37池化通过 `MultiConnector` 组合传输连接器(`connectors[0]`)与池化后端连接器(`connectors[1]`)实现。以 `MooncakeConnectorV1`(P/D 协同)+ `AscendStoreConnector`(KV 池后端)为例:37池化通过 `MultiConnector` 组合传输连接器(`connectors[0]`)与池化后端连接器(`connectors[1]`)实现。以 `MooncakeConnectorV1`(P/D 协同)+ `AscendStoreConnector`(KV 池后端)为例:
38 38 
39+##### P/D 传输 Connector 选型
40+ 
41+> [!IMPORTANT]
42+>
43+> | 模型 attention 架构 | `connectors[0]` | 典型模型 |
44+> |---------------------|-----------------|----------|
45+> | 标准 attention | `MooncakeConnectorV1` | Qwen3、GLM-5、DeepSeek V3.1 |
46+> | **混合 attention** | **`MooncakeHybridConnector`** | DeepSeek V4 / V4 Flash / V4 Pro |
47+>
48+> 混合 attention 模型误配 V1 时,Decode 节点可能在推理时崩溃重启。
49+ 
39**P 实例(motor_engine_prefill_config):**50**P 实例(motor_engine_prefill_config):**
40 51 
41```json52```json
@@ -287,3 +298,7 @@ KV池化通过 `MultiConnector` 组合传输 Connector 和 Store Connector。不
2876. **为什么 UCM 样例中仍然有 `backend: "mooncake"`**2986. **为什么 UCM 样例中仍然有 `backend: "mooncake"`**
288 299 
289 这是当前 MindIE Motor deployer 用来生成 Mooncake kv_store/master 资源的配置,不是 UCM 的存储后端。UCM Store 应查看 `UCMConnector` 中的 `store_pipeline` 和 `storage_backends`。300 这是当前 MindIE Motor deployer 用来生成 Mooncake kv_store/master 资源的配置,不是 UCM 的存储后端。UCM Store 应查看 `UCMConnector` 中的 `store_pipeline` 和 `storage_backends`。
301+ 
302+7. **推理时 Decode 节点反复崩溃重启**
303+ 
304+ 混合 attention 模型须将 `connectors[0]` 配为 `MooncakeHybridConnector`,见 [选型说明](#pd-传输-connector-选型)。
@@ -2,6 +2,8 @@
2 2 
3MemCache 为默认池化后端,基于 [memcache_hybrid](https://gitcode.com/Ascend/memcache) 提供 KV 池化能力,已预装在 Motor 镜像中,无需额外安装。3MemCache 为默认池化后端,基于 [memcache_hybrid](https://gitcode.com/Ascend/memcache) 提供 KV 池化能力,已预装在 Motor 镜像中,无需额外安装。
4 4 
5+> 混合 attention 模型的 `connectors[0]` 须用 `MooncakeHybridConnector`,见 [选型说明](../README.md#pd-传输-connector-选型)。
6+ 
5## 配置7## 配置
6 8 
7`AscendStoreConnector` 中配置 `"backend": "memcache"`9`AscendStoreConnector` 中配置 `"backend": "memcache"`
@@ -37,6 +37,8 @@ Mooncake 池化有两种部署方式(`store_mode` 取值),区别在池化
37 37 
38### 配置38### 配置
39 39 
40+> 下方示例 `connectors[0]` 为标准 attention 配置;混合 attention 须换为 `MooncakeHybridConnector`,见 [选型说明](../README.md#pd-传输-connector-选型)。
41+ 
40以下为 P/D 分离 + standalone 部署在 `user_config.json` 中的关键配置:42以下为 P/D 分离 + standalone 部署在 `user_config.json` 中的关键配置:
41 43 
42```json44```json
@@ -166,6 +166,8 @@ Prefill 的 `kv_transfer_config` 使用 `MultiConnector`,并将 UCM 配置内
166 166 
167`connectors[0]` 也可以按 PD 方案使用 MindIE Motor 当前已识别的其他 Mooncake 传输 Connector,例如 `MooncakeHybridConnector``MooncakeLayerwiseConnector`。不同 Connector 的执行模式和参数并不相同,应按 [PD 分离特性说明](../../../../design/pd_disaggregation.md#connector-驱动执行计划) 配置,并保证 Prefill 与 Decode 使用相互匹配的传输配置;`UCMConnector` 仍保持在 `connectors[1]`167`connectors[0]` 也可以按 PD 方案使用 MindIE Motor 当前已识别的其他 Mooncake 传输 Connector,例如 `MooncakeHybridConnector``MooncakeLayerwiseConnector`。不同 Connector 的执行模式和参数并不相同,应按 [PD 分离特性说明](../../../../design/pd_disaggregation.md#connector-驱动执行计划) 配置,并保证 Prefill 与 Decode 使用相互匹配的传输配置;`UCMConnector` 仍保持在 `connectors[1]`
168 168 
169+> 混合 attention 模型(V4 系列)须用 `MooncakeHybridConnector`,见 [选型说明](../README.md#pd-传输-connector-选型)。
170+ 
169### 配置 Decode171### 配置 Decode
170 172 
171Decode 使用与 Prefill 匹配的 Mooncake Connector,不配置 UCM。以下是 `MooncakeConnectorV1` 样例:173Decode 使用与 Prefill 匹配的 Mooncake Connector,不配置 UCM。以下是 `MooncakeConnectorV1` 样例:
@@ -35,6 +35,8 @@ vLLM 是当前 MindIE Motor 推荐的底层推理引擎,已与控制面深度
35 35 
36SGLang 在多轮对话、Agent 搜索、Few-shot 等依赖前缀复用的场景中,常能较好利用 RadixAttention 等机制。36SGLang 在多轮对话、Agent 搜索、Few-shot 等依赖前缀复用的场景中,常能较好利用 RadixAttention 等机制。
37 37 
38+**部署步骤**:K8s PD 分离请直接参考 [SGLang PD 分离服务部署指导](../deployment/k8s/pd_disaggregation_sglang.md)。示例典配见 `examples/infer_engines/sglang/`(如 `models/glm5.1/A3/``models/qwen_8b/A2/`)。
39+ 
38### 配置 SGLang40### 配置 SGLang
39 41 
40```json42```json
@@ -6,6 +6,7 @@
6- [服务化部署]()6- [服务化部署]()
7 - [基于K8s单容器PD分离部署](./deployment/k8s/pd_aggregation_deployment.md)7 - [基于K8s单容器PD分离部署](./deployment/k8s/pd_aggregation_deployment.md)
8 - [基于K8s多容器PD分离部署](./deployment/k8s/pd_disaggregation_deployment.md)8 - [基于K8s多容器PD分离部署](./deployment/k8s/pd_disaggregation_deployment.md)
9+ - [基于K8s的SGLang PD分离部署](./deployment/k8s/pd_disaggregation_sglang.md)
9 - [Controller支持RAS能力]()10 - [Controller支持RAS能力]()
10 - [单容器docker only PD分离部署](./deployment/docker/single_container.md)11 - [单容器docker only PD分离部署](./deployment/docker/single_container.md)
11 - [多容器docker only PD分离部署](./deployment/docker/multi_container.md)12 - [多容器docker only PD分离部署](./deployment/docker/multi_container.md)