详细讲解 FlashDecoding 与 FlashDecoding+ 的原理
1. 铺垫背景Decode 阶段标准 FlashAttention 的致命瓶颈在 Prefill 阶段Query 的序列长度NQN_{Q}NQ​很大如 4096可以很好地利用 GPU 的 Tensor Core 并行计算但在 Decode 阶段Query 形状为 [B,1,H,D](Batch Size B序列长度 1Head 数 H维度 D)\text{Query 形状为 } [B, 1, H, D] \quad (\text{Batch Size } B \text{序列长度 } 1 \text{Head 数 } H \text{维度 } D)Query形状为[B,1,H,D](Batch SizeB序列长度1Head数H维度D)此时QQQ只有1 个 Token但它需要与历史 KV Cache长度NKVN_{KV}NKV​可能为 128k计算 Attention。标准 FlashAttention 在 Decode 阶段的并发危机GPU 算力饿死并行维度受限Parallelism Bound标准 FlashAttention 的并行粒度是按Batch Size (BBB)×\times×Heads (HHH)来划分 Thread Blocks 的。假设场景推理时B1,H32B1, H32B1,H32整个 GPU 只有1×32321 \times 32 321×3232个独立的并行任务。物理后果一块 H100/A100 显卡有100 个 SMStreaming Multiprocessor只有 32 个任务意味着只有 32 个 SM 在干活剩下的 70 个 SM 完全闲置空转极度的 Memory-Bound内存带宽瓶颈单个线程块需要沿着 128k 长的 KV Cache串行Sequential做循环 Tiling 累加。GPU 的内存带宽被长序列拉爆而算力利用率Occupancy Tensor Core Utilization低至可怜的 5%~10%。核心矛盾KV Cache 沿着 Sequence 维度极长但标准 FlashAttention不敢对 KV Cache / Sequence 维度做跨 SM 的并行因为最后一个 Token 的 Softmax 需要全局的最大值mmm和分母ddd2. FlashDecoding 核心原理 Sequence 维度的跨 SM 拆分FlashDecoding 的核心破局点一句话总结“利用 Online Softmax 的归一化数学性质强制对 KV Cache 的 Sequence 维度做切块Split KV扔给不同的 SM 并行计算最后做一次快速归约Reduction”[ 标准 FlashAttention (Decode 阶段) ] SM 0 ─── 处理 Batch 1, Head 1 (串行遍历 128k 全量 KV Cache......) ─── 输出 SM 1 ─── 处理 Batch 1, Head 2 (串行遍历 128k 全量 KV Cache......) ─── 输出 ... (其余 70 个 SM 闲置) [ FlashDecoding (KV 序列拆分) ] 将 128k KV Cache 切分为 16 个 Slices (每个 8k): SM 0 ─── 处理 Slice 0 (0~8k) ─── 输出局部 (O_0, m_0, d_0) ┐ SM 1 ─── 处理 Slice 1 (8k~16k) ─── 输出局部 (O_1, m_1, d_1) ├── 第二阶段: 极轻量级 Tree-Reduction ─── 最终 O ... │ (利用 Online Softmax 跨 Block 融合) SM 15 ─── 处理 Slice 15 (120k~) ─── 输出局部 (O_15, m_15, d_15)┘FlashDecoding 的两阶段执行 Pipeline阶段一Split-KV 跨 SM 并行计算Map 阶段切分策略除了按B×HB \times HB×H切分外增加一个KV Sequence 拆分因子KnumK_{num}Knum​。比如把NKV128kN_{KV}128\text{k}NKV​128k拆分为 16 个小切片Slices。并行任务数总并行任务数增加为B×H×KnumB \times H \times K_{num}B×H×Knum​例如1×32×165121 \times 32 \times 16 5121×32×16512。所有 SM 被瞬间塞满SM 片上计算每个 SM 处理属于自己的小 KV 切片在片上 SRAM 利用标准 FlashAttention 逻辑计算输出 3 个局部状态局部未归一化输出向量O~i\tilde{O}_iO~i​局部最大值mim_imi​局部分母累加和did_idi​将这 3 个极小的局部中间结果写入 Global Memory显存占用极微小仅为O(B×H×Knum×D)O(B \times H \times K_{num} \times D)O(B×H×Knum​×D)。阶段二跨 Block 快速归约Tree-Reduction 阶段发射一个极小的 Reduction Kernel。重新利用Online Softmax 的校正因子推导mglobalmax⁡(m1,m2,…,mk)m_{global} \max(m_1, m_2, \dots, m_k)mglobal​max(m1​,m2​,…,mk​)αiemi−mglobal\alpha_i e^{m_i - m_{global}}αi​emi​−mglobal​dglobal∑iαi⋅did_{global} \sum_{i} \alpha_i \cdot d_idglobal​i∑​αi​⋅di​Ofinal∑iαi⋅O~idglobalO_{final} \frac{\sum_{i} \alpha_i \cdot \tilde{O}_i}{d_{global}}Ofinal​dglobal​∑i​αi​⋅O~i​​耗时因为KnumK_{num}Knum​很小如 16 或 32归约计算量极小耗时几乎接近 0 毫秒3. FlashDecoding 的进阶突破异步与动态自适应FlashDecoding 虽然解决了 SM 占不满的问题但在工业级实际部署中仍有两个痛点固定 Split 粒度引发的负载不均与 Overhead对于短序列过度 Split 导致的 Reduction 阶段开销反而侵蚀了收益。Synchronized Barrier同步屏障开销阶段一Map与阶段二Reduce之间需要一个 Global Barrier同步所有 SM。百度与学术界等提出的FlashDecoding对此进行了深度重构与优化[ FlashDecoding 架构优化 ] │ ┌─────────────────────────────────┴─────────────────────────────────┐ ▼ ▼ 【动态 Split-KV 决策树】 【Unified Kernel 与 Asynchronous Reduction】 根据 (Batch, Head, SeqLen, Hardware SM Count) 消除独立的 Reduction Kernel 动态求解最优 Split 块数 K_num 利用 Tensor Core 与 Shared Mem 异步流水线FlashDecoding 的三大核心技术突破动态自适应 Split 策略Dynamic Load-BalancingFlashDecoding 在 Runtime 引入了一个超轻量级的代价模型Cost Model。根据当前请求的BBB、序列长度NKVN_{KV}NKV​以及目标 GPU 的 SM 物理数量动态计算出能恰好填满 SM 的最优切分块数KnumK_{num}Knum​。短序列不切或少切超长序列大幅切彻底避免了“为了切而切”的调度 Overhead。异步 Reduction 与 Kernel 融合Unified Kernel / Asynchronous ReductionFlashDecoding 将 Map 与 Reduce 逻辑融合成单个 CUDA Kernel。利用 GPU 的Atomic Operations原子操作或 SM 间的Grid-Level Barrier / Asymmetric Synchronization先算完的 SM 可以直接异步参与部分归约计算进一步消除了跨 Kernel 发射与全局同步的开销。针对 Flat Head / GQAGrouped-Query Attention的特化优化现代大模型如 LLaMA-3、Mistral广泛采用 GQA如 8 个 KV Head 对应 32 个 Query Head。FlashDecoding 针对 GQA 的 KV Cache 共享特性做成了专门的KV-Reused Layout 优化大幅提升了 Shared Memory 缓存命中率。4. 面试高频对比FlashAttention vs FlashDecoding vs FlashDecoding维维度Standard FlashAttention (V1/V2)FlashDecodingFlashDecoding主攻阶段Prefill 阶段长 Q长 K/VDecode 阶段短 Q超长 K/VDecode 阶段全场景/动态长上下文并行维度B×HB \times HB×H(Batch×\times×Heads)B×H×KnumB \times H \times K_{num}B×H×Knum​(引入 KV Sequence 维度)B×H×Dynamic(Knum)B \times H \times \text{Dynamic}(K_{num})B×H×Dynamic(Knum​)(自适应 GQA 特化)SM 利用率Decode 阶段低低于 10%Decode 阶段极高接近 100%极致全 Sequence 长度下保持 90%计算流程单 Kernel 串行 Tiling 累加两阶段Map 切片 Tree-Reduce动态 Unified 单 Kernel 异步归约核心数学片上 Online Softmax跨 Block / 跨 SM 的 Online Softmax异步原子归约 动态代价模型5. 复盘背诵口诀FlashDecoding 核心突破“Decode 阶段 Q 只有一SM 闲置算力低切分 KV 跨 SM 跑局部状态存下来Online Softmax 做归约长上下文速度飞。”一句话精炼“FlashDecoding 突破了 Decode 阶段按 Batch/Head 并行的硬性限制利用 Online Softmax 的可按块缩放特性将KV Cache 序列Sequence维度切块分发给多个 SM 并行计算最后通过毫秒级 Tree-Reduction 汇总彻底拉满 GPU 算力利用率。”

