机器学习编译(Machine Learning Compiler,MLC)

机器学习编译

目的:

总的来说,MLC的目的是实现日渐丰富的前端特性(pytorch/tensorflow)和丰富的后端(GPU/NPU/TPU等硬件设备)之间的自动转换,减少人工适配工作,将整个过程尽可能交给系统完成,这也和传统编译器有相似的作用。

核心:

在MLC中贯穿始终的两个概念是:

  1. 抽象表现形式:将前端表示转为中间表示形式(如计算图、IR),便于进行分析和优化;
  2. 转换:各种表现形式之间的转换,能够有机涵盖各种可能的情况,同时尽可能模块化,解耦各模块,转换是为了进一步优化或映射到底层硬件实现;
    整个MLC的过程其实就是构造抽象表现形式,然后在不同层级的表现形式上进行优化,转换到下一层级表现形式进行进一步的优化,直到最终映射到底层硬件提供的API。

MLC的基本流程:

前端代码—》计算图—》计算图优化(例如融合、调度等)—》IR优化—》映射到库函数调用或代码生成
在底层IR到实际可执行文件之间有两种情况:一种是直接将某个IR映射到对应的实现,另一种是自动代码生成,即自动生成对应的实现。

未来可能的研究方向:

  1. 跨层级优化:如上层能够和底层硬件优化联动,统一调度优化
  2. 不同加速器的自动化解决方案:实现一种自动变换以用上各种硬件的特有加速属性(如tensor core等)

MLC的相关概念:

1. Pure function(纯函数)和side effect:

Pure function:指对输入只读而不写的函数实现,这种函数可以进行水平合并,因为彼此没有依赖关系。
Side effect:指函数会对输入进行修改,不仅读还会写,这样会导致水平节点之间不一

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值