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

2024/11/07 17:00
阅读数 25

点击蓝字

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

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

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


OpenVINO™


OpenVINO™ Model Server 介绍


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

OpenVINO™


哪吒开发板 Docker 安装


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

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


首先安装依赖:

sudo apt updatesudo apt install ca-certificates curl


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

sudo install -m 0755 -d /etc/apt/keyringssudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.ascsudo chmod a+r /etc/apt/keyrings/docker.ascecho \  "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/nullsudo 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 --versionsudo 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-gpusudo docker images



OpenVINO™


准备模型


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



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



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


OpenVINO™


请求推理服务


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

pip install ovmsclient


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

import osimport timeimport numpy as npimport pandas as pdfrom ovmsclient import make_grpc_client
client = make_grpc_client("10.0.70.164:9000")
sum_time = 0root_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')  



推理结果成功返回,平均推理时间 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中文社区

“开放、开源、共创”

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



 点击 “ 在看 让更多人看见

本文分享自微信公众号 - OpenVINO 中文社区(openvinodev)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
0 评论
0 收藏
0
分享
返回顶部
顶部