深度学习编译器普遍采用的设计架构如图所示: 这类编译器的通用设计体系结构主要包含两部分:编译器前端和编译器后端。 中间表示(IR)横贯前端和后端。 通常IR是程序的抽象,用于程序优化。 具体而言,深度学习模型在编译器中转换为多级IR,其中高级IR驻留在前端,而低级IR驻留在后端。 基于高级IR,编译器前端负责独立于硬件...
深度学习编译器中的计算编译 深度学习中的计算需求 计算是每个领域的核心需求,在深度学习大热之前,高性能计算领域也是一样的对计算有需求。传统高性能计算也是以矩阵运算为主的,常见的比如HPCG (HighPerformanceConjugateGradients)、BLAS(BasicLinarAlgebraSubroutine)。而且,就… ...
尽管目前存在大量高性能的深度学习编译器,但是这些编译器均以计算图作为输入,需要由用户将编写的 Python 程序手动转化为计算图。为了避免这种不便性,该团队设计了 MagPy,直接面向用户编写的 Python+PyTorch 程序,自动将其转化为适用于深度学习编译器的计算图表示,从而充分发挥深度学习编译器的优化能力,避免用户使用...
2024 年 7 月,清华大学计算机系 PACMAN 实验室发布开源深度学习编译器MagPy,可一键编译用户使用Python编写的深度学习程序,实现模型的自动加速。 尽管目前存在大量高性能的深度学习编译器,但是这些编译器均以计算图作为输入,需要由用户将编写的 Python 程序手动转化为计算图。为了避免这种不便性,该团队设计了 MagPy,直接...
1. 深度学习编译器的基本概念 深度学习编译器主要负责将深度学习模型从框架(如 TensorFlow 或 PyTorch)转换为可在特定硬件上高效运行的低级代码。这一过程通常包括以下几个步骤: 前端:接收并解析模型定义。 中间表示(IR):转换为中间表示,便于优化。 优化:对中间表示进行各种优化,以提高运行效率。
编译器一般都对每一个 IR 节点提供了多个候选的算子,算子选择目标就是从中选择最优的一个算子作为最终执行在设备上的算子。在机器学习系统中,对前端生成的 IR 图上的各个节点进行拆分和融合,让前端所表示的高层次 IR 逐步转换为可以在硬件设备上执行的低层次 IR(这个过程叫做 lowering)。得到了这种更加贴合硬件的...
主流的深度学习框架都支持自动微分(因为手动计算导数太麻烦了)。自动微分在深度学习中处于非常重要的地位,是整个训练算法的核心组件之一。自动微分通常在编译器前端优化中实现,通过对中间表示的符号解析来生成带有梯度函数的中间表示。 自动微分(Automatic Differentiation,AD)是一种对计算机程序进行高效且准确求导的技术。
与传统编译器不同,深度学习编译器的输入是神经网络模型、输出是可运行在不同平台的表达了输入的神经网络模型的计算过程的可执行程序。但深度学习编译器又与传统编译器类似,都分为前端和后端,前端负责执行硬件无关的优化,后端负责执行硬件相关的优化。对编译器来说,最重要的两个概念是 IR(intermediate representation, ...
BladeDISC是阿里最新开源的基于MLIR的动态shape深度学习编译器。 1 主要特性 多款前端框架支持:TensorFlow,PyTorch 多后端硬件支持:CUDA,ROCM,x86 完备支持动态shape语义编译 支持推理及训练 轻量化API,对用户通用透明 支持插件模式嵌入宿主框架运行,以及独立部署模式 ...