NSA推理在昇腾芯片上的一种亲和实现方案

简介: 本文提出昇腾AI芯片上NSA推理的亲和优化方案:①创新设计稀疏系数矩阵,将compress中importance score计算转为高效矩阵乘,实现online softmax,耗时从200μs降至80+μs;②融合无依赖的select与sliding算子,消除约40μs开销。综合加速比达8.8×,逼近理论极限11.6×。(239字)

1.摘要
本文主要介绍NSA(主要是推理)在昇腾上的一种亲和实现,主要创新点包括:

(1):设计一种巧妙的系数矩阵,完成compress算子importanceScore的高效计算,并基于此成功将compress中attention计算转换为online方式,取得较大的优化(从200us下降到80+us);

(2):利用长序列推理场景下,单卡分到的batchsize或groupnum不大的特点,将无相互依赖的select和sliding算子减核并行融合到一个算子中去,整体消除一个算子的运行时间(约40us)。由于工作量问题部分优化没有完成,但是叠加其小优化措施,推理在论文典型场景下推理加速收益比达到8.8(论文中理论收益11.6)。

 此外值得一提的是,基于上面两个优化思路,理论上在昇腾实现NSA推理加速比有可能超过原论文中理论加速比11.6,其基本原理可以理解为相对IFA,compress中基于矩阵的重要性分数计算耗时,不应该超过被省掉的select或sliding的一个算子耗时。

2.方案详情
2.1场景问题:NAS算子情况介绍
NAS包括3个算子:

Compress 将KV块按照固定不长划分后通过网络进行压缩,捕捉粗粒度的语义信息,减少计算负担。同时输出重要性系数,用于TopK选择。

Select 对压缩后的KV块计算重要性系数,排序后选择Top-k重要的KV块,由此引入了稀疏Attention

sliding 按固定的窗口大小截取尾部的KV cache,弥补前两路分支只处理block-level信息的缺陷。

其中Importance score计算公式如下:

2.2方案描述
2.2.1:Compress算子优化
根据importanceScore公式及论文典型场景配置l=32,d=16,l’= 64下,importance score的计算需要在softmax结果的列上做累加(如下图),

但是列的累加在硬件上不亲和,如果按照列累加,需要流程转变变为:转置->累加->转置,如下图所示:

当前思路存在以下问题:

importanceScore计算部分采用vector计算,涉及转置和大量小数据量指令运行,导致在推理decode阶段,耗时过长,拖累整个算子性能。如图所示:

importanceScore计算基于QK矩阵乘及softmax计算完之后得出P,才能进行运算,导致原本Attention计算部分不能采用onlineSoftmax方式(CB并行下的cube bound),只能CV串行,存在算力空泡。

2.2.1.1:compress的优化阶段1:重要性计算转向矩阵乘PW

我们经过分析和研究,发现可以用cube实现ImportanceScore部分,思路分两步,如下:

“带权重的滑窗求和”

经过对论文公式分析和计算过程的推导(如下两个图),可以得知ImportanceScore的第一个求和部分实质上是对左矩阵的“带权重的滑窗求和”,类似一维方向的卷积池化。如图1多个红框表示,滑窗的步幅和权重都是固定的,基于此可设计如图3矩阵乘方式,左矩阵(黄色)为softmax结果P,右矩阵(灰蓝色)为滑窗系数矩阵W。 只要构造与P等大的矩阵W,理论上即可完成所有计算过程,但是W矩阵极稀疏(90+%都是0)、极重复(只有1和2两个值),需要参考图像处理中卷积池化,设计一个很小的“卷积核”。

但是系数矩阵W在矩阵乘的过程中,由于硬件基本块的原因,会被切块,每次切块后的W内容不一样,导致数据计算不全,如下所示

此外还产生了系数矩阵不固定的问题,工程上落地还有困难,如下图所示:

“固定常驻的小矩阵W”

 系数矩阵W在矩阵乘的过程中,由于硬件基本块的原因,会被切块,每次切块后的W内容不一样(如上所示)。此外如果不能将每次计算时W的内容统一,每次计算更换W内容,需要从GM搬运几乎重复的内容,效率非常低效。 参考下图,我们设计了一种固定小矩阵作为系数矩阵:

