惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

H
Hackread – Cybersecurity News, Data Breaches, AI and More
W
WeLiveSecurity
C
Check Point Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
V
Vulnerabilities – Threatpost
GbyAI
GbyAI
A
Arctic Wolf
NISL@THU
NISL@THU
N
Netflix TechBlog - Medium
The Register - Security
The Register - Security
M
MIT News - Artificial intelligence
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Microsoft Security Blog
Microsoft Security Blog
Cyberwarzone
Cyberwarzone
C
CERT Recently Published Vulnerability Notes
T
Tenable Blog
G
GRAHAM CLULEY
O
OpenAI News
S
Schneier on Security
Google Online Security Blog
Google Online Security Blog
Vercel News
Vercel News
宝玉的分享
宝玉的分享
Attack and Defense Labs
Attack and Defense Labs
T
The Blog of Author Tim Ferriss
量子位
aimingoo的专栏
aimingoo的专栏
The Cloudflare Blog
P
Privacy & Cybersecurity Law Blog
S
SegmentFault 最新的问题
MongoDB | Blog
MongoDB | Blog
Apple Machine Learning Research
Apple Machine Learning Research
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
L
LINUX DO - 热门话题
博客园_首页
F
Full Disclosure
Recent Commits to openclaw:main
Recent Commits to openclaw:main
D
Docker
U
Unit 42
A
About on SuperTechFans
博客园 - 司徒正美
Hacker News - Newest:
Hacker News - Newest: "LLM"
人人都是产品经理
人人都是产品经理
Application and Cybersecurity Blog
Application and Cybersecurity Blog
G
Google Developers Blog
Security Archives - TechRepublic
Security Archives - TechRepublic
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
J
Java Code Geeks
云风的 BLOG
云风的 BLOG
Scott Helme
Scott Helme
TaoSecurity Blog
TaoSecurity Blog

博客园 - marsggbo

