【版本改动】
- 将所有tops都改为了top
- 增加了top到tosa的conversion
- 增加了bindings,可以支持top的推理,在python/tools中,为mlir_inference
- top层增加了几个算子
可以通过下载这个来获取release包
https://github.com/chuxiaoyi2018/mini-mlir/releases/tag/mini-mlir
【版本改动】
- 目前可以执行从onnx->top->tosa->llvmir->final.o
- 添加了third_party,直接用tpu-mlir的llvm、oneDNN、cnpy
【版本改动】
- Vit模型在FP32模式下跑通,余弦相似度在0.99,速度为一张图1min 30s
- 添加了Vit中某些算子的INT8量化实现,目前是支持GELU、Matmul、Add、Reshape、Permute等
- 添加了对于量化的DoubleRecipocal DoubleCast DoubleMul等Pattern
目前目录结构还非常不完善臃肿,特别在TopLowering.h这样的地方
目前还无法做到全INT8,softmax、layergroup的INT8需要支持,但是这个支持有难度
不支持layergroup
不支持自己生成校准表,还是从tpumlir里面生成好后拷贝过来
目前对于threshold/max > 10的难以量化的奇异值是直接写死不做的,这点需要改进,不太优雅
cd /workspace
git clone https://github.com/chuxiaoyi2018/mini-mlir.git --depth 1
cd mini-mlir/mini-mlir
source mini_envsetup.sh
./build.sh
cd mini-mlir/examples/vit/script
python3 torch2onnx.py
sh onnx2mlir.sh
sh top2tosa.sh
sh tosa2llvmir.sh
sh llvmir2out.sh
sh cpu_infer.sh
TODO
- xmake
- support lowering to Nvidia/arm
- layer group(like dynamic programming)
- support to generate calibration table
- support to inference in top mlir