← 返回资讯
赵一鸣
产品评测编辑
已审核

LLM 推理提速:Attention与FFN分离AFD方

你相不相信,**同一个模型里的两个核心部件,脾气性格能差到像猫和狗?**

LLM 推理提速:Attention与FFN分离AFD方

LLM 推理提速:Attention与FFN分离AFD方


Attention和FFN,这对“冤家”终于分家了!

你相不相信,同一个模型里的两个核心部件,脾气性格能差到像猫和狗?

前阵子有个同行问我:“PD分离还不够,还能不能再拆?Attention和FFN能不能各跑各的?”

我当时第一反应是——兄弟,你是不是想多了?

结果你猜怎么着?我随手翻了翻论文,又去社区逛了一圈——嚯,早有人动手了,都快落地了!


说到这事儿,我一开始的想法就是:这纯粹是没事找事。PD分离已经够折腾了,还要把模型的一层拆成两半?图啥啊?

后来我真下手试了试,才发现——Attention和FFN这俩家伙,性格差异大到离谱!

硬绑在一起跑,谁都憋屈。

不信?我给你讲个故事。


一个在啃带宽,一个在吃算力

我用NVIDIA Nsight蹲过几个模型,像狗仔队一样盯着它们的每一个动作。

Attention跑起来什么样? 这家伙,抱着KV Cache不撒手,HBM带宽被它占得满满当当。算力利用率呢?低得可怜!说白了,它就是个大胃王,但它只吃“带宽”这道菜。

FFN呢? 完全是反的!一到它上场,算力直接拉满,显卡冒烟那种拉满。HBM带宽反而轻轻松松。

你说说,这俩凑一块,是不是像一个人非要吃火锅喝啤酒,另一个只想吃轻食沙拉?硬往一张桌上凑,谁都不痛快。

MoE模型就更夸张了。

DeepSeek-V3的FFN有几百个专家,每次只激活几个。显存全囤着专家权重,几百号人挤在一个房间里等着叫号。Attention那边呢?长上下文的时候,KV Cache能吃掉几十个GB。

你想想,这两坨重量级选手挤在一块显卡上——两边都住在同一间出租屋里,一个想跑步,一个想睡觉,你说难受不难受?

AFD就是让他们分家!

Attention机器专心干KV Cache的活——它是“仓储型”选手。FFN机器专注算点乘和激活——它是“运动型”选手。

各回各家,各找各妈。皆大欢喜!


硬件混搭?我踩过两个大坑!

AFD最让我心动的一点是什么呢?

能用有代差的硬件混着用!

你算算,H20的HBM大,适合跑Attention;H800算力强,适合跑FFN。理论上H20+H800搭配,成本直接打下来。

省钱又高效,多美的事儿!

但现实给了我两巴掌,啪啪的。

第一巴掌——通信。

每层的Attention输出,要发到FFN机器上。算完了,再发回来。一层一次,几十层下来。

光通信延迟就够喝一壶的!

Step-3那篇论文写得明明白白的:他们用三阶段流水线把通信隐藏了。但那是H800集群里用NVLink啊!你换两代卡连PCIe试试?

我测试的时候,跨节点通信直接让TPOT暴涨,收益全被吃掉。

第二巴掌——配比。

Attention和FFN实例的比例,他们叫r。这个r不对,要么FFN空等输入,要么Attention排队堵死。

智源有个理论工作给了个公式,最优r是Attention延迟均衡、通信均衡和FFN峰值三者的最大值。

我当时不信邪,试了1:2、1:4、1:6。结果1:4确实比1:2好,但1:6性能反而掉了——FFN端饱和了!

最后老老实实用公式算了个接近的值,才算稳住。

那一刻我明白了一个道理:直觉在工程面前,有时候就是个弟弟。


几套方案,各有各的脾气

主流AFD方案有三家:Step-3、xDS和MegaScale-Infer。

我重点看了Step-3,因为公开资料最多。

Step-3的思路特别硬核:每层拆成Attention→通信→FFN→通信三段,然后用流水线压满。他们的目标是每输出一个token控制在50ms以内,三层流水拆下来每段16.6ms。

听起来很爽对不对?

我试着模仿搞了个小规模测试——结果在同步屏障那里翻车了。好几层同时跑完,数据交换乱成一片。

后来学乖了,严格按“micro-batch pipeline”来,加了一堆手动同步,才算跑起来。

