lvhan028 e929201827
[Docs] reorganize the documents in English and update the contents based on v0.5.0 status (#531)
* checkout qq group qrcode

* update the cover image

* update build doc

* reorganize chapters

* update readme

* remove index of build on different platforms in readthedocs

* update benchmark

* update get started document in Chinese based on the prebuild package

* update get_started

* re-style benchmark

* update get_started in zh_cn

* update get_started in english

* update get_started in english

* update get_started in english

* update get_started doc

* update according to reviewer comments

* update linker ci

* fix(.github/scripts/check_doc_linker.py): skip code block

* specify PYTHONPATH

* update get_started

* update diagram

* rename some documents

* fix according to reviewer comments

Co-authored-by: tpoisonooo <khj.application@aliyun.com>
2022-06-07 18:05:51 +08:00

2.7 KiB

ONNX Runtime Support

Introduction of ONNX Runtime

ONNX Runtime is a cross-platform inference and training accelerator compatible with many popular ML/DNN frameworks. Check its github for more information.

Installation

Please note that only onnxruntime>=1.8.1 of CPU version on Linux platform is supported by now.

  • Install ONNX Runtime python package
pip install onnxruntime==1.8.1

Build custom ops

Prerequisite

  • Download onnxruntime-linux from ONNX Runtime releases, extract it, expose ONNXRUNTIME_DIR and finally add the lib path to LD_LIBRARY_PATH as below:
wget https://github.com/microsoft/onnxruntime/releases/download/v1.8.1/onnxruntime-linux-x64-1.8.1.tgz

tar -zxvf onnxruntime-linux-x64-1.8.1.tgz
cd onnxruntime-linux-x64-1.8.1
export ONNXRUNTIME_DIR=$(pwd)
export LD_LIBRARY_PATH=$ONNXRUNTIME_DIR/lib:$LD_LIBRARY_PATH

Note:

  • If you want to save onnxruntime env variables to bashrc, you could run

    echo '# set env for onnxruntime' >> ~/.bashrc
    echo "export ONNXRUNTIME_DIR=${ONNXRUNTIME_DIR}" >> ~/.bashrc
    echo 'export LD_LIBRARY_PATH=$ONNXRUNTIME_DIR/lib:$LD_LIBRARY_PATH' >> ~/.bashrc
    source ~/.bashrc
    

Build on Linux

cd ${MMDEPLOY_DIR} # To MMDeploy root directory
mkdir -p build && cd build
cmake -DMMDEPLOY_TARGET_BACKENDS=ort -DONNXRUNTIME_DIR=${ONNXRUNTIME_DIR} ..
make -j$(nproc)

How to convert a model

How to add a new custom op

Reminder

  • The custom operator is not included in supported operator list in ONNX Runtime.
  • The custom operator should be able to be exported to ONNX.

Main procedures

Take custom operator roi_align for example.

  1. Create a roi_align directory in ONNX Runtime source directory ${MMDEPLOY_DIR}/csrc/backend_ops/onnxruntime/
  2. Add header and source file into roi_align directory ${MMDEPLOY_DIR}/csrc/backend_ops/onnxruntime/roi_align/
  3. Add unit test into tests/test_ops/test_ops.py Check here for examples.

Finally, welcome to send us PR of adding custom operators for ONNX Runtime in MMDeploy. 🤓

References