关键流程如下:

设计尾缺列首的系数矩阵W 如图中红字1所示,在常规W的第一列加入一列,内容为最后一列缺失的部分(尾缺列首),图中只有一个1,该矩阵可由模型侧预置。

PW矩阵乘时,多乘一列 如图中红字2,PW矩阵乘后,首列(橙色)部分 在本次计算中没有意义,但却是下一次计算需要的

首尾相加 如图中红字3,在前后两次矩阵乘结束后,在GM上 利用atomicAdd特性,避开整32byte对齐的要求, 进行第一次计算的尾列和第二次首列的相加,完成因切块导致缺失计算。

上诉改造后,性能收益明显,性能收益来源分析如下:

固定的右矩阵:左矩阵P不用变形(相对于原方案中转置),不停搬入计算;W矩阵固定不变,常驻L0B,带宽全用于左矩阵P的搬运;

单cycle计算量大:根据矩阵乘原理,一个cycle可以计算多行。实际开发时,结合L0B的大小,W矩阵shape可设计为128*33,即一次计算33个滑窗,相对原方案中一个vector指令计算一个滑窗有较大提高。

Cube算力大:当前cube利用率20/(1616)=5/64,CV算力比:C = 16个V ,原先方案实际只用一个vector ,实际为32倍,那么起码提升32 (5/64)=2.5倍,结合vector计算时有转置、频繁计算小数据量,实际收益估计会更高。

实际测试后发现,以S=64K,selectedBlockSize=64, compressBlockSize=32, compressStride=16,qHead=64,kvHead=1,630版本为274us,当前测试的结果为139us,274us->139us提升几乎一倍,其中importanceScore部分,大致是150us->20us,提升7.5倍,流水如下所示

2.2.1.2:compress的优化阶段2:PV和PW的复用及融合

P复用的出发点:

      原论文中没有要求高精度计算重要性分数:由图1计算公式及论文上下文可知,重要性分数是基于softmax结果P进行的,之后同样的P进行PV计算,所以没有必须要用F32计算PW。630版本中之所以用f32计算,是因为在vector上softmax结果P是f32,继续进行vector的重要性计算时,需要cast成f16,省操作。

重复的P搬运:PW中的P为f32,PV中的P为f16,内容重复,数据量较大,且需要走MTE2带宽,可以减少这部分搬运(性能收益来源)

     注意力的稀疏性:Q只与有限的历史token强相关,topk不会很多,重要性分数实际中会在某个K后断崖式下降。

P融合的具体措施:

复用PV中的P_f16计算PW,在原PV矩阵乘计算中,每轮迭代PV计算后,保持P不动,更换右矩阵为W(此时W从阶段1L0常驻退化为L1常驻)。以增加高带宽MTE1搬运为代价,减少低带宽MTE2搬运。

精度影响评估 :

降低PW的精度,一定会引起重要性分数精度下降、进而影响topK选择,但是对业务影响可接受。主要理由为:如果误差发生,则影响K的排布,实际上会导致某个K的顺序发生竞争:

 如果竞争发生在topK内(如图3中3/4块),后续算子对topK内所有块均权计算attention,对业务完全不影响;

 如果竞争发生在topK外,业务不需要,也没有影响;

 如果竞争发生在topk的尾块(如图3中15/16块) ,可以相信topK尾部最低重要性的某个块发生近似变化,对整体影响是可以接受的;



 此外需要补充说明的是,PV与PW融合是要求左矩阵P保持不动,先后乘W和V两个右矩阵,当groupSize * blockSize>= 128*128时,PV已经全占了L0C,无l0c空间存储importance score的PW结果。 当融合计算所需要的资源超长芯片资源时,则不能融合,只能复用P的搬运,计算时分开计算PW和PV,此时会多一次P的MTE1搬运(性能相对会有所下降),相对PW的W又可以变成L0常驻。 比如当groupSize(=Q_head/KV_head)128, blockSize(page_block_szie)也为128,128*128* 4(f32_len)*2(pingpong)=128K,刚好等于L0C的大小,已经没有空间再存放PW的计算结果

