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

推荐订阅源

Blog — PlanetScale
Blog — PlanetScale
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Vercel News
Vercel News
B
Blog
腾讯CDC
P
Proofpoint News Feed
Google DeepMind News
Google DeepMind News
N
Netflix TechBlog - Medium
L
LangChain Blog
F
Fortinet All Blogs
T
The Blog of Author Tim Ferriss
人人都是产品经理
人人都是产品经理
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
I
InfoQ
IT之家
IT之家
酷 壳 – CoolShell
酷 壳 – CoolShell
aimingoo的专栏
aimingoo的专栏
D
DataBreaches.Net
Stack Overflow Blog
Stack Overflow Blog
The Cloudflare Blog
Last Week in AI
Last Week in AI
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
博客园 - 三生石上(FineUI控件)
T
Tailwind CSS Blog

Java for You

语义相近却总找错资料?从Embedding看懂向量检索 - Java for You - java4u AI算力开始听电网指挥:比换GPU更现实的增产方法 - Java for You - java4u 票据抽取不一定要上最大模型:先看版式是否真的变化 - Java for You - java4u 临床AI别再只比像不像标准答案,先算医生少改了多少 - Java for You - java4u AI做长程科研,真正稀缺的不是更多Agent而是反证链 - Java for You - java4u AI代码审计最危险的不是漏报,而是团队开始不再相信它 - Java for You - java4u 100万Token不等于模型全记住:从KV Cache看懂长上下文成本 - Java for You - java4u AI写歌有了工程图:YuE2把旋律和和弦放回可编辑层 - Java for You - java4u Claude接入十余种金融系统后,真正稀缺的是可追溯的审批链 - Java for You - java4u 本地语音AI不等于零风险:VoiceStudio最值得看的三条边界 - Java for You - java4u AI代码评审开始跑测试,真正该升级的是团队证据链 - Java for You - java4u 4万星的Agent技能提醒我们:答案太全也可能不可用 - Java for You - java4u 流式JSON为什么总报错?理解结构化输出就能接稳AI接口 - Java for You - java4u 一个浏览器看见飞机船舶与卫星,空间智能的门槛变了 - Java for You - java4u 编码Agent搬出编辑器后,本地优先工作台在解决什么 - Java for You - java4u AI写代码开始像带团队:Qwen Code补上工作流控制台 - Java for You - java4u AI会聊天却不会改3D模型?从Pascal 1.0看懂MCP工具调用 - Java for You - java4u 让AI审科学公式,它最适合当比较员而非裁判 - Java for You - java4u 智能体上线最难的不是提示词:Agents API开始托管运行时 - Java for You - java4u AI任务一多就堵车:问题可能不在模型速度 - Java for You - java4u AI能写无人机控制代码后,安全边界不能只守提示词 - Java for You - java4u AI代码扫描能批量开了,但它还不能替你挡住合并 - Java for You - java4u 机器人动作误差降近九成,真正该先看数据切分 - Java for You - java4u 蛋白预测快2.9倍,科学AI最难的是让整条流水线不空转 - Java for You - java4u NVIDIA把供应链专家经验训练进模型,关键不是换一个更大模型 - Java for You - java4u 人人都能问公司数据之后,数据分析师反而更重要了 - Java for You - java4u 语音AI开始边听边说,改变的不只是响应速度 - Java for You - java4u Agent到底比一次大模型调用多了什么?小白从这张流程图看懂 - Java for You - java4u ChatGPT服务10亿周用户后,最难扩展的可能不是模型 - Java for You - java4u AI编码助手的日志也会泄密:先划清明文边界 - Java for You - java4u
图片一多首字就慢?用EPD拆开多模态推理三段路 - Java for Yo...
蜗牛 · 2026-09-13 · via Java for You

深色笔记本

一张图片并不是“直接塞进大模型”。它先被解码成像素,再由视觉编码器变成向量,语言模型才读取上下文并逐词回答。把编码、预填充、解码分开排队,就叫EPD拆分。你读完会知道:多模态为什么首字慢,以及什么时候拆分反而不划算。

最新事件:图片请求为什么会拖慢纯文字

NVIDIA在2026年9月9日公开Dynamo的多模态服务测试,重点讨论Encode-Prefill-Decode(编码—预填充—解码,简称EPD)拆分。官方在特定Qwen3.5 122B A10B、NVIDIA 4位浮点格式(NVFP4)、四张GB200及额外编码图形处理器(GPU)的测试中,报告图片密集负载最高可获得5倍更快的首个词元(Token)时间和7倍端到端加速;但也明确指出,长输出或轻媒体请求可能收益很小甚至倒退。

这次更新适合用来讲一个长期有用的概念:多模态模型的一次回答,实际上是三种计算特征很不同的工作。

这个概念解决什么问题

