TokenSpeed PD分离架构详解:Prefill与Decode解耦如何突破吞吐极限

发布时间:2026/10/8 13:30:51

TokenSpeed PD分离架构详解:Prefill与Decode解耦如何突破吞吐极限 TokenSpeed PD分离架构详解Prefill与Decode解耦如何突破吞吐极限【免费下载链接】tokenspeedTokenSpeed is a speed-of-light LLM inference engine.项目地址: https://gitcode.com/gh_mirrors/to/tokenspeedTokenSpeed 是一款被称为光速的 LLM 推理引擎其 PD 分离Prefill-Decode 解耦架构将大模型推理的Prefill提示词预填充与Decode逐词生成两个阶段拆分到独立的节点组上运行让吞吐与延迟各自独立扩展。本文面向新手完整讲解 TokenSpeed PD 分离的工作原理、P/D 角色划分、KV 缓存传输机制以及如何通过合理配置突破单实例吞吐极限。为什么分离混合执行 Prefill 与 Decode 的隐藏瓶颈理解 PD 分离先要理解 LLM 推理的两个阶段在性格上截然不同阶段计算特征核心诉求Prefill一次性处理整个提示词计算密集compute-bound快降低首 token 延迟TTFTDecode每步只生成 1 个 token访存密集memory-bound稳降低每 token 间隔TPOT当两者混在同一批请求中执行时问题就出现了一条长提示词的 Prefill 任务会霸占GPU 一整轮让所有正在 Decode 的请求集体卡顿反过来频繁的 Decode 小批次又会压低长文本的 Prefill 吞吐。TokenSpeed 的解法是彻底分家Prefill 引擎和 Decode 引擎作为独立角色启动各自针对自己的计算特征做硬件和并行策略优化。调度器设计上甚至明确规定PD 分离部署中的Decode 角色从不计算提示词行提示词 logprobs 由 Prefill 节点直接返回见 docs/design/scheduler.md。TokenSpeed PD分离怎么配P/D 角色划分与 KV 缓存传输TokenSpeed 通过--disaggregation-mode参数指定节点角色核心逻辑集中在python/tokenspeed/runtime/pd/目录P 节点Prefill--disaggregation-mode prefill负责处理提示词、构建 KV 缓存代码入口为 prefill_executor.pyD 节点Decode--disaggregation-mode decode只负责逐 token 生成代码入口为 decode_executor.pyKV 缓存怎么跨节点传P 节点算出的 KV 缓存必须完整送达 D 节点否则 Decode 无法续上上下文。TokenSpeed 基于Mooncake传输引擎实现零拷贝高速搬运控制面采用 ZMQ 状态机按bootstrap_room房间号跟踪每个请求的传输状态失败状态具有粘性避免迟到的成功信号复活已损坏的传输。关键实现传输引擎python/tokenspeed/runtime/pd/base/mooncake_engine.py收发逻辑python/tokenspeed/runtime/pd/mooncake/ 目录下的sender.py/receiver.py拓扑管理python/tokenspeed/runtime/pd/topology.py、python/tokenspeed/runtime/pd/transfer_plan.py一个精巧的细节请求被分配到哪个 P 节点由room % dp_size余数决定——也就是说放置策略内建在房间号里无需额外的负载均衡服务参与。灵活并行配置P 节点拼吞吐D 节点拼延迟PD 分离最大的红利是 P 和 D可以使用完全不同的并行拓扑。以官方 Kimi K3 多节点部署为例docs/guides/kimi-k3-hopper-pd.md引擎注意力并行路由专家执行方式PPP4, TP8, DP1每阶段内 EP8Eager 分块 PrefillDPP1, TP8, DP4跨 4 节点 EP32Decode CUDA Graph可以看到P 节点用流水线并行PP 分块 Prefill--chunked-prefill-size 8192压榨长文本算力D 节点则用数据并行DP 专家并行EP32 低延迟通信模式把每 token 间隔压到最低。这种各取所需在混合部署中是做不到的。更多并行参数说明见 docs/serving/parallelism.md。从 1P1D 到多节点如何选择合适的分离拓扑TokenSpeed 支持从最小的1P1D1 个 Prefill 实例 1 个 Decode 实例平滑扩展到多 P 多 D 的大规模拓扑入门级单机多卡1P1D 适合验证链路例如 Qwen3.5-397B 的 1P1D 部署脚本 test/ci/serve_qwen35_397b_nvfp4_pd_1p1d.sh以及 DeepSeek-V4.1 Flash 的对应测试 test/runtime/distributed/test_deepseek_v41_pd_1p1d.py生产级多节点Kimi K3 采用 P 与 D 各占 4 节点共 64 卡的布局Qwen3.5-397B 的 PD 评测配置 test/ci/eval/qwen3.5-397b-a17b-nvfp4-pd-1p1d-evalscope-aime25.yaml 展示了完整的基准测试写法选择建议提示词普遍很长RAG、代码库问答→ 加大 P 侧数量并开启分块 Prefill并发高、输出长 → 加 D 侧 DP 副本。P/D 比例可以随业务负载独立扩缩容这正是 PD 分离突破吞吐极限的关键所在。性能指标速查TTFT、TPOT 与吞吐怎么测PD 分离的收益需要用数据说话TokenSpeed 官方验证流程见 docs/guides/kimi-k3-hopper-pd.md 的 Validation 章节要求记录以下指标TTFTTime To First Token由 P 侧主导衡量提示词处理 KV 传输的总耗时TPOTTime Per Output Token由 D 侧主导衡量逐词生成速度P 侧吞吐计算输入 tokens/sD 侧吞吐输出 tokens/s每卡显存峰值与传输错误率官方 CI 中的 PD 部署评测如qwen3.5-397b-a17b-nvfp4-pd-1p1d就是按这套口径自动采集的方便你横向对比分离 vs 混合的真实差距。PD 分离常用参数与官方文档索引核心参数速览参数作用--disaggregation-mode prefill / decode指定节点角色--chunked-prefill-size 8192P 侧分块大小长文本吞吐关键--pipeline-parallel-sizeP 侧流水线并行深度--data-parallel-size/--expert-parallel-sizeD 侧扩展副本与专家并行宽度--max-num-seqsD 侧最大并发请求数延伸阅读入门与启动指南docs/guides/launching.md、docs/guides/getting-started.md并行策略全解docs/serving/parallelism.md调度与容量管理docs/design/scheduler.mdPD 传输测试用例test/runtime/distributed/test_pd_transfer_plan.py总结TokenSpeed 的 PD 分离架构通过角色分家 独立扩缩容 高速 KV 传输三板斧让 Prefill 拼算力、Decode 拼带宽互不干扰是长文本、高并发场景下突破 LLM 推理吞吐极限的完整指南式方案。从 1P1D 起步验证再按业务负载扩展 P/D 比例即可稳定获得 TTFT 与 TPOT 的双赢。【免费下载链接】tokenspeedTokenSpeed is a speed-of-light LLM inference engine.项目地址: https://gitcode.com/gh_mirrors/to/tokenspeed创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/10/8 13:30:51

