基于 wsl2 配置 mmdeploy 的 openvino 推理环境

官网是有参考文档(https://mmdeploy.readthedocs.io/en/latest/05-supported-backends/openvino.html)的,但是是基于 openvino 2022.3.0 版本,我照着做的时候在模型转换这一步出错,所以我把正确的依赖版本的及操作步骤放上来供参考。

安装 OpenVINO 推理引擎

1. 安装 openvino-runtime python sdk

不要安装官方文档中 2022.3.0 版本,模型转换时会报错:RuntimeError: OpenVINO Model Optimizer is not found or configured improperly(细查是:python -c ‘from openvino._pyopenvino import get_version’ ImportError: /miniconda3/envs/open-mmlab/lib/python3.8/site-packages/openvino/_pyopenvino.cpython-38-x86_64-linux-gnu.so: undefined symbol: _ZN2ov3Any4Base9to_stringEv)。
一般碰到使用第三方库时候未定义的错误提示都首先要考虑版本兼容性问题,所以我放弃了在 2022.3.0 版本的折腾,换成 2023.1.0 版本。

pip install openvino-dev==2023.1.0 -i https://mirrors.aliyun.com/pypi/simple/

2.安装 openvino-runtime

# 由于转换模型失败,所以没有使用官方文档的 2022.3.0 版本
# wget https://storage.openvinotoolkit.org/repositories/openvino/packages/2022.3/linux/l_openvino_toolkit_ubuntu20_2022.3.0.9052.9752fafe8eb_x86_64.tgz
wget https://storage.openvinotoolkit.org/repositories/openvino/packages/2023.1/linux/l_openvino_toolkit_ubuntu20_2023.1.0.12185.47b736f63ed_x86_64.tgz
tar xzf ./l_openvino_toolkit*.tgz
cd l_openvino*
export InferenceEngine_DIR=$pwd/runtime/cmake
bash ./install_dependencies/install_openvino_dependencies.sh

3.配置环境变量

export InferenceEngine_DIR=mmdeploy/openvino/l_openvino_toolkit_ubuntu20_2023.1.0.12185.47b736f63ed_x86_64/runtime/cmake/

4.安装确认,

ldd 输出出现 libopenvino.so.2230 => not found 字样。需要配置环境变量:export LD_LIBRARY_PATH=/mmdeploy/openvino/l_openvino_toolkit_ubuntu20_2023.1.0.12185.47b736f63ed_x86_64/runtime/lib/intel64:$LD_LIBRARY_PATH

ldd /usr/local/lib/libmmdeploy.so
...
        libopenvino.so.2230 => /home/chenghj11/mmdeploy/openvino/l_openvino_toolkit_ubuntu20_2022.3.0.9052.9752fafe8eb_x86_64/runtime/lib/intel64/libopenvino.so.2230 (0x00007f7a4b5dc000)
...

编译 mmdeploy

如需编译 openvino 支持,要修改编译参数: -DMMDEPLOY_TARGET_DEVICES=‘cuda;cpu’ -DMMDEPLOY_TARGET_BACKENDS=“trt;ort;openvino” -DInferenceEngine_DIR=${InferenceEngine_DIR}
一下是同时支持 tensorrt 和 openvino 的 cmake 指令

cmake .. \
    -DCMAKE_INSTALL_PREFIX=${INSTALL_PREFIX} \
    -DCMAKE_CXX_COMPILER=g++-11 \
    -DMMDEPLOY_BUILD_SDK=ON \
    -DMMDEPLOY_BUILD_EXAMPLES=ON \
    -DMMDEPLOY_BUILD_SDK_PYTHON_API=ON \
    -DMMDEPLOY_TARGET_DEVICES="cuda;cpu" \
    -DMMDEPLOY_TARGET_BACKENDS="trt;ort;openvino" \
    -Dpplcv_DIR=${PPLCV_DIR}/cuda-build/install/lib/cmake/ppl \
    -DTENSORRT_DIR=${TENSORRT_DIR} \
    -DCUDNN_DIR=${CUDNN_DIR} \
    -DONNXRUNTIME_DIR=${ONNXRUNTIME_DIR} \
    -DInferenceEngine_DIR=${InferenceEngine_DIR} \
    -DCMAKE_VERBOSE_MAKEFILE=ON

模型转换

(略)

推理性能

硬件平台:32核64G,wsl2-ubuntu_20.04
模型:swin transformer 骨干网的 fasterrcnn 模型。
执行命令:nohup ./build/bin/object_detection cpu /openvino/deploy_result /mnt/d/样本/ 2>&1 > openvino-20241114.log &
实验设计:推理了 17320 张样本,平均耗时 843ms。期间有抖动的情况。

均值           标准差
843.8707703    402.9689183

推理的抖动情况

总结

在大部分量化方案都不支持 transformer 骨干网情况下,且没有 nvidia 的场景中 openvino 也是一个选择之一吧。也不是不能用,别用在太实时的场景中就行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值