摘要:
TPU-MLIR实现技术详细介绍 TPU-MLIR简介 后文假定用户已经处于docker里面的/workspace目录。 编译ONNX模型 以 yolov5s.onnx 为例, 介绍如何编译迁移一个onnx模型至BM1684X TPU平台运行。 该模型来自yolov5的官网: https://git 阅读全文
摘要:
Toy方言源文件下译、MLIRGen、相关编译操作流程技术 生产MLIR表达式 MLIRGen 模块会遍历 AST,递归调用子函数,构建操作,一个方言中可以有很多的 操作,如图5-2所示。 图5-2 toy源文件到下译、MLIRGen模块、Dialect模块、操作模块的流程 运行./toyc-ch2 阅读全文
摘要:
MLIR中ARM指令SVE、SME的实现方式 1. MLIR基本概念 MLIR(Multi-Level Intermediate Representaion,多级中间表示)是一种用来构建可重用与可扩展编译的新方法。MLIR的设计初衷是为了解决软件碎片化问题,改进异构硬件的编译,显著减少构建特定领域编 阅读全文
摘要:
IREE体系结构介绍 基于MLIR的端到端编译器与运行时,可将ML模型下译到统一的IR,该IR可扩展到数据中心,也可扩展到移动与边缘部署。 中间表示执行环境 IREE关键特性 1)标准与基于社区 A)采用Vulkan、SPIR-V、WebGPU等,与OSS社区合作 2)基于编译 A)使用编译器弥合级 阅读全文
摘要:
下图(run_eval待测模型列表及参数)填写更多不同精度评估方式的命令字符串,比如图中已有imagenet分类与coco检测精度计算字符串;下图(run_eval待测模型列表及参数)中model_list_all填写模型名到参数的映射,比如:resnet18_qat的[0,0],其中第1个参数表示 阅读全文
摘要:
张量编译器结构的结构化可重定目标方法 2.1结构化与可重定目标代码生成的框架图与动机 用于数值计算的代码生成方法传统上侧重于优化循环嵌套的性能。相关分析侧重于标量元素,因为循环嵌套的主体通常计算单个元素。这样的分析必须考虑内存依赖性与混叠。这些方法在过去进行了深入研究,并已达到高度成熟。当从像C或F 阅读全文
摘要:
IREE HLO与MLIR编译器 MLIR(Multi-Level Intermediate Representation)是谷歌团队开发的开源编译器框架,提供了一套灵活的软件基础设施,以便规范中间表达式(IR)及其相互之间的转换,建立了一个友好的编译器开发平台,一些比较好的对MLIR框架解读可以参 阅读全文
摘要:
QAT量化感知训练 基本原理 相比训练后量化因为其不是全局最优而导致的精度损失,QAT量化感知训练能做到基于loss优化的全局最优,而尽可能的降低量化精度损失,其基本原理是:在fp32模型训练中就提前引入推理时量化导致的权重与激活的误差,用任务loss在训练集上来优化可学习的权重及量化的缩放与zp值 阅读全文
摘要:
INT8量化分为非对称量化与对称量化。对称量化是非对称量化的一个特例, 通常对称量化的性能会优于非对称量化, 而精度上非对称量化更优。 非对称量化 如上图所示, 非对称量化其实就是把[min,max]范围内的数值定点到[-128, 127]或者[0, 255]区间。 从int8到float的量化公式 阅读全文
摘要:
从LLVM方言到LLVM IR,再到CodeGen 在中使用 toy 语言接入 MLIR,最终转化为 LLVM IR,具体的流程如下: .toy 源文件 —> AST —> MLIRGen(遍历AST生成MLIR表达式) —> Transformation(变形消除冗余) —> 下译 —> LLVM 阅读全文