logo
publist
写文章

简介

该用户还未填写简介

擅长的技术栈

可提供的服务

暂无可提供的服务

FlashAttention不加速注意力——昇腾CANN里的中间矩阵消失术

第一次看 catlass 源码的时候,以为它是 CUTLASS 的翻版。CUTLASS 是 NVIDIA 的 GEMM 模板库,用 C++ 模板元编程生成高性能的矩阵乘 kernel。catlass 名字里也有 “c” + “atlass”,很容易让人以为它是昇腾版的 CUTLASS。CUTLASS 是通用的 GEMM 模板库,目标是生成各种形状的矩阵乘 kernel。它生成的不是某一个算子,而是

文章图片
#python#开发语言
FlashAttention不加速注意力——昇腾CANN里的中间矩阵消失术

第一次看 catlass 源码的时候,以为它是 CUTLASS 的翻版。CUTLASS 是 NVIDIA 的 GEMM 模板库,用 C++ 模板元编程生成高性能的矩阵乘 kernel。catlass 名字里也有 “c” + “atlass”,很容易让人以为它是昇腾版的 CUTLASS。CUTLASS 是通用的 GEMM 模板库,目标是生成各种形状的矩阵乘 kernel。它生成的不是某一个算子,而是

文章图片
#python#开发语言
catlass 不是 CUTLASS——它是昇腾 NPU 上的算子模板生成器

CUTLASS 是 NVIDIA 的 GEMM 模板库,用 C++ 模板元编程生成高性能的矩阵乘 kernel。catlass 名字里也有 “c” + “atlass”,很容易让人以为它是昇腾版的 CUTLASS。CUTLASS 是通用的 GEMM 模板库,目标是生成各种形状的矩阵乘 kernel。它生成的不是某一个算子,而是一族算子的实现模板。这个区分很重要。理解了这一点,你才能看懂 catla

文章图片
#开发语言
catlass 不是 CUTLASS——它是昇腾 NPU 上的算子模板生成器

CUTLASS 是 NVIDIA 的 GEMM 模板库,用 C++ 模板元编程生成高性能的矩阵乘 kernel。catlass 名字里也有 “c” + “atlass”,很容易让人以为它是昇腾版的 CUTLASS。CUTLASS 是通用的 GEMM 模板库,目标是生成各种形状的矩阵乘 kernel。它生成的不是某一个算子,而是一族算子的实现模板。这个区分很重要。理解了这一点,你才能看懂 catla

文章图片
#开发语言
Runtime不是跑kernel的——它是昇腾CANN里的执行层

昇腾NPU上的算子是怎么跑起来的?有人说"runtime就是负责跑kernel的",有人说"runtime管内存分配",还有人说"runtime就是CUDA runtime的对应物"。这些答案都有对的地方,但都没说到根子上。这个区分很重要。如果你的理解停留在"runtime负责调度kernel",那你永远调不好性能,也看不懂为什么同一个算子在不同batch size下延迟差了3倍。从FlashAt

文章图片
#开发语言
Runtime不是跑kernel的——它是昇腾CANN里的执行层

昇腾NPU上的算子是怎么跑起来的?有人说"runtime就是负责跑kernel的",有人说"runtime管内存分配",还有人说"runtime就是CUDA runtime的对应物"。这些答案都有对的地方,但都没说到根子上。这个区分很重要。如果你的理解停留在"runtime负责调度kernel",那你永远调不好性能,也看不懂为什么同一个算子在不同batch size下延迟差了3倍。从FlashAt

文章图片
#开发语言
CANN FlashAttention 不是算力加速器,它在昇腾NPU上做的是“偷懒“的数学

第一次跑Llama 3 70B推理的时候,序列长度拉到8192就OOM了。查了一圈发现不是模型权重太大——权重本身才14GB——吃显存的是注意力机制的中间矩阵。每个transformer层都要存一个N×N的注意力分数矩阵,12层叠起来,光这个中间结果就占了好几个GB。FlashAttention解决的正是这个问题。这个区分很重要。FlashAttention不是"算得更快"——昇腾NPU的Cube

文章图片
#python#开发语言
CANN FlashAttention 不是算力加速器,它在昇腾NPU上做的是“偷懒“的数学

第一次跑Llama 3 70B推理的时候,序列长度拉到8192就OOM了。查了一圈发现不是模型权重太大——权重本身才14GB——吃显存的是注意力机制的中间矩阵。每个transformer层都要存一个N×N的注意力分数矩阵,12层叠起来,光这个中间结果就占了好几个GB。FlashAttention解决的正是这个问题。这个区分很重要。FlashAttention不是"算得更快"——昇腾NPU的Cube

文章图片
#python#开发语言
CANN FlashAttention 不是算力加速器,它在昇腾NPU上做的是“偷懒“的数学

第一次跑Llama 3 70B推理的时候,序列长度拉到8192就OOM了。查了一圈发现不是模型权重太大——权重本身才14GB——吃显存的是注意力机制的中间矩阵。每个transformer层都要存一个N×N的注意力分数矩阵,12层叠起来,光这个中间结果就占了好几个GB。FlashAttention解决的正是这个问题。这个区分很重要。FlashAttention不是"算得更快"——昇腾NPU的Cube

文章图片
#python#开发语言
用Ascend C写一个MoE融合算子:从分散计算到流水线执行

MoE(Mixture of Experts)是大模型里常用的架构,Llama 3、Mixtral、DeepSeek都在用。它的计算流程看起来不复杂,但如果每个步骤单独调用算子,中间结果来回搬运,性能会非常差。这篇文章会拆解ops-transformer仓库里的MoE融合算子,看它是怎么把routing、gating、expert计算、结果聚合串成一条流水线的。我会把关键Ascend C代码展开讲

文章图片
#c语言#开发语言
    共 37 条
  • 1
  • 2
  • 3
  • 4
  • 请选择