-
cmake
保证 cmake的版本 >= 3.14.0。如果不是,可以参考以下命令安装 3.20.0 版本。如需获取其他版本,请参考这里。
wget https://github.com/Kitware/CMake/releases/download/v3.20.0/cmake-3.20.0-linux-x86_64.tar.gz tar -xzvf cmake-3.20.0-linux-x86_64.tar.gz sudo ln -sf $(pwd)/cmake-3.20.0-linux-x86_64/bin/* /usr/bin/
-
GCC 7+
MMDeploy SDK 使用了 C++17 特性,因此需要安装gcc 7+以上的版本。
# 如果 Ubuntu 版本 < 18.04,需要加入仓库 sudo add-apt-repository ppa:ubuntu-toolchain-r/test sudo apt-get update sudo apt-get install gcc-7 sudo apt-get install g++-7
名称 | 安装说明 |
---|---|
conda | 请参考官方说明安装 conda。 通过 conda 创建并激活 Python 环境。
|
PyTorch (>=1.8.0) |
安装 PyTorch,要求版本是 torch>=1.8.0。可查看官网获取更多详细的安装教程。请确保 PyTorch 要求的 CUDA 版本和您主机的 CUDA 版本是一致
|
mmcv-full | 参考如下命令安装 mmcv-full。更多安装方式,可查看 mmcv 官网
|
如果您只对模型转换感兴趣,那么可以跳过本章节。
名称 | 安装说明 |
---|---|
OpenCV (>=3.0) |
在 Ubuntu 18.04 及以上版本
|
pplcv | pplcv 是 openPPL 开发的高性能图像处理库。 此依赖项为可选项,只有在 cuda 平台下,才需安装。
|
MMDeploy 的 Model Converter 和 SDK 共享推理引擎。您可以参考下文,选择自己感兴趣的推理引擎安装。
名称 | 安装包 | 安装说明 |
---|---|---|
ONNXRuntime | onnxruntime (>=1.8.1) |
1. 安装 onnxruntime 的 python 包
|
TensorRT |
TensorRT |
1. 登录 NVIDIA 官网,从这里选取并下载 TensorRT tar 包。要保证它和您机器的 CPU 架构以及 CUDA 版本是匹配的。 您可以参考这份指南安装 TensorRT。 1. 这里也有一份 TensorRT 8.2 GA Update 2 在 Linux x86_64 和 CUDA 11.x 下的安装示例,供您参考。首先,点击此处下载 CUDA 11.x TensorRT 8.2.3.0。然后,根据如下命令,安装并配置 TensorRT 以及相关依赖。
|
cuDNN |
1. 从 cuDNN Archive 选择和您环境中 CPU 架构、CUDA 版本以及 TensorRT 版本配套的 cuDNN。以前文 TensorRT 安装说明为例,它需要 cudnn8.2。因此,可以下载 CUDA 11.x cuDNN 8.2 2. 解压压缩包,并设置环境变量
|
|
PPL.NN | ppl.nn |
1. 请参考 ppl.nn 的 安装文档 编译 ppl.nn,并安装 pyppl 2. 将 pplnn 的根目录写入环境变量
|
OpenVINO | openvino | 1. 安装 OpenVINO
|
ncnn | ncnn | 1. 请参考 ncnn的 wiki 编译 ncnn。
编译时,请打开-DNCNN_PYTHON=ON 2. 将 ncnn 的根目录写入环境变量
|
TorchScript | libtorch |
1. Download libtorch from here. Please note that only Pre-cxx11 ABI and version 1.8.1+ on Linux platform are supported by now. For previous versions of libtorch, you can find them in the issue comment. 2. Take Libtorch1.8.1+cu111 as an example. You can install it like this:
|
Ascend | CANN |
1. 按照 官方指引 安装 CANN 工具集. 2. 配置环境
|
注意:
如果您想使上述环境变量永久有效,可以把它们加入~/.bashrc
。以 ONNXRuntime 的环境变量为例,
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
cd /the/root/path/of/MMDeploy
export MMDEPLOY_DIR=$(pwd)
如果您选择了ONNXRuntime,TensorRT,ncnn 和 torchscript 任一种推理后端,您需要编译对应的自定义算子库。
-
ONNXRuntime 自定义算子
cd ${MMDEPLOY_DIR} mkdir -p build && cd build cmake -DCMAKE_CXX_COMPILER=g++-7 -DMMDEPLOY_TARGET_BACKENDS=ort -DONNXRUNTIME_DIR=${ONNXRUNTIME_DIR} .. make -j$(nproc) && make install
-
TensorRT 自定义算子
cd ${MMDEPLOY_DIR} mkdir -p build && cd build cmake -DCMAKE_CXX_COMPILER=g++-7 -DMMDEPLOY_TARGET_BACKENDS=trt -DTENSORRT_DIR=${TENSORRT_DIR} -DCUDNN_DIR=${CUDNN_DIR} .. make -j$(nproc) && make install
-
ncnn 自定义算子
cd ${MMDEPLOY_DIR} mkdir -p build && cd build cmake -DCMAKE_CXX_COMPILER=g++-7 -DMMDEPLOY_TARGET_BACKENDS=ncnn -Dncnn_DIR=${NCNN_DIR}/build/install/lib/cmake/ncnn .. make -j$(nproc) && make install
-
torchscript 自定义算子
cd ${MMDEPLOY_DIR} mkdir -p build && cd build cmake -DMMDEPLOY_TARGET_BACKENDS=torchscript -DTorch_DIR=${Torch_DIR} .. make -j$(nproc) && make install
参考 cmake 选项说明
cd ${MMDEPLOY_DIR}
pip install -e .
注意
- 有些依赖项是可选的。运行
pip install -e .
将进行最小化依赖安装。 如果需安装其他可选依赖项,请执行pip install -r requirements/optional.txt
, 或者pip install -e .[optional]
。其中,[optional]
可以替换为:all
、tests
、build
或optional
。 - cuda10 建议安装补丁包,否则模型运行可能出现 GEMM 相关错误
下文展示2个构建SDK的样例,分别用 ONNXRuntime 和 TensorRT 作为推理引擎。您可以参考它们,激活其他的推理引擎。
-
cpu + ONNXRuntime
cd ${MMDEPLOY_DIR} mkdir -p build && cd build cmake .. \ -DCMAKE_CXX_COMPILER=g++-7 \ -DMMDEPLOY_BUILD_SDK=ON \ -DMMDEPLOY_BUILD_EXAMPLES=ON \ -DMMDEPLOY_BUILD_SDK_PYTHON_API=ON \ -DMMDEPLOY_TARGET_DEVICES=cpu \ -DMMDEPLOY_TARGET_BACKENDS=ort \ -DONNXRUNTIME_DIR=${ONNXRUNTIME_DIR} make -j$(nproc) && make install
-
cuda + TensorRT
cd ${MMDEPLOY_DIR} mkdir -p build && cd build cmake .. \ -DCMAKE_CXX_COMPILER=g++-7 \ -DMMDEPLOY_BUILD_SDK=ON \ -DMMDEPLOY_BUILD_EXAMPLES=ON \ -DMMDEPLOY_BUILD_SDK_PYTHON_API=ON \ -DMMDEPLOY_TARGET_DEVICES="cuda;cpu" \ -DMMDEPLOY_TARGET_BACKENDS=trt \ -Dpplcv_DIR=${PPLCV_DIR}/cuda-build/install/lib/cmake/ppl \ -DTENSORRT_DIR=${TENSORRT_DIR} \ -DCUDNN_DIR=${CUDNN_DIR} make -j$(nproc) && make install
-
pplnn
cd ${MMDEPLOY_DIR} mkdir -p build && cd build cmake .. \ -DCMAKE_CXX_COMPILER=g++-7 \ -DMMDEPLOY_BUILD_SDK=ON \ -DMMDEPLOY_BUILD_EXAMPLES=ON \ -DMMDEPLOY_BUILD_SDK_PYTHON_API=ON \ -DMMDEPLOY_TARGET_DEVICES="cuda;cpu" \ -DMMDEPLOY_TARGET_BACKENDS=pplnn \ -Dpplcv_DIR=${PPLCV_DIR}/cuda-build/cuda-build/install/lib/cmake/ppl \ -Dpplnn_DIR=${PPLNN_DIR}/pplnn-build/install/lib/cmake/ppl make -j$(nproc) && make install