AISBench 精度评测 · PD 分离组网
Prefill-Decode 分离 · 华为 Atlas 800I A3 · Mooncake + AscendStore
整体介绍
背景:大语言模型推理分为 Prefill(预填充,处理输入 prompt 生成 KV Cache)和 Decode(解码,自回归生成 token)两个阶段。本组网采用 PD 分离 架构,将两阶段部署在不同节点组,独立扩展,提升整体吞吐与资源利用率。
数据流总览:AISBench 客户端 → Proxy(负载均衡)→ Prefill 节点组(生成 KV)→ Mooncake(实时 KV 传输)→ Decode 节点组(消费 KV 生成 token)→ Proxy → 客户端。AscendStore 异步备份 KV 用于恢复和复用。
各节点的并行策略(TP/DP)将在对应节点介绍中详细解释。
整体组网拓扑
graph TB
subgraph Client["客户端 / AISBench 评测"]
AIS["AISBench
aime2025 精度评测"]
end
subgraph Proxy["代理层"]
LB["Proxy Server
负载均衡"]
end
subgraph PrefillGroup["Prefill 节点组"]
P0["Node 0
Atlas 800I A3
16×NPU
TP=16, DP=2"]
P1["Node 1
Atlas 800I A3
16×NPU
TP=16, DP=1"]
end
subgraph DecodeGroup["Decode 节点组"]
D2["Node 2
Atlas 800I A3
16×NPU
TP=4, DP=4"]
D3["Node 3
Atlas 800I A3
16×NPU
TP=4, DP=4"]
end
subgraph KVStore["KV Cache 传输层"]
MC["Mooncake KV Pool
实时传输中间件
端口 30000/30200"]
MS["AscendStore
持久化存储层
Memcache 协议"]
end
AIS -->|"HTTP 请求"| LB
LB -->|"Prefill 请求"| P0
LB -->|"Prefill 请求"| P1
P0 -->|"KV Producer
端口 30000"| MC
P1 -->|"KV Producer
端口 30000"| MC
MC -->|"KV Consumer
端口 30200"| D2
MC -->|"KV Consumer
端口 30200"| D3
MC -.->|"异步持久化备份"| MS
D2 -->|"Decode 响应"| LB
D3 -->|"Decode 响应"| LB
LB -->|"HTTP 响应"| AIS
classDef prefillGroup fill:#ddf4ff,stroke:#0550ae,color:#0550ae
classDef decodeGroup fill:#dafbe1,stroke:#116329,color:#116329
classDef kvStore fill:#fff8c5,stroke:#7a5e00,color:#7a5e00
classDef client fill:#f6f8fa,stroke:#656d76,color:#656d76
class PrefillGroup prefillGroup
class DecodeGroup decodeGroup
class KVStore kvStore
class Client client
客户端
Prefill 节点组
Decode 节点组
KV 传输层 (Mooncake)
持久化存储 (AscendStore)
HTTP
KV 实时传输
持久化备份
节点核心参数一览
| 节点 | 角色 | 硬件/平台 | 并行策略 | 关键端口 | 数据流方向 |
| AISBench | 客户端评测 | 通用 x86/ARM | — | HTTP | 请求 → Proxy;响应 ← Proxy |
| Proxy Server | 负载均衡/路由 | 通用服务器 | — | HTTP 监听 | 分发 Prefill,汇总 Decode |
| Node 0 (Prefill) | Prefill 计算 | Atlas 800I A3, 16×NPU | TP=16, DP=2 | 30000 (Producer) | KV → Mooncake |
| Node 1 (Prefill) | Prefill 计算 | Atlas 800I A3, 16×NPU | TP=16, DP=1 | 30000 (Producer) | KV → Mooncake |
| Node 2 (Decode) | Decode 生成 | Atlas 800I A3, 16×NPU | TP=4, DP=4 | 30200 (Consumer) | KV ← Mooncake;响应 → Proxy |
| Node 3 (Decode) | Decode 生成 | Atlas 800I A3, 16×NPU | TP=4, DP=4 | 30200 (Consumer) | KV ← Mooncake;响应 → Proxy |
| Mooncake KV Pool | 实时 KV 传输中间件 | 高速网络 + 内存池 | — | 30000/30200 | Producer 入,Consumer 出 |
| AscendStore | KV 持久化存储 | 分布式存储集群 (Memcache) | — | Memcache 标准端口 | 远端备份/恢复 |
并行策略说明:
TP = 张量并行(切分模型权重,降低单请求延迟),
DP = 数据并行(多请求并行,提升吞吐)。
不同节点采用不同组合,详见下方各节点介绍。
各节点详细说明
AISBench 评测客户端 aime2025
角色:评测发起方 · 协议:HTTP/REST · 数据集:aime2025
功能:AISBench 是面向 AI 推理的基准测试工具,本次用于 aime2025 精度评测。客户端加载评测数据集,构造 HTTP 请求(包含 prompt 和推理参数),发送至 Proxy Server,并接收 Decode 节点返回的生成结果,与标准答案对比计算精度指标(准确率、BLEU 等)。
硬件平台:通用 x86_64 / ARM
网络要求:与 Proxy 低延迟连通
并发数:可配置(多路并发)
输出:评测报告(精度、吞吐、延迟)
HTTP 请求 → Proxy
HTTP 响应 ← Proxy
Proxy Server (负载均衡) 网关/调度
协议:HTTP/1.1, HTTP/2 · 高可用:主备/集群
职责:作为系统入口,接收 AISBench 的所有 HTTP 请求。根据策略将 Prefill 请求分发至 Node 0/1,并将 Decode 节点的响应汇集后返回客户端。同时负责健康检查、故障转移、流量限流等治理功能。
负载均衡算法:轮询 / 最少连接 / 一致性哈希
会话保持:基于请求 ID 或 Client IP
监控:集成 Prometheus 指标
分发 Prefill → Node 0/1
接收 Decode 响应 ← Node 2/3
客户端 ↔ 后端
Node 0 · Prefill TP=16, DP=2
角色:Prefill 计算节点 · 型号:Atlas 800I A3 · NPU:16× (鲲鹏 920)
并行策略详解:采用 TP=16(张量并行),将模型权重切分到全部 16 颗 NPU,最大化单请求计算速度,因为 Prefill 阶段需要处理大量输入 token,计算密集,高 TP 可显著降低延迟。同时设置 DP=2(数据并行),允许 2 个 Prefill 请求同时在两组 NPU 上运行(每组 16 卡),提升整体 Prefill 吞吐。
功能:Prefill 完成后将生成的 KV Cache 通过 端口 30000 以 Producer 身份推送至 Mooncake KV Pool。
NPU 型号:Ascend 910B
显存:32GB HBM2e × 16
网络:100G RoCE v2
KV 传输:RDMA + TCP (Mooncake)
接收 Prefill 请求 ← Proxy
发送 KV (Producer) → Mooncake:30000
Node 1 · Prefill TP=16, DP=1
角色:Prefill 计算节点 · 型号:Atlas 800I A3 · NPU:16× (鲲鹏 920)
并行策略详解:与 Node 0 硬件相同,但 DP=1,即每次只处理 1 个 Prefill 请求,但整个 16 卡都用于该请求(TP=16),因此单请求计算资源更充沛,适合超长上下文或对延迟极端敏感的场景。
功能:同样作为 KV Producer,将 KV Cache 通过端口 30000 推送到 Mooncake。
NPU 型号:Ascend 910B
显存:32GB × 16
网络:100G RoCE
KV 传输:Mooncake Producer (30000)
接收 Prefill 请求 ← Proxy
发送 KV (Producer) → Mooncake:30000
Node 2 · Decode TP=4, DP=4
角色:Decode 生成节点 · 型号:Atlas 800I A3 · NPU:16× (鲲鹏 920)
并行策略详解:Decode 阶段是自回归生成,每次只产生一个 token,计算量相对小,但需要支持大量并发请求。因此采用 TP=4(4 卡张量并行)将 16 卡划分为 4 组,每组内部用 4 卡进行模型并行,通信开销较小;同时 DP=4 使得 4 组可以同时服务 4 个不同的 Decode 请求,极大提升系统吞吐。
功能:作为 KV Consumer 从 Mooncake 的 端口 30200 拉取对应请求的 KV Cache,执行解码,生成 token 序列以 HTTP 响应返回给 Proxy。
NPU 分组:4 组 × 4 NPU
KV 消费端口:30200 (Consumer)
输出:token 序列
获取 KV (Consumer) ← Mooncake:30200
返回 Decode 响应 → Proxy
Node 3 · Decode TP=4, DP=4
角色:Decode 生成节点 · 型号:Atlas 800I A3 · NPU:16× (鲲鹏 920)
并行策略详解:与 Node 2 配置完全一致(TP=4, DP=4),组成 Decode 节点组,进一步扩展并发能力。Mooncake 根据请求 ID 将 KV 分发到空闲的 Consumer 实例(Node 2 或 Node 3 中的某一组)。
功能:同样作为 KV Consumer,消费 KV 并生成 token,返回响应。
NPU 分组:4 组 × 4 NPU
KV 消费端口:30200 (Consumer)
输出:token 序列
获取 KV (Consumer) ← Mooncake:30200
返回 Decode 响应 → Proxy
Mooncake KV Pool 实时传输中间件
角色:KV Cache 实时传输层 · 协议:RDMA / TCP · 端口:30000 (Producer) / 30200 (Consumer)
功能详解:Mooncake 是专为 LLM 推理设计的 KV Cache 实时传输中间件,核心作用是连接 Prefill 和 Decode 节点,提供高吞吐、微秒级延迟的内存级 KV 交换。Prefill 节点作为 Producer 将生成的 KV 推入 Mooncake 的内存池,Decode 节点作为 Consumer 按需拉取。Mooncake 内部管理 KV 的生命周期(引用计数、自动过期回收),并支持多 Producer / Consumer 的并发读写,是整个 PD 分离架构的 数据中枢。
传输方式:RDMA (优先) / TCP 回退
Producer 端口:30000
Consumer 端口:30200
存储介质:高速内存池 (DRAM / HBM)
KV 索引:按请求 ID 分片,支持多租户
生命周期管理:引用计数 + TTL 自动回收
接收 KV (Producer) ← Node 0/1 (30000)
提供 KV (Consumer) → Node 2/3 (30200)
异步持久化 → AscendStore
AscendStore 持久化存储层
角色:KV Cache 持久化存储 · 协议:Memcache 兼容 · 部署:分布式集群
功能详解:AscendStore 是面向 KV Cache 的 持久化存储系统,基于 Memcache 协议提供分布式、高可用的 KV 存储服务。它与 Mooncake 协同工作:Mooncake 将 KV 实时同步给 AscendStore 进行 异步持久化备份。主要解决两个核心问题:
① 数据可靠性:当 Prefill 节点或 Mooncake 自身重启时,KV 可从 AscendStore 恢复,避免重新计算;
② 跨作业复用:同一份 KV 可被不同 Decode 作业重复使用(如相同的 prompt 前缀),节省算力。AscendStore 支持水平扩展,通过一致性哈希分布数据,并具备多副本容灾能力。
协议:Memcache (二进制/文本)
存储引擎:分布式 LSM Tree / 内存 + SSD 分层
副本策略:多副本 (默认 3 副本)
数据分片:一致性哈希 + 虚拟节点
一致性级别:最终一致性(异步复制)
恢复方式:按请求 ID 拉取 KV 重新加载
接收持久化数据 ← Mooncake (异步)
提供恢复数据 → Mooncake (按需)
跨作业 KV 复用
华为 Atlas 800I A3 · 16×NPU · PD 分离架构
TP: 张量并行 · DP: 数据并行 · Mooncake (实时) + AscendStore (持久化)