如果视觉编码、上下文预填充和逐词解码都挤在同一组GPU、同一个队列里,十张图片的请求会先占住资源。后面的纯文字请求明明不需要看图,也可能等它完成视觉处理,这叫队头阻塞。EPD拆分让视觉任务走自己的队列,再把得到的视觉向量交给语言模型,三段可以独立扩容和调度。

生活类比:餐厅的三道工位

把请求想成餐厅订单:洗切食材是Encode,厨师一次读完订单并备好锅是Prefill,之后一道道出菜是Decode。如果洗切和炒菜共用一张案台,大份食材会挡住只点饮料的客人;设独立备菜区能减少排队。

类比的边界是:GPU阶段不是完全独立的人。Encode产生的视觉向量必须传给Prefill,拆开会新增网络传输、调度和缓存成本;而Decode还会反复读取键值缓存,资源行为比“逐道出菜”复杂得多。

去掉类比后的准确定义

Encode指媒体预处理后,视觉Transformer(Vision Transformer,ViT)把图像或视频转换为视觉嵌入;Prefill指语言模型并行处理全部输入Token和视觉嵌入,建立键值缓存并准备第一个输出;Decode指模型利用缓存,按步生成后续Token。EPD disaggregation就是把这三类角色从一个聚合工作进程中拆为可独立调度、批处理和扩缩容的服务阶段。

mermaid diagram

最小实践:先用估算器判断值不值得拆

这个练习不连接模型,只用三段耗时和拆分开销建立第一版判断。无需安装依赖,保存为epd_estimator.py后运行python3 epd_estimator.py

from dataclasses import dataclass

@dataclass
class Workload:
    encode_ms: float
    prefill_ms: float
    decode_ms: float
    transfer_ms: float
    queue_saved_ms: float

def compare(w: Workload) -> None:
    aggregated = w.encode_ms + w.prefill_ms + w.decode_ms
    epd = (w.encode_ms + w.transfer_ms + w.prefill_ms
           + w.decode_ms - w.queue_saved_ms)
    gain = (aggregated - epd) / aggregated * 100
    print(f"聚合架构: {aggregated:.1f} ms")
    print(f"EPD估算: {epd:.1f} ms")
    print(f"端到端变化: {gain:+.1f}%")
    print("建议:", "进入实测" if gain > 10 else "先保持聚合")

image_heavy = Workload(
    encode_ms=420, prefill_ms=90, decode_ms=260,
    transfer_ms=35, queue_saved_ms=180,
)
compare(image_heavy)

encode_msprefill_msdecode_ms是当前聚合服务的分段观测;transfer_ms是拆开后的视觉向量传输和协调成本;queue_saved_ms估计独立排队节省的等待。函数同时算两条路径,并用10%作为“值得进入真实压测”的粗筛线,不是上线结论。

本次任务已在Python 3环境实际运行,示例输出为聚合架构770.0毫秒、EPD估算625.0毫秒、端到端变化+18.8%,建议进入实测。它验证的是计算逻辑,不是任何GPU或模型性能。

至少三个常见误区

  1. 拆分一定更快。 图片少、输出很长时,Decode占主导,传输开销可能吃掉收益。官方测试中固定五张图、输出从128增长到2048 Token后,共置EPD从11.8%收益变为2.5%倒退。
  2. 首字快等于总回答快。 EPD主要改善视觉编码与排队,长回答的逐词生成并不会自动加速。
  3. 多加编码GPU就行。 若43%的首字时间发生在ViT启动前,媒体下载和解码才是瓶颈,应该先做并行媒体解码。
  4. 纯文字流量与此无关。 混合队列中,文字会被图片挡住;官方50:50流量测试里,文字平均首字时间从92.3降到53.3毫秒,但这是特定环境的厂商结果。

适用与不适用场景

适合:多图或视频输入、回答较短、文字与图片混合且首字敏感、小型或量化语言模型、已有异构GPU资源。此时视觉编码占比较高,独立批处理容易回本。

不适合:单张小图、超长输出、低并发、网络传输慢、运维团队还没有分段观测。简单聚合架构更容易调试,也可能拥有更低的单请求额外开销。

我的判断

EPD不是“多模态服务标配”,而是一种排队与资源隔离工具。我的判断依据是NVIDIA原始测试同时给出正反结果:十张图、1024输出Token时首字明显改善,但输出越长,端到端优势越窄。决定是否拆分的第一张图表,应是自家流量里Encode、Prefill、Decode和排队时间的占比,而不是厂商最高倍数。

5分钟实践题

把代码中的decode_ms从260改为1200,其他数字不变,再运行一次。然后把transfer_ms从35改为220。记录两次收益,并用一句话回答:你的系统更怕长输出,还是更怕跨节点传输?如果仍想拆分,下一步应采集第50与第95百分位(P50、P95)首字时间和每Token间延迟,而不是继续调估算值。

你的多模态应用更像短答案识图,还是长答案视频分析?这会怎样改变你对EPD拆分的判断?

关注「蜗牛聊AI」,一起看懂技术变化背后的真正机会。