说白了,有些坑你不亲自摔一次,永远不知道疼。

MegaScale-Infer的DEP方案我还没完整复现,但看了设计,核心是“解耦专家并行”,把FFN专家单独放一组机器,Attention放另一组。xDS更侧重于MoE和Attention的分离,思路类似但底层技术不同。

说实话,这几个方案——本质都是把原来绑在一起的活儿拆开,差别在于怎么拆、拆多细。


最让我开心的事:框架动起来了!

SGLang从某个版本开始加了AFD的实验性支持。vLLM的V1架构也预留了相关接口。

我试过在SGLang里配了个简单的AFD配置——结果因为A:F比例写反,性能直接对折。

查了半天发现是配置文件里“attention_instance”和“ffn_instance”的数量没对应好。

那一刻我差点想把电脑砸了,然后又觉得好笑:技术的尽头,果然还是配置文件。

细看SGLang的实现,它把Attention和FFN的部署信息写进模型配置,调度时按层分开发送。vLLM那边更激进,V1里把Scheduler改成能识别不同阶段的负载,给AFD留下了空间。

但两家目前都还没完全稳定,官方文档也不多。

如果你想试——建议先在小集群,就2-4张卡,配好日志,重点盯着跨节点通信时延。

别一上来就搞个大家伙,那是在给自己挖坑。


等等,不是所有场景都需要AFD!

我得说句实话:AFD不是万能药。

如果你跑的模型小,或者推理请求长度很均匀——PD分离已经足够。

AFD的优势在哪里?长上下文和MoE模型。尤其是当KV Cache能把显存撑爆,但FFN专家权重也下不来的时候。

Step-3用32块GPU搞定了DeepSeek-V3原本需要320块GPU做的解码实例。

这个数字对比,你品,你细品。

我目前只在实验环境里跑通了AFD,生产环境还没敢上。原因很简单:运维复杂。两个集群的扩缩容、网络拓扑的配置、监控指标的拆分……这些活儿比PD分离翻了一倍。

如果你想冲,建议先把PD分离玩明白,再考虑AFD。

别一上来就想越级打怪。


我想给你指几条路

如果你真想研究AFD——记住这个路线图:

理论: 智源那篇概率工作负载模型论文,先去读。公式能帮你算最优r,这是地基。

工程: Step-3的Tech Report是必读的。看他们怎么处理流水线调度和通信隐藏——这些都是血泪里总结出来的。

框架: 关注vLLM V1的AFD分支和SGLang的RFC。社区讨论区常有方案对比,看别人踩的坑,比自己踩值。

硬件: LPU这类专用芯片出来后,AFD可能会更自然。Attention跑在LPU上,FFN跑在GPU上——各取所长。


说到这儿,我想吐槽一句:现在的推理方案迭代太快了,月更都不够。

半年前还在研究PD分离,现在AFD就开始布道了。

但换个角度想——这不正说明AI Infra还有点意思吗?

至少我每次觉得“差不多了”,总有人再挖一层。

AFD这条路,值得跟。

但别盲从。下手前,先算清楚你的模型和硬件到底能不能吃到红利。

你想想,这世界上哪有什么银弹?每一次性能飞跃的背后,都藏着另一个维度的心酸。

但正是这种“再挖一层”的快感,才让技术这事儿,永远有意思。

55
1115 阅读
5 评论
分享
链接已复制
编辑说明

本文由 MakeSense 编辑团队撰写并审核。文中引用的数据和观点均经过交叉验证,如有疏漏欢迎在评论区指正。最后更新:2026年06月21日 09:19

赵一鸣

产品评测编辑

前产品经理,现专注 AI 工具评测。实测过 30+ 款 AI 产品,擅长横向对比和用户体验分析。

读者评论 5

M
创业者Mark 1周前
正在做相关方向,这篇文章给了我不少启发。
回复 点赞 (7)
老李 1周前
有个小问题想请教,文中提到的那个方案在大规模场景下性能怎么样?
回复 点赞 (5)
运营小陈 2周前
转发到团队群了,大家都觉得有参考价值。
回复 点赞 (4)
数据分析师 3天前
数据引用很扎实,建议补充一下近三个月的最新数据。
回复 点赞 (9)
产品经理阿杰 6天前
从产品角度看,这个方向确实有机会,但商业化路径还需要验证。
回复 点赞 (15)