logo
publist
写文章

简介

该用户还未填写简介

擅长的技术栈

可提供的服务

暂无可提供的服务

调用 flash_attention() 时,CANN runtime 在干什么?

FlashAttention 的三个子算子之间有依赖(softmax 依赖 MatMul 的输出,第二个 MatMul 依赖 softmax 的输出),所以这条路径上 fusion 空间有限——但如果 attn_mask 为 None,编译器会在这个边界上尝试把 mask 补零操作吞进融合算子里,省掉一次独立的 kernel 启动。昇腾 NPU 上的 FlashAttention 之所以能跑出那样

文章图片
#深度学习#算法
调用 flash_attention() 时,CANN runtime 在干什么?

FlashAttention 的三个子算子之间有依赖(softmax 依赖 MatMul 的输出,第二个 MatMul 依赖 softmax 的输出),所以这条路径上 fusion 空间有限——但如果 attn_mask 为 None,编译器会在这个边界上尝试把 mask 补零操作吞进融合算子里,省掉一次独立的 kernel 启动。昇腾 NPU 上的 FlashAttention 之所以能跑出那样

文章图片
#深度学习#算法
ops-transformer里的MoE算子——让大模型学会“分工合作“

MoE的核心是"分工合作":每个token只激活一小部分专家,模型容量大但计算量小。向量化路由计算:一次矩阵乘算出所有得分部分排序top-k:不排序整个数组,只找前k大的批量专家计算:把所有专家的计算打包成一个大矩阵乘一句话说清楚:MoE让大模型学会"分工",每个token找最擅长的专家处理,而不是让所有参数都参与。昇腾NPU上用MoE,关键是处理好路由和负载均衡。算子本身ops-transfor

文章图片
#transformer#网络#深度学习
ops-transformer里的MoE算子——让大模型学会“分工合作“

MoE的核心是"分工合作":每个token只激活一小部分专家,模型容量大但计算量小。向量化路由计算:一次矩阵乘算出所有得分部分排序top-k:不排序整个数组,只找前k大的批量专家计算:把所有专家的计算打包成一个大矩阵乘一句话说清楚:MoE让大模型学会"分工",每个token找最擅长的专家处理,而不是让所有参数都参与。昇腾NPU上用MoE,关键是处理好路由和负载均衡。算子本身ops-transfor

文章图片
#transformer#网络#深度学习
ops-transformer里的MoE算子——让大模型学会“分工合作“

MoE的核心是"分工合作":每个token只激活一小部分专家,模型容量大但计算量小。向量化路由计算:一次矩阵乘算出所有得分部分排序top-k:不排序整个数组,只找前k大的批量专家计算:把所有专家的计算打包成一个大矩阵乘一句话说清楚:MoE让大模型学会"分工",每个token找最擅长的专家处理,而不是让所有参数都参与。昇腾NPU上用MoE,关键是处理好路由和负载均衡。算子本身ops-transfor

文章图片
#transformer#网络#深度学习
背单词为什么不背词典:CANN上FlashAttention的分块逻辑

上个月有个实习生问我,为什么昇腾CANN的ops-transformer仓库里,FlashAttention算子比标准实现快那么多。我说你先想一个问题:背四级单词,你是把整本词典摊开从头背,还是一次看一页?他说当然是看一页。我说对了,这就够了。

文章图片
#python#算法
背单词为什么不背词典:CANN上FlashAttention的分块逻辑

上个月有个实习生问我,为什么昇腾CANN的ops-transformer仓库里,FlashAttention算子比标准实现快那么多。我说你先想一个问题:背四级单词,你是把整本词典摊开从头背,还是一次看一页?他说当然是看一页。我说对了,这就够了。

文章图片
#python#算法
到底了