2022/12/07 10:36:03
什么是量化#我们在前期的视频中提到过,随着深度学习的发展,为了达到更好的效果,神经网络的规模越来越大,所需的内存与计算量也就越大,这导致模型部署的难度也随之增加。
所以为了实现大型模型的部署,除了使用高性能的专用处理器外,另一个方式就是进行模型压缩,而量化就是模型压缩的一种方式,使模型实现轻量化并一定程度上提升模型在硬件上的推理效率。
量化的本质其实就是将权重与激活值由 32 位浮点型表示的范围很大的数值映射到由较低位固定点表示的小范围内,例如比较广泛应用的 8 位整形 int8。
那么这样的做法为什么有效呢?除了最直观的降低权重所占的内存外,主要还是跟模型在硬件上的推理过程有关。
为什么要 ...
阅读更多
2022/12/07 10:31:44
TPU-MLIR 的整体架构,就是将原始模型转为处理器无关层的 mlir 模型,经过图优化后再下沉到处理器相关层,然后在处理器相关层里经过一系列的优化操作最终生成能够在 tpu 上运行的二进制模型。
而前端转换在整个架构里面承担的就是初步的模型转换工作,也就是将原始模型转为 Top 层模型,但这个过程并不包含算子优化部分,所以它其实就是照本宣科地按照原模型的结构来生成 MLIR 文件。最终我们会得到一个初始的 mlir 文件以及存放模型权重的 npz 文件。
在 TPU-MLIR 中,整个前端的工作流程其实可以分为前提,输入,初始化 Converter,生成 mlir 文本,输出结果这五个步 ...
阅读更多
2022/12/07 10:27:37
Lowering 的作用#从高级语言过渡到低级的机器码,在 MLIR 中是通过 Lowering(降低)来实现的。
在上期视频中我们提到 MLIR 的 dialect conversion 是指 IR 在不同 dialect 间进行转换的过程,而 lowering 其实就是从 high-level dialect 到 low-level dialect 的 dialect conversion。
以 TPU-MLIR 为例,lowering 在其中扮演的作用就是将处理器无关层的 mlir 模型转换到处理器相关层。
模型的转换其实本质上就是算子的转换,Top 层的算子可以分为 F32 与 INT ...
阅读更多
2022/11/18 10:17:03
在之前的 MLIR 语法介绍视频中有介绍,MLIR 的一大特点就是它提出了 Dialect 的概念,深度学习模型通过在多层 Dialect 的 IR 间进行转换、优化,最终形成能够在硬件上运行的二进制文件,从一个 Dialect 转换到另一个 Dialect 的过程就是 Conversion。
MLIR 中提供了一个 Dialect Conversion 框架来支持这个转换过程,本质上其实就是将一系列在目标 Dialect 上非法的算子转为合法算子。
不同于传统编译器只能进行全转换,MLIR 提供了较为灵活的转换模式,既可以只进行全转换,也可以进行部分转换。
其中 partialConver ...
阅读更多
2022/11/18 10:17:03
It was introduced in the previous MLIR syntax introduction video that one of the characteristics of MLIR is that it proposes the concept of Dialect. The deep learning model is transformed and optimized between the IR of multi-layer Dialect, and finally forms binary files that can run on hardware. Th ...
阅读更多