第一篇博客尝试之onnx-mlir

一、什么是onnx?什么是mlir?

深度学习有tensorflow、pytorch等框架,在onnx之前,各自将深度学习模型保存成不同类型的文件。

深度学习模型要落地到实际硬件执行,第一步就是要解析不同类型的文件。

onnx统一了模型的格式,所有框架最终都保存成onnx格式,之后就只解析onnx这一种文件就可以了。

随着深度学习的爆发以及摩尔定律失效,DSA(领域专用处理器架构)看起来是一个方向。最近也是出现了许多新的硬件架构,新的硬件就需要新的编译器。但不同的编译器又有很多相似的处理流程,各自开发就会有很多重复的工作。

其实一个计算流程的表述方法千变万化,都是正确的。针对表述方式A开发了处理流程a,那对于表述方式B,可以先转换到表述方式A,之后可以直接调用处理流程a。mlir就是这样一个框架,表述方式A、B在mlir中都是一种dialect,不同的dialect可以利用mlir的基础设施方便的转换,从而实现处理流程复用。

二、onnx-mlir的大致流程

看过一篇对原论文的解读,讲的比较清楚:

[论文阅读] 《Compiling ONNX Neural Network Models Using MLIR》_onnx-mlir 架构-CSDN博客

根据官网介绍,onnx-mlir编译的目标硬件有:

Current levels of support for the code generation of ONNX operations are listed here for a generic CPU and IBM's Telum integrated AI accelerator.

三、构建与调试

onnx/onnx-mlir: Representation and Reference Lowering of ONNX Models in MLIR Compiler Infrastructure (github.com)

我拉取的commit id是21423ccae0875a16bd33a09268da9e89abf75579

之后有个文件要修改一下,不然构建测试报错

调试的话,我用的是vscode+docker,感觉不错。windows11的话建议wsl,但个人电脑处理器和内存可能不太够用,我swp开了100G才构建成功,不敢再调试了。

四、学习点

①onnx如何转mlir

②onnx dialect、krnl dialect都做了哪些优化,怎么实现的

③mlir原生支持的dialect做了哪些优化,怎么调用的

④llvm后端做了哪些事情,怎么调用的

⑤思考:如果有一个新的硬件,哪些可以调用?哪些需要开发?

  • 11
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值