当前位置: 首页 > news >正文

CANN/catlass FlashAttention推理

FlashAttention Infer Example Readme

【免费下载链接】catlass本项目是CANN的算子模板库,提供NPU上高性能矩阵乘及其相关融合类算子模板样例。项目地址: https://gitcode.com/cann/catlass

代码组织

├── 49_ascend950_flash_attention_infer │ ├── CMakeLists.txt # CMake编译文件 │ ├── gen_data.py # 数据生成脚本 │ ├── fai_kernel_utils.h # Kernel辅助文件 │ ├── tiling_data_def.h # Tiling数据结构定义 │ ├── fai.cpp # 主程序入口 │ ├── fai_kernel.h # Kernel实现 │ ├── fai_tiling.h # Tiling计算实现 │ └── README.md

使用示例

  • 获取代码之后编译相应的算子可执行文件,可参考quickstart

  • 接下来,先执行gen_data.py,生成测试样例,测试用例需要从命令行输入, 执行该命令后会在当前路径下生成data目录,包含算子的输入数据和用于精度验证的golden数据。

  • 然后执行算子,这里要注意的是执行算子的输入shape和上面第一步生成数据的shape一致。

以下是一个完整的shell脚本示例

batch=1 # batch大小 qSeqlen=177 # query序列长度 kvSeqlen=512 # key/value序列长度 numHeads=1 # query head数量 kvHeads=1 # key/value head数量 headSize=128 # embeddingSize isVariedLen=0 # 是否使用变长序列,当前仅支持0 maskType=1 # mask类型,0表示无mask,1表示使用mask dtype="half" # 数据类型,支持"half"或"bf16" cacheMode=1 # 缓存模式,0表示非Paged Attention,1表示Paged Attention device=0 function build() { rm -rf build rm -rf output bash scripts/build.sh 49_ascend950_flash_attention_infer -DCATLASS_ARCH=3510 } function gen_data() { python3 examples/49_ascend950_flash_attention_infer/gen_data.py $batch $qSeqlen $kvSeqlen $numHeads $kvHeads $headSize $isVariedLen $maskType $cacheMode "$dtype" echo "Data gen finished" } function run_kernel() { echo 'Case: B=' $batch ' qS=' $qSeqlen ' kvS=' $kvSeqlen ' qN=' $numHeads ' kvN=' $kvHeads ' D=' $headSize ' mask=' $maskType cd output/bin/ ./49_ascend950_flash_attention_infer $batch $qSeqlen $kvSeqlen $numHeads $kvHeads $headSize $isVariedLen $maskType $cacheMode --device $device --dtype $dtype } build gen_data run_kernel

执行结果如下,说明精度比对成功。

Compare success.

【免费下载链接】catlass本项目是CANN的算子模板库,提供NPU上高性能矩阵乘及其相关融合类算子模板样例。项目地址: https://gitcode.com/cann/catlass

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

http://www.jsqmd.com/news/784606/

相关文章:

  • 2026人工草坪企业选型指南,采购不踩坑 - 深度智识库
  • StarRocks MCP Server实战:AI助手与数据库的无缝对话
  • 全球高价值公开数据源全景指南:从专利到遥感,数据科学家的实战地图
  • FLUX.1-Krea-Extracted-LoRA效果展示:丝绸面料光泽与褶皱物理模拟
  • Illustrator脚本开发入门:从零写一个‘日期+序列’的防伪码生成器
  • 大模型参数规模与性能的非线性关系:从规模迷信到精准设计
  • PostgreSQL中UPSERT操作的并发冲突与数据一致性保障策略
  • CANN社区组织信息配置指南
  • CANN/tensorflow HCCL发送API
  • 基于Electron构建开发者专属浏览器:集成调试、终端与源码映射
  • 2026年湖南数控机床设计与非标机床研发外协服务深度指南 - 年度推荐企业名录
  • 无需复杂SDK,使用curl命令直接测试Taotoken大模型API连通性
  • 新手教程使用Python和OpenAI兼容SDK五分钟接入Taotoken大模型服务
  • AI的“水足迹”:数据中心冷却与锂矿开采背后的环境伦理挑战
  • AI赋能人才管理:从数据画像到个性化发展路径的实践
  • Orangutan算法:仿生视觉注意力机制在计算机视觉中的应用
  • Mind-Brush:为AI绘画装上“外脑”,实现基于搜索与推理的智能图像生成
  • 特征缩放在机器学习中的核心作用与实战技巧
  • Real-Anime-Z模型推理优化:利用C++编写高性能图像后处理模块
  • 保定制造工厂短视频营销避坑指南:为什么专业代运营比自己摸索节省成本80% - 年度推荐企业名录
  • 用Android TTS实现‘跟读高亮’?手把手教你适配UtteranceProgressListener各版本回调
  • 2026年南京律师推荐榜:专业能力前五名深度解析 - 速递信息
  • CANN/catlass aclnn接口算子接入示例
  • 人工智能的社会技术定义:从理性主义到人文主义的融合
  • 新能源车维修成本畸高,行业垄断与技术壁垒让车主陷入“买得起修不起“困境
  • 别再死记硬背了!图解贪心算法解决多机调度,一看就懂(从生活例子到代码)
  • CANN/pyasc矩阵乘法迭代方法
  • 如何用XUnity.AutoTranslator实现游戏实时翻译:终极指南
  • 机器学习竞赛中的高效模型选择与优化策略
  • 2026年工业气体计量深度评测:3家气体涡轮流量计厂家对比 - 速递信息