LLM agent 为什么不稳?问题可能不在模型,在 harness Meta-Harness:让 LLM 自己搜索最优 harness,模型不动,性能白涨 从零理解 ASR:音频基础、Qwen3-ASR 架构,以及离线 vs 流式推理原理 arXiv'26 | LLM Agents 让群体信念变得可编程:当 AI 开始系统性操控舆论 巴西「主权大模型」翻车:当模型可以随便融合,怎么证明它偷了你的权重? 进阶篇 | 不靠人工设计,让遗传算法自己进化出 SOTA 的 LLM 剪枝指标 说人话:一文搞懂现在火热的 LLM agent 自进化原理 ICML'26 | Transformer 真的需要三个投影矩阵吗?Q-K=V 让 KV Cache 直接砍半 UPenn & Meta | NF-CoT:当 LLM 的思维链不再是文字,而是连续概率流 arXiv'26 | 为什么你的多智能体系统越加 agent 越慢?DeLM 用去中心化解了这个矛盾 arXiv'26 | Self-Harness:让 Agent 自己改自己的 harness,pass rate 最高翻倍 Anthropic | 当 AI 开始造自己:递归自我改进离我们有多远? arXiv'26 | Mirage:把世界模型的 3D 记忆搬进 Latent Space,快 10 倍还省 55 倍显存 arXiv'26 | FlashMemory-DeepSeek-V4:用 13.5% 的显存干 100% 的活,超长上下文推理的 less is more MoE 压缩新思路:别删专家、别合并专家,把它们"重映射"就够了 MoE 变 Dense:剪枝+蒸馏能救内存瓶颈吗? ReMoE:只动 Router 就让 MoE 推理快 2 倍?这才是端侧 MoE 部署该有的姿势 LLM 时代,还有人搞 AutoML 吗?有,而且变得更难了 arXiv'26 | Frontier:LLM 推理仿真器,端到端误差从 51.7% 降到 2.6% arXiv'26 | ELF:Flow Matching 生成文字,用 10 倍少的数据全面超越主流 Diffusion LM LLMRouterBench:当所有 routing 方法被拉到同一起跑线,结果有些尴尬 LLM Agent Memory 全景拆解:从 RAG 到 KV Cache 到参数写入,100+ 篇工作的方法演进与真实取舍 AAAI'23 | NAS-LID:用「局部内在维度」给超网做体检,省 86% 显存 ICLR'26 Workshop Spotlight | Lang-PINN:让 LLM 多智能体帮你从自然语言一键搭建物理信息神经网络 KDD'25 | BurstGPT:我们收集了 1031 万条 Azure OpenAI 真实 trace,LLM 推理系统没你想的那么稳 KBS'21 | 我写的 AutoML 综述被引 2700+ 次,今天来聊聊这篇文章的来龙去脉 EuroSys'26 | PARD 提前丢掉注定超时的请求,goodput 最高提升 176% EuroSys'26 | MFS 把整个 model family 融进一套嵌套模型,KVCache 跨 tier 直接共享 EuroSys'26 | LLMFolder 用常量折叠把 FFN 参数砍 80%,精度反超剪枝方法 65% EuroSys'26 | KUNSERVE 把冗余参数副本临时让给 KVCache,P99 TTFT 最快降 72× EuroSys'26 | IBP 用无损 bit 压缩缓解 PCIe 瓶颈,GNN/DLRM/LLM 推理都能用 FAST'26 | SolidAttention 把 SSD 搬进 LLM 推理,笔记本也能跑 128k 上下文 LLM 推理启动慢?华为用一个「可编程 Page Cache」把模型加载砍了 79% 延迟降47%!FineMoE如何用「细粒度」打破MoE推理的显存-延迟死局 训练一个「会管技能库」的 AI——SkillOS 让 agent 真正越用越强 MoE 训练通信瓶颈有救了?DySHARP 直接在交换机里做计算,干掉 50% 冗余流量 2026-05-12-2508_06526 把 Dense LLM 变成 MoE 还能推理提速?NeurIPS 2024 Read-ME 做到了 说人话理解 EPIC:KV Cache 复用的「编译-链接」范式(附可运行代码复现) KV Cache 也能「语义共享」?SemShareKV 用 LSH 做到了 写完 Markdown 还要手动排版?我写了个 VS Code 插件一键搞定微信公众号、知乎、小红书 多 Agent 协作不需要说「人话」?LatentMAS 让 LLM 在隐空间里直接协作 让不同 LLM 之间共享 KV Cache?DroidSpeak 是怎么做到的 RouteMark: 基于路由行为指纹的模型合并知识产权归属 | A Fingerprint for IP Attribution in Routing-based Model Merging Lang-PINN: 从自然语言到物理信息神经网络的多智能体框架 | From Language to PINNs via a Multi-Agent Framework Ghost in the Cloud: 地理分布式大模型训练的安全隐患 | Your Geo-distributed LLM Training is Easily Manipulated GM-Skip: 基于度量引导的 Transformer 块跳过策略加速视觉语言模型 | Metric-Guided Transformer Block Skipping for Efficient VLMs ExpertFlow: 基于预测性专家缓存与令牌调度的高效MoE推理 | Efficient MoE Inference via Predictive Expert Caching and Token Scheduling AutoHete: 面向大语言模型的自动化高效异构训练系统 | An Automatic and Efficient Heterogeneous Training System for LLMs DAC'26 | ExpertFlow:让 MoE 大模型在单卡上跑起来,内存省 93%、速度快 10 倍 Eurosys26 | FineMoE如何用「细粒度」打破MoE推理的显存-延迟死局 LoRA fine-tune吞吐量提升1.96倍!LoRAFusion如何把内存带宽浪费和pipeline bubble一起干掉 Fast26 | LLM 推理启动慢?华为用一个「可编程 Page Cache」把模型加载砍了 79% KV Cache 的两层存储到底卡在哪?FAST'26 这篇论文给出了答案 NeurIPS24 | 把Dense LLM变身MoE还提速 ICML25 | EPIC:KV Cache 复用的「编译-链接」范式(附可运行代码复现) KV Cache 复用的第三条路:FAST 2026 CacheSlide 是怎么解决 Agent 推理的位置漂移问题的 MoE 推理的内存墙,被一块多芯粒芯片打穿了? KVCOMM:让多 Agent 系统的 KV Cache 真正“通起来”,TTFT 直接砍掉 7.8 倍 NSDI26 | DroidSpeak让不同 LLM 之间共享 KV Cache TokenDance 解决多 Agent LLM 推理的 KV Cache 冗余问题 当 AI 开始学会"记住":LLM Agent 记忆系统的统一视角 【转载】ACM MM 投稿论文模板修改成投稿模式 尝试从源头理解 SVD 原理和计算 LLM 场景下的强化学习技术扫盲 解决 Overleaf 中插入 PDF 图片失败的问题:排查与修复 Tmux ctrl+B快捷键失效处理办法 对抗训练综述学习笔记 【转知乎回答】一文看懂 LLaMA 中的旋转式位置编码(Rotary Position Embedding) 二进制中为什么负数是正数取反再加一 leetcode 常见题型代码总结 Prompt-Tuning、P-Tuning和Prefix-Tuning区别和代码实现【转】 Deepspeed ZeRO系列算法原理+通信开销详解 NSCC集群使用笔记 Huggingface Transformers实现张量并行的小坑 set/get_output_embeddings Pytorch 如何使用 storage 实现参数 offload? TACC 集群使用笔记 图解 vLLM 的推理调度策略 大模型推理框架 vLLM 源码解析(二):Block 模块分配和管理 OpenAI 的视频生成大模型Sora的核心技术详解(一):Diffusion模型原理和代码详解 大模型推理框架 vLLM 源码解析(一)
EuroSys'26 | TokenFlow:让 LLM 流式输出真正「流」起来
marsggbo · 2026-07-23 · via 博客园 - marsggbo