2.2.1.3:compress的优化阶段3:使用Online Softmax

 前面我们提过vector计算重要性计算会导致需要所有的QK先计算完才能计算重要性分数,这就导致原先attention的QK过程不能采用online-attention计算,那么我们现在将重要性计算转成矩阵乘PW,并且将PW和PV的P进行了融合,那么是否可以重新转向online-attention计算呢?我们先简单看下online-attention计算的相关情况:

Online Softmax基本原理:分块(参见颜色)计算,依据rowmax逐块更新:

Online Softmax流水:CV并行,cube bound掩盖下的vector空泡:

onlineSoftmax基本公式:

这里我们先提一个问题:相比PV,基于阶段1、2,PW也是矩阵计算,为什么不能使用online模式?有什么区别?

我们通过下面这个图来分析这个问题:

其中黄色框是阶段1提到的系数矩阵。图中表达的核心观点为:PV的onlinesoftmax流程是相应颜色块完成矩阵乘后,带rowmax系数重叠相加而成(图上红黄绿紫重叠相加为一个黑块),PW则为带系数首尾相加(图上红黄绿紫,收尾相加为一个黑块),区别只在于求和方式,其他无差异。

补充一点细节说明:

Ø图中矩阵W并不全真正全部的矩阵,也不需要全部计算,参考阶段1的设计,只要保证W中每次黄色块是阶段1的带冗余头、“尾缺列首”的固定系数小矩阵W即可,减少大量重复搬运和计算。

Ø继承阶段2融合复用P的逻辑,复用onlineSoftmax现有的KV划块逻辑,复用依据rowmax逐块更新的逻辑

Ø首尾相加参照阶段1的设计,还是需要在GM上利用atomicAdd特性(稍微搓了点),避开整32byte对齐的要求,进行前一次计算的尾列和后一次首列的相加,完成因切块导致缺失计算。

 基于onlineSoftmax的ImportanceScore+QKV attention完整公式:                           

2.2.1.4:compress的优化阶段4:使用Flash-Decoding对KV切核

触发Flash decoding的业务场景,Aicore不满载场景,包括bs过小或者TP过大,单纯onlineSoftmax flash-attention会造成部分Aicore空闲,多batch下KV_seq_len长度不均,造成各核负载不均,所以当解决了flash-attention的问题后,也可以实现Flash-Decoding方案。

因为阶段34工作量较大,实际穿刺未完成,前文提到的8.8加速收益比不包括阶段34的收益

2.2.2:Select和sliding推理优化
2.2.2.1:思路出发点:

  1. Select和sliding这两个算子没有依赖关系,是否可以“并行”、相互掩盖?在模型侧做“算子并行”依赖推理训练框架支持,难度过大,是否有其他并行方案。

    1. 从模型侧看,select是从全局选择的1k、16(*64)个重要性最高的文本段进行注意力计算,sliding是选末尾的0.5K的文本段进行注意力计算,二者业务上没有本质区别。

    2. 序列低于2K时,当前IFA算子模板不走入flash-decoding,说明短序列下单算子优化空间有限

    4.论文中sliding固定选末尾的0.5K,select选16*64.