嵌入式FreeRTOS学习笔记(2026.10.07)

一、vTaskDelayUntil 函数: vTaskDelayUntil(&xtStart, 20) 效果:在xtStart时刻起延时任务20个tick,并更新xtStart时间,为 xtStart 20 。即:t₁时刻延时20tick,令t₂为新值。二、空闲任务与空闲钩子1.…

2026/10/8 15:46:41

Python列表与元组:可变性、性能与应用场景详解

前段时间在技术社区闲逛,看到一个提问:“Python里列表和元组到底有啥区别?我该用哪个?”下面回答区的留言五花八门,但也不少把两者混为一谈的。这个问题看似基础,但真要动手写代码时,不少人还是…

2026/10/8 15:46:41

三数之和双指针解法:去重细节与算法复杂度优化

刷题刷到 LeetCode 15 题“三数之和”,这个位置非常微妙。前十几题基本是数组、字符串、动态规划热身,而这一题一出来,很多人的思维会卡住。题目本身不复杂:给定一个整数数组,找出所有和为 0 且不重复的三元组。但“不…

2026/10/8 15:46:41

Java电商源码改造实战:从跑通到上线的表设计、支付与压测

简介:基于Java技术栈构建的完整电商网站源码项目,面向正在学习Spring Boot、MyBatis、Redis等后端框架,或希望掌握Vue.js/jQuery前端交互的开发者,也适合需要参考实际业务流程的初、中级程序员。项目覆盖用户注册登录、商品分类搜…

2026/10/8 15:46:41

软件测试核心知识全解析:流程、实战、工具与面试攻略

这些年我见过太多人把软件测试理解成“找个人点点按钮”,也见过太多项目因为测试缺位在上线后炸出惊天大雷。软件测试这门活,表面上是执行用例、提bug,内核却是质量建模、风险判断、流程管理,甚至项目管理的全面较量。 这篇文章我…

2026/10/8 15:41:39

隔离内网AI Agent工程实战:本地模型推理与RAG知识库构建

1. 项目背景与整体架构思路1.1 为什么要在内网环境里跑AI Agent接手"隔离内网下AI Agent工程实战"这个项目,是因为一个很现实的问题:很多企业和机构的生产环境物理隔离,终端、业务系统和核心数据都在一个与公网物理断开的独立网络里…

2026/10/8 10:03:18

Jev+Agent接管浏览器:browser-use实战与jev-ultrafast性能优化

1. 从“Jev”说起:为什么我要把Agent接进浏览器“Jev”这个词最近在圈子里出现的频率越来越高,很多人第一次听到会以为是某个新模型的名字,其实它更像是一种思路——把Jev模型的能力当作底座,通过Agent的方式去接管浏览器&#xf…

2026/10/8 10:03:20

多智能体集群实战:DeepAgents编排、MCP与A2A协议及Skills体系

1. 从"单兵作战"到"集群协同":多智能体编排到底在解决什么问题如果你最近在折腾 Agent 相关的东西,大概率会有一种感觉:单个 Agent 能做的事情,其实很快就摸到天花板了。你给它一个提示词,挂几个工…

2026/10/8 6:05:44

无源低通滤波器设计实战:从RC到LC,手把手教你避开那些坑

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 0:02:17

自然数立方等于连续奇数之和:从证明到编程验证

十几年来我一直游走在数学科普和编程教学这两块内容之间,对“看起来像魔法、拆开全是数学”的结论总是格外敏感。最近翻资料时又撞见一句话:任何一个自然数 m 的立方,都可以写成 m 个连续奇数之和。2 的立方等于 3 加 5,3 的立方等…

2026/10/8 0:02:17

C#上位机SSH连接实战:用SSH.NET补齐超时、批量与密钥认证

简介:这是一份基于 C# 开发的 SSH 连接功能半成品工程,原本作为另一个主项目的子功能模块,现独立打包分享。工程采用 WinForms 界面,包含源码、解决方案、安装部署工程、NuGet 依赖包及说明文档,适合正在做远程连接、网…

2026/10/8 0:02:17

Java SpringBoot一体化智能售后系统设计与实现全解析

毕业设计年年做,Java Web 方向的题目翻来覆去就那么几个,但“一体化智能售后系统”这个题,每次看到我都觉得值得认真聊一聊。它不是一个简单 curd 堆出来的管理系统,而是把客户、工单、派单、处理、回访、统计整条链路串起来的一套…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