插播:之前写的《动手学 AutoML》终于出版了,从 NAS 到超参优化都有覆盖,适合想系统入门 AutoML 的同学。好了广告结束,现在进入正题。

动手学AutoML书籍封面

EuroSys'26 | TokenFlow:让 LLM 流式输出真正「流」起来

原文:TokenFlow: Responsive LLM Text Streaming Serving under Request Burst via Preemptive Scheduling


用过 ChatGPT 或者任何一个 AI 对话产品的人都有同样的体验:你发出一条消息,页面上的文字一个一个「流」出来,就像打字机一样。这种「流式输出」(text streaming)是现代 LLM 交互的标配,给人一种 AI 正在「思考」的感觉,体验比等待一整段文字突然出现好得多。

但如果你仔细观察,有时候这个「流」并不稳定——刚开始等了很久才出现第一个字(TTFT 高),或者文字时快时慢、突然卡顿(TBT 不稳)。这篇来自 EuroSys 2026 的论文 TokenFlow 就是要彻底解决这个问题。

1. 流式输出的两难困境

LLM 流式服务的核心矛盾,可以用两个指标来描述:

  • TTFT(Time-to-First-Token):用户发出请求到看到第一个 token 的延迟。越低越好,这决定了用户感知到的「响应速度」。
  • TBT(Time-Between-Tokens):相邻两个 token 之间的间隔。需要足够稳定,避免出现「卡一下、蹦一下」的感觉。

问题在于,这两个目标天生矛盾

当大量请求同时涌入(request burst),系统资源有限,服务器必须做取舍。SGLang 等主流框架采用 FCFS(先来先服务)策略:正在处理的请求继续跑,新来的请求乖乖排队。结果是——

  • 正在跑的请求:生成速度远超用户阅读速度(几十 tokens/秒 vs 用户 5 tokens/秒),白白浪费算力
  • 排队等待的请求:TTFT 飙升到 10 秒以上,用户以为系统挂了

如下图所示,SGLang 在 burst 负载下,P99 TTFT 轻松突破 30 秒,而生成速度却远超用户阅读需求——两头都没做好。

SGLang burst 问题

2. 被忽视的优化机会:Token Buffer

这里有一个关键观察,也是 TokenFlow 的核心洞察:

LLM 的生成速度远远快于用户的阅读速度。

实测数据(Figure 1)显示,用户平均阅读速度约 3-5 tokens/秒,而模型生成速度可以达到 30-100 tokens/秒,相差一个数量级。

token 消费速度分布

这意味着,服务端可以提前生成一批 token 存在 output buffer 里,用户慢慢消费,系统不用死等用户。只要 buffer 不空,用户体验就是流畅的。

这个 buffer 的存在,给了系统一个「喘息空间」——可以暂停一个正在跑的请求,先处理一个新来的请求的 prefill(生成第一个 token),只要 buffer 里还有剩余 token,暂停的那个用户不会察觉任何异常。

这就是 preemptive scheduling(抢占式调度)的机会所在。

3. TokenFlow 系统设计

TokenFlow 的整体架构如下图所示,核心由两部分组成:Buffer-Aware 调度器 + Proactive KV Cache 管理器

TokenFlow 系统架构

3.1 Buffer-Aware 抢占式调度

传统抢占式调度(如 Andes)的思路是:新请求来了就强制暂停旧请求。问题是这会导致频繁的 context switch,干扰正在运行的请求。

TokenFlow 更聪明——它引入了 Virtual Buffer Counter,实时追踪每个请求的:

  • 当前 buffer 中还剩多少 token(buffer occupancy)
  • 用户的 token 消费速率(通过请求头或估计得到)

