# Linux-x86_64 下构建方式 - [Linux-x86_64 下构建方式](#linux-x86_64-下构建方式) - [源码安装](#源码安装) - [安装构建和编译工具链](#安装构建和编译工具链) - [安装依赖包](#安装依赖包) - [安装 MMDeploy Converter 依赖](#安装-mmdeploy-converter-依赖) - [安装 MMDeploy SDK 依赖](#安装-mmdeploy-sdk-依赖) - [安装推理引擎](#安装推理引擎) - [编译 MMDeploy](#编译-mmdeploy) - [编译选项说明](#编译选项说明) - [编译安装 Model Converter](#编译安装-model-converter) - [编译自定义算子](#编译自定义算子) - [安装 Model Converter](#安装-model-converter) - [编译SDK](#编译sdk) - [编译 Demo](#编译-demo) ______________________________________________________________________ ## 源码安装 ### 安装构建和编译工具链 - cmake **保证 cmake的版本 >= 3.14.0**。如果不是,可以参考以下命令安装 3.20.0 版本。如需获取其他版本,请参考[这里](https://cmake.org/install)。 ```bash 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+以上的版本。 ```bash # 如果 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 ``` ### 安装依赖包 #### 安装 MMDeploy Converter 依赖
名称 | 安装说明 |
---|---|
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 及以上版本
在 Ubuntu 16.04 中,需要源码安装 OpenCV。您可以参考此处.
|
pplcv | pplcv 是 openPPL 开发的高性能图像处理库。 此依赖项为可选项,只有在 cuda 平台下,才需安装。而且,目前必须使用 v0.6.2,且需要使用 git clone 的方式下载源码并编译安装
|
名称 | 安装包 | 安装说明 |
---|---|---|
ONNXRuntime | onnxruntime (>=1.8.1) |
1. 安装 onnxruntime 的 python 包
2. 从这里下载 onnxruntime 的预编译包。参考如下命令,解压压缩包并设置环境变量
|
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
2. 可选. 如果您想在 MMDeploy SDK 中使用 OpenVINO,请根据指南安装并配置它
|
ncnn | ncnn | 1. 请参考 ncnn的 wiki 编译 ncnn。
编译时,请打开-DNCNN_PYTHON=ON 2. 将 ncnn 的根目录写入环境变量
3. 安装 pyncnn
|
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:
|
~/.bashrc
。以 ONNXRuntime 的环境变量为例,
```bash
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
```
### 编译 MMDeploy
```bash
cd /the/root/path/of/MMDeploy
export MMDEPLOY_DIR=$(pwd)
```
#### 编译选项说明
编译选项 | 取值范围 | 缺省值 | 说明 |
---|---|---|---|
MMDEPLOY_BUILD_SDK | {ON, OFF} | OFF | MMDeploy SDK 编译开关 |
MMDEPLOY_BUILD_SDK_PYTHON_API | {ON, OFF} | OFF | MMDeploy SDK python package的编译开关 |
MMDEPLOY_BUILD_TEST | {ON, OFF} | OFF | MMDeploy SDK 的单元测试程序编译开关 |
MMDEPLOY_TARGET_DEVICES | {"cpu", "cuda"} | cpu | 设置目标设备。当有多个设备时,设备名称之间使用分号隔开。 比如,-DMMDEPLOY_TARGET_DEVICES="cpu;cuda" |
MMDEPLOY_TARGET_BACKENDS | {"trt", "ort", "pplnn", "ncnn", "openvino", "torchscript"} | N/A | 默认情况下,SDK不设置任何后端, 因为它与应用场景高度相关。 当选择多个后端时, 中间使用分号隔开。比如,
构建时,几乎每个后端,都需传入一些路径变量,用来查找依赖包。1. trt: 表示 TensorRT。需要设置 TENSORRT_DIR 和 CUDNN_DIR 。
2. ort: 表示 ONNXRuntime。需要设置 ONNXRUNTIME_DIR
3. pplnn: 表示 PPL.NN。需要设置 pplnn_DIR
4. ncnn: 表示 ncnn。需要设置 ncnn_DIR
5. openvino: 表示 OpenVINO。需要设置 InferenceEngine_DIR
6. torchscript: TorchScript. 需要设置Torch_DIR
目前,模型转换支持 torchscript,但 SDK 尚不支持
|
MMDEPLOY_CODEBASES | {"mmcls", "mmdet", "mmseg", "mmedit", "mmocr", "all"} | all | 用来设置 SDK 后处理组件,加载 OpenMMLab 算法仓库的后处理功能。如果选择多个 codebase,中间使用分号隔开。比如,-DMMDEPLOY_CODEBASES="mmcls;mmdet" 。也可以通过 -DMMDEPLOY_CODEBASES=all 方式,加载所有 codebase。 |
MMDEPLOY_SHARED_LIBS | {ON, OFF} | ON | MMDeploy SDK 的动态库的编译开关。设置 OFF 时,编译静态库 |