FlashDecoding

Flash Attention是将Q划分到所有SM block上。每个SM block上的Q,负责和所有K和所有V进行计算,得到对应的结果。期间,SM block彼此之间,不需要通信。

在prefill阶段,seqLength*batchSize*Heads足够多,所以每个SM block上有足够多的Query。

但是,在decoding阶段,因为Query的seqLength=1,且batchSize=1,因此SM block数目无法都利用上。

解决方法:

将K和V均分成几份,划分给SM block。缺点:最后需要将不同SM block上的中间结果,进行通信,进行归一化的softmax和结果Reduce。

动图:

大模型推理加速之Flash Decoding:更小子任务提升并行度 - 知乎

### VLLM 中压缩张量的最小容量要求 在大规模语言模型(LLMs)中,VLLM 使用多种技术来优化推理性能和资源利用率。其中涉及的关键概念包括 KV 缓存剪枝、FlashDecoding 和 AllReduce 操作。 #### 1. **KV 缓存剪枝的影响** 现有的 KV 缓存剪枝方法通常采用静态内存分配策略,即为 LLMs 的每个 Transformer 层分配固定的内存空间[^1]。然而,这种方法未能充分利用动态稀疏性模式的优势——LLMs 在不同注意力头和请求间表现出显著的变化。因此,在实际应用中,可以通过分析注意力分布来减少所需存储的关键令牌数。研究表明,仅需保留一小部分关键令牌即可维持大部分信息完整性,从而降低对张量存储的需求。 #### 2. **FlashDecoding 对张量大小的要求** FlashDecoding 技术进一步减少了中间状态保存带来的开销。它通过对长序列中的键值对 (KV) 进行分块处理,并利用高效的 FlashAttention 计算方式完成各子任务后再汇总结果[^2]。此过程中,由于每次只加载当前 chunk 所对应的 KV 数据到显存中参与运算,整体上可以有效控制瞬时占用的最大张量尺寸。 #### 3. **AllReduce 及其关联效应** 虽然 AllReduce 主要应用于分布式训练场景下的梯度同步问题[^3],但在某些情况下也可能间接影响推断阶段关于参数更新或者激活值共享方面的设计考量。不过就单纯讨论 vllm 下压缩后的张量最小需求而言,这一环节并非核心决定因素。 综合上述几点可以看出,vllm 实现高效运行所依赖的压缩后张量最小容量取决于以下几个方面: - 动态调整机制能够识别并剔除冗余信息的程度; - flashdecoding 方法分割数据块粒度的选择以及相应硬件环境支持情况; 最终得出结论是在理想条件下如果能精确捕捉到哪些 token 对应重要程度较高的 attention score,则理论上只需要储存那些足以代表原始输入绝大部分语义特征的部分即可满足正常工作需要而无需额外预留过多备用空间。 ```python def estimate_min_tensor_size(total_attention_scores, target_percentage=0.95): """ Estimate the minimum tensor size required to preserve a certain percentage of total attention scores. Args: total_attention_scores (list): List of all attention scores. target_percentage (float): Target fraction of information to retain. Returns: int: Minimum number of tokens needed. """ sorted_scores = sorted(total_attention_scores, reverse=True) cumulative_sum = sum(sorted_scores[:int(len(sorted_scores)*target_percentage)]) threshold_index = next(i for i,v in enumerate(cumulative_sum) if v >= cumulative_sum*target_percentage) return threshold_index ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值