相关新闻

C++ vector多维初始化:从一维到三维的内存布局与性能优化

C++ vector多维初始化:从一维到三维的内存布局与性能优化

1. 项目概述:从一维到多维,理解C vector的初始化艺术在C的日常开发中,std::vector绝对是使用频率最高的STL容器,没有之一。它完美替代了原始的C风格数组,提供了动态大小、自动内存管理等诸多便利。但很多朋友&#xff…

2026/8/5 20:15:18 阅读更多 →
OpenClaw 小龙虾 AI v2.9.0 解压即用部署步骤,新手友好文档

OpenClaw 小龙虾 AI v2.9.0 解压即用部署步骤,新手友好文档

核心亮点:提供全程可视化的图形操作界面,自动补齐全套运行依赖,数据独立存储于本地设备,兼容多款主流大模型,并采用轻量化的 45.7MB 整合压缩包。 教程适配:OpenClaw | 适配 Windows 10/11 与 macOS 双系统…

2026/8/4 10:39:02 阅读更多 →
全维战术动作三维捕捉与兵力调度推演引擎

全维战术动作三维捕捉与兵力调度推演引擎

全维战术动作三维捕捉与兵力调度推演引擎一、引擎整体概述全维战术动作三维捕捉与兵力调度推演引擎,由镜像视界浙江科技有限公司联合华东师范大学-镜像视界浙江普陀时空大数据应用联合研究院联合研发落地,是国家十四五时空大数据重点课题落地核心成果&am…

