sailist / mini-mlir

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

mini-mlir

第二版

【版本改动】

  • 将所有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的难以量化的奇异值是直接写死不做的,这点需要改进,不太优雅

how to compile the project

cd /workspace
git clone https://github.com/chuxiaoyi2018/mini-mlir.git --depth 1
cd mini-mlir/mini-mlir
source mini_envsetup.sh
./build.sh

how to run vit example

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

  1. xmake
  2. support lowering to Nvidia/arm
  3. layer group(like dynamic programming)
  4. support to generate calibration table
  5. support to inference in top mlir

About

License:Apache License 2.0


Languages

Language:Python 64.8%Language:C 17.3%Language:C++ 13.8%Language:MLIR 1.7%Language:Shell 0.8%Language:CMake 0.7%Language:LLVM 0.6%Language:Dockerfile 0.3%