Project Icon

mirage

多层次张量程序超优化器提升DNN性能

作为一款先进的张量代数超优化器,Mirage在深度神经网络(DNN)性能优化领域展现出独特优势。通过在GPU计算层次结构中实现多层次联合优化,该工具能够自动发现并生成高效的张量程序。Mirage不仅可以识别和验证复杂的优化策略,还能通过搜索等效程序空间来开发出性能卓越的自定义内核。这一技术在各类DNN应用中表现出色,如LLAMA-3-70B模型中的组查询注意力机制和低秩适配器优化,生成的CUDA内核性能显著优于传统手动优化方法。

Mirage:一个多层次的张量代数超级优化器

Mirage是一个张量代数超级优化器,可以自动发现深度神经网络的高度优化的张量程序。Mirage自动识别和验证复杂的优化,其中许多需要在GPU计算层次结构的内核、线程块和线程级别进行联合优化。对于输入的深度神经网络,Mirage搜索与给定深度神经网络在功能上等效的潜在张量程序空间,以发现高度优化的候选程序。这种方法使Mirage能够找到优于现有专家设计的新定制内核。

安装

尝试Mirage的最快方法是通过我们预构建的docker镜像。您也可以从源代码安装Mirage

快速入门

作为一个张量代数超级优化器,Mirage可用于优化任意深度神经网络。我们使用两个示例来展示如何使用Mirage自动生成LLAMA-3-70B中的组查询注意力(GQA)和低秩适配器(LoRA)的CUDA内核。这些由Mirage生成的内核性能优于现有的手动优化内核。

超级优化组查询注意力(GQA)

以下代码片段展示了如何使用Mirage为LLAMA-3-70B中的组查询注意力(GQA)自动生成高度优化的CUDA程序。我们假设模型以半精度服务,并在4个GPU上进行张量模型并行化以适应GPU设备内存。因此,GQA算子计算8个查询头和2个键值头的注意力。

首先,我们定义GQA的计算图,它接受三个输入张量QKV,并生成一个包含注意力结果的输出张量O

import mirage as mi
graph = mi.new_graph()
Q = graph.new_input(dims=(2, 256, 64), dtype=mi.float16)
K = graph.new_input(dims=(2, 64, 4096), dtype=mi.float16)
V = graph.new_input(dims=(2, 4096, 64), dtype=mi.float16)
A = graph.matmul(Q, K)
E = graph.exp(A)
S = graph.reduction(E, 2)
D = graph.div(E, S)
O = graph.matmul(D, V)

其次,我们将使用mi.superoptimize来超级优化GQA。Mirage将自动搜索与输入图在功能上等效的潜在mugraph空间,以发现高度优化的CUDA程序。MuGraph是Mirage中的一种新的多层次图表示,它在GPU计算层次结构的内核、线程块和线程级别指定计算。Mirage可以自动找到代表当今专家设计的GPU优化(如FlashAttention、FlashDecoding和FlashInfer)的mugraph。此外,Mirage还发现了其他在某些情况下优于这些专家设计实现的mugraph。

new_graphs = mi.superoptimize(graph, griddims=[(2, 16, 1), (2, 16, 4)])

搜索由几个参数配置,其中griddims是您可能需要为您的问题规模重置的参数。这些参数的默认值是为多头、多查询和组查询注意力量身定制的。您可以更新它们以超级优化其他神经网络架构,如低秩适配器、专家混合等。这些参数的更详细定义可在我们的论文中找到。

  • griddims:指定内核中可能的线程块数量。默认值(对于每个GPU有16个头的多头注意力):(16, 1, 1), (16, 2, 1), (16, 4, 1)
  • blockdims:指定线程块内可能的线程数量。默认值:(128, 1, 1)
  • imaps:输入张量的数据维度与griddims之间的潜在映射。默认值(适用于所有注意力变体):(0, -1, -1), (0, 1, -1), (0, 2, -1), (0, -1, 1)。请注意,正数表示输入张量沿该网格维度分区,而-1表示输入张量复制(详见论文)。
  • omaps:输出张量的数据维度与griddims之间的潜在映射。默认值(适用于所有注意力变体):(0, -1, -1), (0, 1, -1), (0, 2, -1), (0, 2, 1)]。语义与imaps类似。
  • fmaps:输入张量的数据维度与线程块的for循环维度之间的潜在映射。默认值:-1, 1, 2。与imaps类似,正数表示输入张量分区-1表示张量复制
  • franges:搜索过程中考虑的可能for循环范围。默认值:1, 4, 8, 16

除了取决于问题规模的griddims外,其他参数的默认值足以发现FlashAttn、FlashDecoding和许多其他为注意力设计的专家实现。

mi.superoptimize函数返回Mirage发现的mugraph列表,这些mugraph在功能上等同于输入程序,并代表其不同的实现。Mirage使用概率等效性验证机制来确保所有发现的mugraph与输入等效。graph.generate_triton_program为每个mugraph生成一个Triton程序。

for i, mugraph in enumerate(new_graphs):
    mugraph.generate_triton_program("generated_program_{}.py".format(i))

上述搜索过程大约需要4小时,并发现69个用于实现GQA的潜在张量程序。为了绕过搜索并直接检查生成的程序,我们可以从搜索的先前检查点开始,运行

python demo/demo_group_query_attention_spec_decode.py --checkpoint demo/checkpoint_group_query_attn_spec_decode.json

该程序输出69个保存在demo文件夹中的Triton程序。这些程序在NVIDIA A100 GPU上的性能如下所示。请注意,一些生成的程序在线程块内执行小矩阵乘法。这些程序无法直接被当前的Triton编译器支持,因为它要求矩阵乘法的所有维度必须至少为16。Mirage发现的最佳程序比FlashDecoding快2倍,比FlashInfer快1.5倍。

Group Query Attention SpecDecode

引用

描述Mirage技术的论文可在arxiv上获取。请如下引用Mirage:

@misc{wu2024mirage,
      title={A Multi-Level Superoptimizer for Tensor Programs}, 
      author={Mengdi Wu and Xinhao Cheng and Oded Padon and Zhihao Jia},
      eprint={2405.05751},
      archivePrefix={arXiv},
      year={2024},
}

许可证

Mirage使用Apache License 2.0。

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

白日梦AI

白日梦AI提供专注于AI视频生成的多样化功能,包括文生视频、动态画面和形象生成等,帮助用户快速上手,创造专业级内容。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

讯飞绘镜

讯飞绘镜是一个支持从创意到完整视频创作的智能平台,用户可以快速生成视频素材并创作独特的音乐视频和故事。平台提供多样化的主题和精选作品,帮助用户探索创意灵感。

Project Cover

讯飞文书

讯飞文书依托讯飞星火大模型,为文书写作者提供从素材筹备到稿件撰写及审稿的全程支持。通过录音智记和以稿写稿等功能,满足事务性工作的高频需求,帮助撰稿人节省精力,提高效率,优化工作与生活。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号