游乐游手机版
首页/AI热点日报/热点详情

大模型DoubleSparse稀疏化技术原理

类型:热点整理2026-07-13
探索大模型稀疏化技术的最新突破,Double Sparsity凭借其高效推理性能成为业内关注焦点。本文将从技术背景、核心原理、实验表现到实际应用,逐步解析这一方案如何有效加速大模型推理过程。 近年来,随着Transformer和MoE架构的广泛采用,深度学习模型轻松突破万亿参数规模——模型容量持续增

探索大模型稀疏化技术的最新突破,Double Sparsity凭借其高效推理性能成为业内关注焦点。本文将从技术背景、核心原理、实验表现到实际应用,逐步解析这一方案如何有效加速大模型推理过程。

大模型稀疏化技术原理:DoubleSparse

近年来,随着Transformer和MoE架构的广泛采用,深度学习模型轻松突破万亿参数规模——模型容量持续增长,部署成本也随之攀升。因此,大模型压缩技术成为行业刚需,主要方向包括:

  • 模型稀疏化
  • 知识蒸馏
  • 模型量化

本系列将围绕几种主流稀疏化方案(LLM-Pruner、SliceGPT、SparseGPT、Wanda)展开深入探讨,而本文重点介绍一种创新的训练后稀疏注意力技术——Double Sparsity

  • 大模型稀疏化技术原理:概述
  • 大模型稀疏化技术原理:Double Sparsity
  • 大模型稀疏化技术原理:LLM-Pruner、SliceGPT
  • 大模型稀疏化技术原理:SparseGPT、Wanda
  • 大模型稀疏化技术原理:总结

简介

大语言模型在推理过程中面临速度慢、内存占用高等挑战,一个关键瓶颈在于频繁访问键值(KV)缓存。Double Sparsity通过减少对KV缓存的内存访问来加速推理。该方案融合了token稀疏与通道稀疏两种策略:token稀疏仅保留重要token进行自注意力计算,通道稀疏则利用重要特征通道来识别哪些token更关键。核心洞察在于:通道稀疏的模式相对静态,可通过离线校准提前确定,从而在运行时高效、准确地定位重要token。此外,该方法还能与卸载技术结合使用,进一步缓解内存压力。

实验数据表现亮眼:在Llama2-7B、Llama-2-70B和Mixtral-8x7B模型上,Double Sparsity在保持1/16的token和通道稀疏度的情况下,对wiki-2困惑度、key-value检索以及长上下文基准测试的影响微乎其微。注意力运算加速高达14.1倍,端到端推理速度提升1.9倍。结合卸载技术后,在序列长度256K时解码速度比现有最优方案快16.3倍。

技术原理

整体方案分为两个阶段:

  • 离线校准:离线筛选出重要通道,并保存到Label Cache中。
  • 在线前向计算:基于Label Cache进行推理计算。

离线校准

离线校准的目标是识别出对注意力分数影响最大的通道(Outlier Channel)。受AWQ启发,Double Sparsity利用少量样本数据离线确定哪些通道更为关键——不同层的通道可能各不相同。以下是几种识别策略:

  • Activation Outlier:根据激活值中的异常值进行识别(红色部分)
  • Q-Outlier:根据Query中的异常值进行识别(绿色部分)
  • K-Outlier:根据Key中的异常值进行识别(蓝色部分)
  • QK-Outlier:根据Query*Key的乘积进行识别(紫色部分)

为验证离线校准的可靠性,作者对比了离线识别的异常通道索引与在线解码时实际出现的异常通道索引,发现两组数据高度重叠。消融实验显示,当重要通道占比达到0.25时,离线与在线的重合度高达0.95。

确定异常通道索引后,如何高效访问这些通道成为一个关键问题。直接从Key Cache中读取会导致非连续内存访问,大幅降低带宽利用率。为此,作者引入了Label Cache——预先存储重要的权重通道值,从而在计算近似注意力时实现连续内存访问,避免从Key Cache检索非连续片段。具体操作流程为:预填充阶段将所有重要通道值从Key Cache复制到Label Cache;解码阶段只需添加新token的重要通道值。

需要注意的是,这里除了存储全量的Key Cache,还需额外存储Label Cache,因此显存占用会有所增加。

由于近似注意力对精度不敏感,Label Cache可以采用4位存储,大小仅为Key Cache的1/16。这样既实现了连续内存访问,又显著提升了L1/L2缓存命中率,推理速度和整体效率都得到了优化。

在线前向计算

Double Sparsity的解码过程伪代码如下,主要分为三步:

第一步:根据重要通道索引提取Query(同样需要连续存储)。