基于这两个信息,调度器动态决定:什么时候该暂停哪个请求

具体来说,调度策略分两步(如 Figure 7 所示):

  1. Soft Preemption:当某请求的 buffer 充足(用户短期内不会体验到卡顿),就把它暂时移出运行批次,腾出 GPU 资源给队列里等待的请求做 prefill
  2. Hard Preemption:当 GPU 内存即将耗尽,才触发强制抢占 + KV cache 卸载到 CPU

Buffer-Aware 调度示意图

这样的设计,让系统在"稳住老用户"和"快速响应新用户"之间找到最优平衡点。

3.2 Proactive KV Cache 管理

这是 TokenFlow 另一个关键创新。

传统系统(包括 Andes)的 KV cache 管理是被动的(reactive):只有当 GPU 内存快满时,才开始把 KV cache 卸载(evict)到 CPU;需要恢复请求时,再从 CPU 加载(load)回 GPU。这个过程 I/O 开销极大,会导致系统从 compute-bound 变成 I/O-bound。

TokenFlow 的做法是主动的(proactive)

Write-Through 策略:每次生成新 token,就立刻把对应的 KV cache 同步写到 CPU 内存(类似 CPU cache 的 write-through 策略)。这样,当真正需要抢占请求时,KV cache 已经在 CPU 里了,evict 操作几乎是零开销。

Write-Through vs Write-Back 对比

Chunked + Overlap 策略:KV cache 的 load/evict 操作被拆成小块(chunks),与 GPU 计算并行执行,利用 PCIe 带宽不影响 CUDA 核心的特点,做到 I/O 和计算的充分重叠。

Load-Evict Overlap 技术

具体实现上,TokenFlow 基于 SGLang 构建,用 CUDA streams + Python 多线程实现了完全重叠的计算与内存操作,代码约 4000 行 Python。

4. 新的评估指标:Effective Throughput + QoS

这篇论文还提出了一个重要观点:传统的 tokens/second 吞吐量指标不足以评估流式服务。

原因是:如果服务器狂生 token 但用户 buffer 已经满了,那些多余的 token 对用户没有任何价值,反而浪费了 GPU 算力。

TokenFlow 定义了 Effective Throughput:只统计用户实际消费到的 token,而不是系统生成的所有 token。这个指标综合了 TTFT、TBT 稳定性和 buffer 利用率,更贴近真实的用户体验。

同时,论文定义了 QoS(Quality of Service) 指标,综合考虑:

  • 首 token 等待惩罚(TTFT 相关)
  • Playback stall 惩罚(TBT 过长时的卡顿)
  • Token utility(实际被消费的比例)

QoS 指标体系

5. 实验效果

实验在多种硬件(RTX 4090、A6000、H200)和模型(Llama3-8B、Qwen2.5-8B/32B)上进行,基线包括 SGLang 和 Andes。

使用真实 workload(BurstGPT trace + 内部运营商 trace)的结果:

  • Effective Throughput:平均提升 45.1%(A6000),37.1%(H200),最高达 82.5%
  • Mean TTFT:平均降低 52.6%,P50 最高降低 88.7%

H200 端到端性能对比

Burst 场景下(合成 workload):

TokenFlow 在 burst 到来时明显减少了排队请求数量,同时保持更高的并发运行请求数——说明系统在压力下能更高效地利用 GPU。

Burst 场景排队请求变化

消融实验(Table 2)验证了两个核心模块的贡献:单独使用 buffer-aware 调度器或 proactive KV cache 管理都有提升,但两者协同才能达到最优效果——co-design 的价值不言而喻。

消融实验

6. 一点感想

TokenFlow 这篇论文最打动我的地方,是它对"token buffer"这个平时被忽视的结构的洞察。大家都知道 LLM 生成比用户读快,但把这个速度差转化成调度的优化空间,需要一个跨越层次的系统思维。

Buffer-aware 调度 + Proactive KV cache 管理,这两个设计形成了一个自洽的闭环:调度器知道什么时候可以安全抢占(因为 buffer 里还有余量),KV cache 管理器提前把数据备好让抢占近乎无代价,两者协作,最终让"流式输出"真正流起来。

这个思路对做 LLM serving 的朋友很有参考价值——不只是优化单个请求的延迟,而是从整个 request burst 的角度来看资源分配和调度策略。下一步自然的延伸问题是:如果用户的阅读速率是动态变化的(比如暂停了 App),或者有不同 SLA 的混合请求,buffer-aware 策略该如何自适应调整?这应该是后续工作有意思的方向。