MegEngine 正式支持 XLA 啦!

XLA(Accelerated Linear Algebra)是 Google 提出的一个神经网络编译器,可以用于加速 AI 模型的训练和推理。MegEngine 1.13.1 中也已经支持了 XLA,在训练模型时可以选择开启此项功能,不同的模型可以获得 10%~80% 不等的速度提升。

主要的目标场景

MegEngine 现在是动态执行的,即 python 中每一个 mge.functional 的调用都对应着底层 gpu 上的一次 kernel 执行。这种模式的好处在于实际的执行方式与代码逻辑一致,所见即所得,非常的灵活;不过其问题是难以优化,性能可能不是最优。

而 XLA 采取静态执行的方式,会将模型计算过程表达成一张静态计算图,称为 "HLO" (High-Level Optimized)。HLO 中包含计算图的相关操作,张量的数据流程和形状等信息。XLA 随后会对 HLO 进行一系列的优化,并最终生成一个更优的计算图,从而更快的完成计算。而 XLA 的局限性就在于不够灵活,对于 Tensor Shape 改变或者控制流等信息无法很好的表达。

现在 MegEngine 中已经支持了 XLA,模型训练中一些比较静态的场景,我们可以使用 XLA 来进行加速,从而缩短整个训练过程的时间。

使用方法与效果

在使用 MegEngine 进行训练时,可以通过对原来的训练函数增加 xla_trace/partial_trace 装饰器来启用 XLA 编译优化。

当整个模型是完全静态时,我们可以使用 xla_trace 将整张网络表达成一张静态图,然后交由 XLA 做后续的优化编译,后续的执行过程将执行这张优化后的计算图提升速度。

而如果我们模型中有一些动态性,比如训练过程中一些 Tensor Shape 会发生变化,亦或者是存在控制流,我们可以使用 partial_trace,将网络中静态的部分 trace 成一些子图并分别交给 XLA 进行编译优化,而网络中其他部分仍然保持动态执行,同时保证性能与灵活性。

下面展示了在 MegEngine 中,XLA 功能开启前后,主流的神经网络模型性能变化。其中蓝色为 XLA 开启之前的训练速度,橙色为 XLA 开启之后的训练速度。在开启 XLA 后,大部分模型的性能可以获得 10%~40% 的提升,最多可以超过 80%。

关于 xla 的更多信息及具体的使用方法可以参考 www.megengine.org.cn/doc/stable/...

更多 MegEngine 信息获取,您可以:查看文档、和 GitHub 项目,或加入 MegEngine 用户交流 QQ 群:1029741705。欢迎参与 MegEngine 社区贡献,成为 Awesome MegEngineer,荣誉证书、定制礼品享不停。

相关推荐
宝贝儿好8 天前
【LLM】第二章:HuggingFace入门学习
人工智能·深度学习·神经网络·学习·算法·自然语言处理
神仙别闹8 天前
基于C++ 实现 BP 神经网络
开发语言·c++·神经网络
我登哥MVP8 天前
NeuSO揭秘:用神经网络玩转图数据库子图查询优化
数据库·人工智能·神经网络·图数据库
DXM05218 天前
第14期|高阶分割模型:Transformer/SegFormer遥感应用
人工智能·python·神经网络·算法·计算机视觉·cnn·ageo
装不满的克莱因瓶9 天前
掌握3D CNN模型结构——从时空特征建模到视频理解与医学影像核心架构
人工智能·pytorch·python·深度学习·神经网络·3d·cnn
小龙报9 天前
用ChatGPT 5.5构建个人写作工作流:从大纲、初稿到风格润色的提示词链
人工智能·神经网络·低代码·自然语言处理·chatgpt·gpt-3·知识图谱
极光代码工作室9 天前
基于深度学习的手写数字识别系统
人工智能·python·深度学习·神经网络·机器学习
weixin_550083159 天前
全量的记忆压缩与意义保存
人工智能·深度学习·神经网络·transformer·agi
湘美书院--湘美谈教育10 天前
湘美谈教育湘美书院考古教育系列:湖湘一万年序列整理研究
大数据·人工智能·深度学习·神经网络·机器学习
m0_图灵灵10 天前
吴恩达《深度学习》之看懂神经网络的“底层细胞”:逻辑回归
深度学习·神经网络·逻辑回归