第二步:使用稀疏但连续的Query与Key Cache计算近似注意力分数。

第三步:根据分数选出Top-k重要token(Key/Value Cache),然后利用这些重要token进行完整注意力计算(注意:此处使用的Query、Key、Value都不是通道稀疏的,因此仍需完整的Key/Value Cache)。

实验细节

Wiki-2困惑度是衡量模型语言建模能力的常用指标,数值越低代表性能越好。下表展示了不同模型在不同稀疏度下的困惑度变化情况。

为验证1/16稀疏度的鲁棒性,作者在多种模型大小、注意力机制和MoE配置下进行了消融实验。

在长文本基准测试中,使用Llama-2-7B模型评估了不同稀疏水平下的性能表现。在1/16稀疏度下,Double Sparsity几乎无性能损失,准确性优于StreamingLLM和H2O。

在Key-value检索任务中,Double Sparsity显著优于H2O、StreamingLLM和RTN量化。值得注意的是,Double Sparsity与其卸载版本性能相当,说明卸载机制几乎没有带来性能损失。

在延迟对比方面,在A10G GPU上,Double Sparsity相比scaled_dot_product_attention(FA2)至少提速5倍,半数以上场景超过9倍,序列长度4096且批量较大时甚至实现了线性加速。在A100上,几乎所有场景至少提速4倍,批量更大时可达10倍。小批量场景下A10G加速效果更为明显,这可能与Triton内核启动时间有关。

在吞吐量对比方面,部署Llama-2-7B模型并最大化内存使用,Double Sparsity在所有条件下至少带来1.3倍速度提升,某些场景接近2倍。在受限内存条件下,与FlexGen相比,常规工作负载加速4~8倍,长文本(64K~256K)场景下加速比达到16倍。

SGLang 中应用 Double Sparsity

目前SGLang已经集成了Double Sparsity,可直接使用(参考PR:https://github.com/sgl-project/sglang/pull/1459)。下面是一个离线推理吞吐量测试脚本,可直观测试性能。实测下来,基于Triton实现的Double Sparsity相比FA3或FlashInfer后端性能略逊一筹,不过不同GPU型号(A800、H20、H200)表现存在差异。

model_path=/global/models/Qwen2.5-32B-Instruct
dataset_path=/workspace/data/ShareGPT_V3_unfiltered_cleaned_split.json
ds_channel_path=/workspace/outputs/DoubleSparse-qwen25/models/Qwen2.5-32B-Instruct.json

CUDA_VISIBLE_DEVICES=3 python3 -m sglang.bench_offline_throughput
--model-path ${model_path}
--dataset-name random
--random-input 8192
--random-output 128
--random-range-ratio 1
--dataset-path ${dataset_path}
--num-prompts 1000
--mem-fraction-static 0.9
--attention-backend triton
--ds-channel-config-path ${ds_channel_path}
--enable-double-sparsity
--ds-hea vy-channel-num 16
--ds-hea vy-channel-type k
--ds-hea vy-token-num 256
--ds-sparse-decode-threshold 0

参数说明:

  • --enable-double-sparsity:启动Double Sparsity功能
  • --ds-channel-config-path:指定通道配置文件路径
  • --ds-hea vy-channel-num:设置重要通道数量
  • --ds-hea vy-token-num:设置重要Token数量
  • --ds-hea vy-channel-type:选择识别重要通道的策略
  • --ds-sparse-decode-threshold:解码阈值(当批次最大序列长度小于该值或最小序列长度小于hea vy_token_num时,不启用Double Sparsity)

重要通道信息可通过以下代码生成(https://github.com/andy-yang-1/DoubleSparse/blob/main/config/offline_calibration.py):

python3 offline_calibration.py 
--model_path /global/models/Qwen2.5-7B-Instruct
--output_dir /workspace/outputs/DoubleSparse-qwen25-7b

总结

本文介绍了一种新型的训练后稀疏注意力技术——Double Sparsity。该方法巧妙融合了token稀疏与通道稀疏两种策略:token稀疏仅关注重要token,通道稀疏则通过重要特征通道来识别这些token。受AWQ启发,Double Sparsity采用离线校准预先确定关键通道,并借助Label Cache解决非连续内存访问问题。当然,这一方案的代价是额外存储Label Cache会增加显存占用。但从实验结果来看,这些代价换来了显著的推理加速,尤其在长序列场景下优势更为突出。

来源:https://www.53ai.com/news/LargeLanguageModel/2025060420469.html

相关热点

继续查看同栏目近期热点。

延伸阅读

补充最近整理过的热点入口。