
简介
该用户还未填写简介
擅长的技术栈
可提供的服务
暂无可提供的服务
某团队在昇腾NPU上跑多模态大模型(LLaVA、Qwen-VL等),发现FlashAttention的效果没有纯文本场景那么明显。他们分析了一下原因:多模态模型的文本部分不长(几百个token),但图像部分被tokenize之后有几百到几千个token,这些token之间的关系很复杂——局部token之间关系紧密(如同一图像patch内的token),远距离token之间关系稀疏(如不同图像pat

某团队在昇腾NPU上跑多模态大模型(LLaVA、Qwen-VL等),发现FlashAttention的效果没有纯文本场景那么明显。他们分析了一下原因:多模态模型的文本部分不长(几百个token),但图像部分被tokenize之后有几百到几千个token,这些token之间的关系很复杂——局部token之间关系紧密(如同一图像patch内的token),远距离token之间关系稀疏(如不同图像pat

某团队在昇腾NPU上跑多模态大模型(LLaVA、Qwen-VL等),发现FlashAttention的效果没有纯文本场景那么明显。他们分析了一下原因:多模态模型的文本部分不长(几百个token),但图像部分被tokenize之后有几百到几千个token,这些token之间的关系很复杂——局部token之间关系紧密(如同一图像patch内的token),远距离token之间关系稀疏(如不同图像pat

查了一圈,发现瓶颈不在 FlashAttention 本身——FlashAttention 算完注意力之后,输出的 token 要送进 8 个专家网络(Expert),路由选择和专家计算之间有一大段显存读写,这些读写才是慢的元凶。MoE 的显存操作是 FlashAttention 的 9 倍,这就是为什么 MoE 模型的 FlashAttention 跑起来慢——不是 FlashAttention

"""细粒度Gradient Checkpointing策略:不是整个Attention作为一个检查点而是按block分层,每B个block保存一个检查点好处:反向时只需重计算B个block,不是整个序列"""self.checkpoint_every = checkpoint_every # 每N个block保存一个检查点"""细粒度检查点前向把序列分成多个block,每checkpoint_e

Gradient Checkpointing 的原理是:前向传播只保存部分层的输出,反向传播到某一层的时候,从最近的检查点重新算前向。CPU 时代就有类似的优化:寄存器不够的时候,编译器会生成“溢出-重载”代码,把中间值从寄存器溢出到内存,需要的时候再重新算一遍而不是从内存读。前向传播用在线 Softmax 省 O(N²) 的显存写入,反向传播用重计算省 O(N²) 的显存存储。在昇腾 NPU 上

Gradient Checkpointing 的原理是:前向传播只保存部分层的输出,反向传播到某一层的时候,从最近的检查点重新算前向。CPU 时代就有类似的优化:寄存器不够的时候,编译器会生成“溢出-重载”代码,把中间值从寄存器溢出到内存,需要的时候再重新算一遍而不是从内存读。前向传播用在线 Softmax 省 O(N²) 的显存写入,反向传播用重计算省 O(N²) 的显存存储。在昇腾 NPU 上

2025年昇腾CANN训练营第二季,基于CANN开源开放全场景,推出0基础入门系列、码力全开特辑、开发者案例等专题课程,助力不同阶段开发者快速提升算子开发技能。获得Ascend C算子中级认证,即可领取精美证书,完成社区任务更有机会赢取华为手机,平板、开发板等大奖。报名链接:https://www.hiascend.com/developer/activities/cann20252。:本文为原创

本文通过实现GELU 激活函数✅ 如何在 Ascend C 中实现超越官方性能的 element-wise 算子✅向量化编程技巧(float16x8)最大化内存带宽✅数值计算稳定性保障(FP32 计算 + 多项式近似)✅多精度支持与PyTorch 无缝集成掌握这些技能后,你已具备开发等任意激活函数的能力。

2025年昇腾CANN训练营第二季,基于CANN开源开放全场景,推出0基础入门系列、码力全开特辑、开发者案例等专题课程,助力不同阶段开发者快速提升算子开发技能。获得Ascend C算子中级认证,即可领取精美证书,完成社区任务更有机会赢取华为手机,平板、开发板等大奖。报名链接:https://www.hiascend.com/developer/activities/cann20252。:devel








