实战精选|使用 OpenVINO™ Model Server 在哪吒开发板上部署模型

点击蓝字

关注我们,让开发变得更有趣

作者 | 王国强 苏州嘉树医疗科技有限公司 算法工程师

指导 | 颜国进 英特尔边缘计算创新大使 

OpenVINO™

OpenVINO™ Model Server 介绍

OpenVINO™ Model Server(OVMS)是一个高性能的模型部署系统,使用 C++ 实现,并在 Intel 架构上的部署进行了优化,使用 OpenVINO™ 进行推理,推理服务通过 gPRC 或 REST API 提供,使得部署新算法、AI 实验变得简单。OVMS 可以在 Docker 容器、裸机、Kuberntes 环境中运行,这里我使用的是 Docker 容器。

33609cb2001724d4519e6e07f4324b33.png

2c64b2d3377d22b6f8627792708bc4f8.png

OpenVINO™

哪吒开发板 Docker 安装

Ubuntu22.04上的Docker安装可以参照官方文档:

https://docs.docker.com/engine/install/


首先安装依赖:

sudo apt update
sudo apt install ca-certificates curl

然后添加 Docker 的 GPG 密钥,如果你的网络可以正常访问 Docker 可以通过下面的命令添加 APT 源:

sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && eche"$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update

如果无法正常访问,就需要换成国内镜像源,这里以阿里源为例:

sudo curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | 
sudo apt-key add -sudo add-apt-repository "deb [arch=$(dpkg --print-architecture)] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
sudo apt update

之后就可以通过 apt 安装 Docker,命令如下:

sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

安装后可以通过以下命令验证是否安装成功:

sudo docker --version
sudo docker run hello-world

OpenVINO™

拉取 OpenVINO™ Model Server 镜像

各个版本的镜像可以在 OpenVINO™ 的 Docker Hub 上找到,我拉取了一个最新的带有 GPU 环境的镜像:

https://hub.docker.com/r/openvino/model_server/tags

sudo docker pull openvino/model_server:latest-gpu
sudo docker images

dcd34e955d20cb757a2bb8acf334daf0.png

OpenVINO™

准备模型

首先在哪吒开发板上新建一个 models 文件夹,文件夹的结构如下,这里我在 models 文件夹下存放了 resnet50 和 Transformer 两个模型,版本都为 1,模型为 OpenVINO™ IR 格式。

86cd2204a663bfad54c36860a4b1ae44.png

OpenVINO™

启动 OpenVINO™ Model Server 容器

在哪吒开发板上启动带有 iGPU 环境的 OpenVINO™ Model Server 容器命令如下:

sudo docker run -it --device=/dev/dri --group-add=$(stat -c "%g" /dev/dri/render* | head -n 1) -d -u $(id -u) -v $(pwd)/models:/models -p 9000:9000 openvino/model_server:latest-gpu --model_name Transformer --model_path /models/Transformer --port 9000 --target_device GPU

各个参数的含义可在官方文档查看:

https://docs.openvino.ai/2024/ovms_docs_parameters.html

容器启动后可以通过以下命令查看容器ID、状态信息等。

sudo docker ps

e11b4875e461ce8a48dcb65e56a50322.png

这样 Transformer 模型就通过 OpenVINO™ Model Server 部署在了哪吒开发板上。

OpenVINO™

请求推理服务

接下来通过 gRPC API 访问推理服务,以 python 为例,首先安装 ovmsclient 包。

pip install ovmsclient

请求推理的代码如下,这里在局域网的另一台机器上请求哪吒开发板上的推理服务,10.0.70.164为哪吒开发板的 ip 地址。

import os
import time
import numpy as np
import pandas as pd
from ovmsclient import make_grpc_client


client = make_grpc_client("10.0.70.164:9000")


sum_time = 0
root_dir = './data/'
filelist = os.listdir(root_dir)
for file in filelist:
    start_time = time.perf_counter()    
    sample = pd.read_csv(root_dir + file)['ForceValue'].values    
    inputs = sample.reshape(1, -1).astype(np.float32)
    
    output = client.predict({"input": inputs}, "Transformer")    
    end_time = time.perf_counter()    
    sum_time += end_time - start_time    
    result_index = np.argmax(output[0], axis=0)    
    print('Infer results: ', result_index, '\nInfer time: ', (end_time - start_time) * 1000, 'ms')
print('Average time: ', sum_time / len(filelist) * 1000, 'ms')

0fc16f1b1d52d288769b7f8cd259ef60.png

推理结果成功返回,平均推理时间 12ms,如果换成更稳定的以太网速度应该会更快。

OpenVINO™

总结

以上就是在哪吒开发板上使用 OpenVINO(C++) 推理模型,并通过 OpenVINO™ Model Server 进行模型部署的过程,可以看出 OpenVINO™ 的使用还是比较方便、简洁的,推理速度也很快。

OpenVINO™

---------------------------------------

*OpenVINO and the OpenVINO logo are trademarks of Intel Corporation or its subsidiaries.

-----------------------------

 OpenVINO 中文社区 

微信号 : openvinodev

B站:OpenVINO中文社区

“开放、开源、共创”

致力于通过定期举办线上与线下的沙龙、动手实践及开发者交流大会等活动,促进人工智能开发者之间的交流学习。

○ 点击 “ 在看 ”,让更多人看见

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值