2026/8/4 10:38:02 阅读更多 →

最新新闻

GRBL-Plotter终极指南:如何用这款免费开源软件掌控你的CNC创作之旅

GRBL-Plotter终极指南:如何用这款免费开源软件掌控你的CNC创作之旅

GRBL-Plotter终极指南:如何用这款免费开源软件掌控你的CNC创作之旅 【免费下载链接】GRBL-Plotter A GCode sender (not only for lasers or plotters) for up to two GRBL controller. SVG, DXF, HPGL import. 6 axis DRO. 项目地址: https://gitcode.com/gh_mi…

2026/8/5 20:51:13 阅读更多 →
如何用微信小程序为情侣打造专属任务与商城系统?Rainbow-Cats-Personal-WeChat-MiniProgram深度解析

如何用微信小程序为情侣打造专属任务与商城系统?Rainbow-Cats-Personal-WeChat-MiniProgram深度解析

如何用微信小程序为情侣打造专属任务与商城系统?Rainbow-Cats-Personal-WeChat-MiniProgram深度解析 【免费下载链接】Rainbow-Cats-Personal-WeChat-MiniProgram 给女朋友做的微信小程序!情侣自己的任务和商城系统! 项目地址: https://git…

2026/8/5 20:51:13 阅读更多 →
OpenTX遥控器固件:3分钟快速上手,释放你的遥控器全部潜能