相关文章
|
2月前
|
存储 机器学习/深度学习 自然语言处理
56.大模型应用:大模型瘦身:量化、蒸馏、剪枝的基础原理与应用场景深度解析.56
本文深入对比大模型轻量化三大核心技术:量化(降精度,快部署)、蒸馏(知识迁移,高精度)、剪枝(删冗余,结构精简)。详解原理、分类、适用场景、代码实现及选型建议,助开发者根据硬件条件、精度要求与落地周期科学决策。
946 16
|
2月前
|
人工智能 开发者
零部署OpenClaw接入飞书实现热门新闻主动推送功能
OpenClaw是可部署于本地或云环境的开源AI智能体,支持飞书等平台接入。本案例指导在华为开发者空间零部署启动OpenClaw,快速接入飞书,实现热门新闻主动推送,打造专属“数字管家”。
|
2月前
|
人工智能 Linux API
从个人到企业级AI自动化搭建:GPT-5.4深度应用+OpenClaw 阿里云/本地部署完整教程
2026年3月,GPT-5.4正式登场,标志着AI从**对话工具**正式进化为**全自主计算机操控代理**。原生电脑控制、百万Token上下文、Excel深度建模、实时思考预览、极速代码能力,让它成为企业、专家、讲师、管理者、创作者的超级生产力引擎。而OpenClaw(Clawdbot)作为轻量化、可7×24小时运行的AI智能体框架,成为落地GPT-5.4能力、实现自动化闭环的最佳载体。
743 2
|
2月前
|
人工智能 安全 Linux
OpenClaw AI创业风口全解:阿里云/本地部署+156个盈利项目拆解+百炼API配置实战指南
2026年一场悄无声息的AI淘金热已经全面爆发。一组来自TrustMRR的真实营收数据足以说明一切:平台上收录156个基于OpenClaw(Clawdbot)的创业项目,最长成立不超过6周,过去30天合计营收达到379,631美元,平均每个项目月入2,432美元,头部项目单月营收高达50,000美元。这些项目几乎都是一人团队或两三人小组,没有VC融资、没有实体办公室、没有高调官宣,却实实在在通过Stripe产生真金白银的收入。
786 0
|
2月前
|
人工智能 机器人 API
搭建全自动新闻推送 AI 机器人|OpenClaw阿里云/本地部署+API配置+联网+邮箱+定时全流程
2026年,信息爆炸已经成为所有人的痛点,尤其是AI、科技领域每天都有大量新动态,手动刷新闻既浪费时间又容易遗漏。借助OpenClaw(Clawdbot)这一开源智能体框架,我们可以轻松搭建一个**完全自动化的新闻推送机器人**:每天定时抓取指定领域新闻、自动总结核心内容、排版成美观格式,并准时发送到你的邮箱,实现“醒来即收早报”的自由。
573 0
|
2月前
|
人工智能 运维 监控
你的 AI Agent 真的在受控运行吗?
以 OpenClaw 为案例,从行业威胁态势与运行时防护的固有局限出发,系统拆解 AI Agent 可观测体系的设计方法论:通过 Session 审计日志、应用日志与 OpenTelemetry 遥测三条数据管道,构建行为审计、威胁检测、成本管控与运维观测的完整闭环。
你的 AI Agent 真的在受控运行吗?
|
2月前
|
人工智能 IDE 程序员
Agent Apps:Agent 时代,大家都在造工具箱,但真正缺的是“工作台”
Agent时代,工具层出不穷,但真正缺失的是Agent的“工作台”——Agent App。它不是工具集合、技能包或大一统Agent,而是为AI构建可操作、有状态、带上下文与视图的原生工作环境,让Agent真正“上岗干活”。
367 8
Agent Apps:Agent 时代,大家都在造工具箱,但真正缺的是“工作台”
|
3月前
|
自然语言处理 前端开发 测试技术
魔搭社区+OpenVINO™ 加速部署 Qwen3-ASR 实战
通义千问新推Qwen3-ASR语音识别模型(1.7B/0.6B),支持52种语言及方言,具备高鲁棒性与流式长音频转写能力。联合魔搭社区与Intel® OpenVINO™,实现Intel平台极致加速部署,提供完整开源教程、Notebook示例及Gradio交互Demo。(239字)
2029 6
|
2月前
|
人工智能 编解码 搜索推荐
当所有简历都能被 AI 写漂亮之后:招聘行业真正该如何使用 AI
AI正加速将简历等传统信号“同质化”——人人能写漂亮简历,却难保真实;表达更流畅,但判断力未提升。当AI从“差异化能力”变为招聘基础设施(2025年渗透率达77%),行业核心矛盾已转向**信息损耗、流程损耗与信任损耗**。未来胜负手不在美化表达,而在重建可验证的信号系统、可追踪的行为链路与可信赖的结果闭环。(239字)
325 11
|
2月前
|
存储 机器学习/深度学习 人工智能
大模型应用:大模型本地部署的磁盘空间优化:模型分片存储与按需加载.48
本文详解大模型本地部署的磁盘与显存优化方案:通过分片存储(将大模型切分为多个小文件)与按需加载(运行时动态加载所需分片),显著降低硬件门槛。以Qwen1.5-1.8B为例,完整演示分片生成、索引构建、完整性校验、加载测试及跨分区部署,确保效果不降、资源占用大减。
501 19

热门文章

最新文章