【哪吒开发板试用】(二)在iGPU上使用OpenVINO(C++)推理Transformer模型


上篇文章分享了哪吒开发板的开箱和Ubuntu22.04系统的安装,这篇文章将分享一下我使用哪吒开发板在iGPU上使用OpenVINO(C++)推理Transformer模型的过程。


OpenVINO配置

OpenVINO官网下载linux版本的压缩包到开发板上

将压缩包解压

tar -zxvf l_openvino_toolkit_ubuntu22_2024.3.0.16041.1e3b88e4e3f_x86_64.tgz

进入解压目录,安装依赖

cd l_openvino_toolkit_ubuntu22_2024.3.0.16041.1e3b88e4e3f_x86_64/
sudo -E ./install_dependencies/install_openvino_dependencies.sh

然后配置环境变量

source ./setupvars.sh

至此,OpenVINO就安装好了,因为我当前的项目不需要其他依赖包,如果需要跑Yolo这样的模型就还需要安装OpenCV等其他依赖。

如果需要将模型部署在iGPU上,还需要另外安装OpenCL runtime packages,参见官方说明文档,这里我使用deb包的方式进行安装,按照Github的说明下载7个deb包到开发板上,然后dpkg安装

sudo dpkg -i *.deb
没有依赖报错

 如果有依赖报错,就要先apt安装依赖,然后再dpkg安装7个deb包

sudo apt install ocl-icd-libopencl1

这样在iGPU上进行OpenVINO推理的环境就配置完成了。


Transformer模型推理

下面是我自己项目的一个演示,我的模型是一个基于Tansformer的小模型,训练完生成后onnx中间表示,OpenVINO可以直接使用onnx进行推理,不过转为OpenVINO IR格式的模型推理会快一点,转换命令如下:

ovc model.onnx

转换默认会生成FP16的模型,如果精度有较大损失,可指定compress_to_fp16为False就不会进行FP16量化了。

ovc model.onnx --compress_to_fp16=False

转换后,将生成.xml和.bin两个文件,.xml文件描述了模型的结构,.bin文件包含了模型各层的参数。

我这里使用cmake进行构建,在CMakeLists.txt中指定前面解压的OpenVINO路径

cmake_minimum_required(VERSION 3.10.0)

project(AutoInjector_Transformer)

set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(OpenVino_ROOT /home/up/openvino/l_openvino_toolkit_ubuntu22_2024.3.0.16041.1e3b88e4e3f_x86_64/runtime)
set(OpenVINO_DIR ${OpenVino_ROOT}/cmake)

find_package(OpenVINO REQUIRED)

include_directories(
    ${OpenVino_ROOT}/include
    ${OpenVino_ROOT}/include/openvino
    )

link_directories(
    ${OpenVino_ROOT}/lib
    ${OpenVino_ROOT}/lib/intel64
)


add_executable(AutoInjector_Transformer AutoInjector_Transformer.cpp)
target_link_libraries(AutoInjector_Transformer openvino)

然后通过cmake构建项目

mkdir build && cd build
cmake ..
make

 然后运行生成的可执行文件

./AutoInjector_Transformer

可以看到,在iGPU上的推理速度还是很快的,前几次推理稍慢,8ms,后续基本稳定在4ms,这跟我之前在RTX4060 GPU上用TensorRT推理并没有慢多少。然后我这里修改了代码改为CPU运行,重新编译、运行,结果在CPU上的速度还要更快一点。


以上就是在哪吒开发板上配置OpenVINO环境,在iGPU上推理Transformer模型的过程,相关代码、模型和数据因为涉及保密,不方便开放,因此我在Github上开源了另一个基于OpenVINO部署YoloV8模型对摄像头采集到的图像进行实时目标检测的项目,大家感兴趣的话可以clone下来跑一跑,项目地址:GitHub - EtAiorsW/yolov8-openvino

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值