业界主流AI编译器
作者:微信文章随着深度学习的快速发展,AI编译器在将高级编程语言翻译为机器可执行的指令方面发挥着越来越重要的作用。以下简单介绍业界已有的AI编译器,包括TVM、nGraph、TC、Glow和XLA
TVM
TVM是Apache公司的一个开源的深度学习编译器堆栈,旨在通过对神经网络模型的端到端优化,使其在各种硬件平台(包括 CPU、GPU和专用加速器)上高效运行。
TVM是一个分层的深度学习编译器堆栈,由Relay和TVM两层组成。Relay层负责计算图的全局优化和与各种前端AI框架的接入,通过算子间融合、常量折叠、公共子表达式消除等优化策略,提高计算图的整体性能。Relay设计的目标是能够轻松接入包括TensorFlow、PyTorch、MXNet在内的各种前端框架,实现前端框架之间的无缝切换,并充分利用TVM 的优化能力。另一方面,TVM层专注于具体算子的优化和生成,采用Compute(计算逻辑)和 Schedule(调度策略)分离的设计,Compute负责定义算子的计算逻辑,Schedule负责指定算子的调度和优化策略,包括内存布局、并行化、向量化等。这样的设计允许用户定义新算子的计算逻辑和优化策略,从而生成高效的内核代码,进一步提高执行效率。
TVM参考:
TVM: An Automated End-to-End Optimizing Compiler for Deep Learning
https://arxiv.org/pdf/1802.04799.pdf
https://github.com/apache/tvm
https://tvm.apache.org/docs/index.html
nGraph
nGraph是 Intel开发的一个开源深度学习编译器框架,旨在提供跨平台的高性能计算支持。基本出发点是将多种DL框架部署到Intel设备生态上。
XLA参考:
https://github.com/NervanaSystems/ngraph
TC
TC(Tensor Comprehensions)是一个用于深度学习的编译器工具,由Meta公司开发管理,旨在简化和加速神经网络模型的开发和部署过程。通过一种名为tensor comprehension的领域特定语言(DSL),将神经网络模型表示为张量计算的表达式,然后利用编译技术将这些表达式转换为高效的计算图和执行计划。TC是一种可以构建 just in time(JIT)系统的语言,程序员可通过该语言用
高级编程语言去高效地实现GPU等底层代码。
Glow
Glow是Meta开源的一个强大的深度学习推理框架,不仅具备跨硬件支持和图优化技术,还提供了丰富的运行时性能优化功能,包括内存预分配、异步执行和低精度计算等。这些优化技术可以有效地提高模型的推理速度和吞吐量,使得模型在实际应用中表现出色。此外,Glow还支持灵活的部署选项,可以适用于嵌入式设备、云端服务器和边缘计算等多种场景,满足不同应用需求。在Meta内部,Glow被广泛应用于各种项目中,为用户提供快速、高效的深度学习推理服务,助力各种应用领域的发展和创新。
Glow参考:
Glow: Graph Lowering Compiler for Neural Networks
https://r6.ieee.org/scv-cis//wp-content/uploads/sites/6/2019/03/IEEE_Glow.pdf
https://github.com/pytorch/glow
https://github.com/ybai62868/Glow_example
XLA
XLA(加速线性代数)是一个专门针对特定领域的线性代数编译器,旨在加速AI框架TensorFlow中的计算过程。其核心思想是通过对计算图进行优化和编译,以实现更高效的计算。
XLA参考:
https://github.com/tensorflow/tensorflow/tree/master/tensorflow/compiler/xla
总之,这些AI编译器旨在提高深度学习模型的推理速度和效率,支持多种硬件平台和深度学习框架。
参考:
The Deep Learning Compiler: A Comprehensive Survey
https://arxiv.org/pdf/2002.03794
页:
[1]