💾TVM论文笔记
type
status
date
slug
summary
tags
category
icon
password
AI summary
😀总体框架
- DL Framework 导出计算图 给到 tvm
- tvm 进行graph level的优化
- op fuse
- constant folding
- static memory planning
- data layout transformation
图优化

op fuse
data layout transformation
首先依据硬件的要求,为特定的op的input/output设置指定的layout, 然后在不兼容的layout之间插入layout transform.
Operator codegen
tensor expression
- output shape + how each element is computed

schedule primitives
Cooperation Data Fetching
An alternative to the shared-nothing approach is to fetch data cooperatively

Tensorization

- 逻辑上分离tensor-intrinsic和hardware-intrinsic
- macro kernel: 用hardware-intrinsic实现的, 最小规模的任务, 包含:
- 语义, 依然用tensor expression表达
- lowering规则, 看例子是用一个函数定义, 函数
- tensoize: 将一个大的computation decompose到对应的macro kernel
Latency Hidding
- overlap memory op and compute
- CPU/GPU : 硬件通过在多个wrap中调度切换隐式实现.
- TPU: 采用 decoupled access-execute (DAE)结构, mem op 和 compute的overlap需要有软件显式完成.

对于TPU, 具体流程:
1. 编程依然按照多线程编写
2. 针对每个线程, 添加barrier, 保证依赖
3. interleave 多个线程的指令, 恢复成一个指令流

AutoMating Optimization
搜索空间巨大, 解决方案:
automated scheduler optimizer = ML cost model + scheduler expoler
定义搜索空间 - schedule space specification
- 通过 开发者通过 schedule template specification API来声明可调参数, 这需要kernel开发者的先验知识
- generic master template 自动生成可调参数
自动生成是怎么实现的? 效果怎么样?
ML Based Cost Model

- Blackbox auto-tuning: 不看硬件, 暴力大量尝试cfg, 看实际结果来选
- Predefined cost model: 依据硬件, 预定义一个cost model
- ML based cost model: 用黑盒硬件, 预训练一个ml based cost model.
Design ML Model
- 需要在 quality / speed 之间做平衡
- gradient tree boosting model
Schedule Exploer
暴力跑所有的来选, 搜索空间太大, 开销大. 因此选择 并行模拟退火算法
多机协作搜索
让搜索快点
小结
功能定位: 计算图 => 等效的多个kernel实现
优化分为: 图优化 + kernel自动搜索生成
图优化:
- op fuse
- data layout transformation kernel自动生成: cost model + Schedule template + Scheduler Expoler , 三者分别用到的技术:
- ML based cost model
- tensor expression 自动/手动 定义大量可调参数 + hardware aware primitives
- 并行模拟退火
Prev
Ansor论文笔记
Next
Cuda Reduce优化笔记
Loading...