OpenTX遥控器固件:3分钟快速上手,释放你的遥控器全部潜能

OpenTX遥控器固件:3分钟快速上手,释放你的遥控器全部潜能 【免费下载链接】opentx OpenTX custom firmware for Transmitters 项目地址: https://gitcode.com/gh_mirrors/op/opentx OpenTX是一款革命性的开源遥控器固件,能够让你的普通…

2026/8/5 20:51:13 阅读更多 →
Android自动化从未如此简单:PageEyes Agent零代码操作指南

Android自动化从未如此简单:PageEyes Agent零代码操作指南

Android自动化从未如此简单:PageEyes Agent零代码操作指南 【免费下载链接】page-eyes-agent PageEyes Agent 是一个轻量级 UI Agent,通过自然语言指令驱动,无需编写脚本既可实现Web、Android平台的UI自动化任务。 项目地址: https://gitco…

2026/8/5 20:51:13 阅读更多 →
终极指南:如何用iptv-checker轻松管理你的IPTV播放列表

终极指南:如何用iptv-checker轻松管理你的IPTV播放列表

终极指南:如何用iptv-checker轻松管理你的IPTV播放列表 【免费下载链接】iptv-checker IPTV checker tool for Docker && CMD, check your playlist is available 项目地址: https://gitcode.com/GitHub_Trending/ip/iptv-checker 还在为IPTV播放列表…

2026/8/5 20:51:13 阅读更多 →
2026从零搭建外贸拓客矩阵全指南:海关数据/社媒/邮件工具特性梳理,主流拓客系统评测及合规服务商避坑攻略

2026从零搭建外贸拓客矩阵全指南:海关数据/社媒/邮件工具特性梳理,主流拓客系统评测及合规服务商避坑攻略

2026从零搭建外贸拓客矩阵全指南:海关数据/社媒/邮件工具特性梳理,主流拓客系统评测及合规服务商避坑攻略2026年,外贸行业数字化转型进入深度落地阶段,传统线下展会的获客成本持续高企,海外市场竞争格局也在随地缘、合…

2026/8/5 20:50:13 阅读更多 →

日新闻

Java缓存框架:JetCache

Java缓存框架:JetCache

TOC 一、简介 JetCache 是一个 Java 缓存抽象框架,为不同的缓存解决方案提供了统一的使用方式。 它提供的注解比 Spring Cache 更加强大。 JetCache 的注解支持原生 TTL、两级缓存以及在分布式环境中的自动刷新功能,同时你也可以通过代码直接操作 Cach…

2026/8/5 0:00:43 阅读更多 →
AD 铺铜设置十字连接,过孔全连接,新版AD的简单设置

AD 铺铜设置十字连接,过孔全连接,新版AD的简单设置

需求:通孔焊盘 十字花;过孔 Via 实心直连;贴片焊盘按需设置 AD 测试版本AD24 很多工程师踩坑:全部统一十字,导致接地过孔阻抗高、大电流发热! 一、快捷键打开规则 PCB 界面按下:D R 展开…

2026/8/5 0:00:43 阅读更多 →
AI素描转换技术深度拆解(2024最新论文+工业级落地代码):从Stable Diffusion ControlNet到LoRA微调全链路解析

AI素描转换技术深度拆解(2024最新论文+工业级落地代码):从Stable Diffusion ControlNet到LoRA微调全链路解析

更多请点击: https://kaifayun.com 第一章:AI生成素描效果 AI生成素描效果是计算机视觉与风格迁移技术融合的典型应用,其核心在于将彩色照片或RGB图像转换为具有手绘质感、明暗对比强烈、边缘清晰的单色素描图像。该过程通常依赖于深度学习模…

2026/8/5 0:00:43 阅读更多 →

周新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/5 15:00:43 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/5 13:13:56 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/5 10:20:36 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/4 13:38:24 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/4 11:09:16 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/4 13:38:40 阅读更多 →