0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

使用OpenVINO Model Server在哪吒开发板上部署模型

英特尔物联网 来源:英特尔物联网 2024-11-01 14:19 次阅读

作者:

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

指导:

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

1OpenVINO Model Server介绍

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

130ceea0-9804-11ef-a511-92fbcf53809c.png131166e2-9804-11ef-a511-92fbcf53809c.png

2哪吒开发板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 && echo "$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

3拉取OpenVINOModel 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
13227112-9804-11ef-a511-92fbcf53809c.png

4准备模型

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

13368fa8-9804-11ef-a511-92fbcf53809c.png

5启动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
13569ec4-9804-11ef-a511-92fbcf53809c.png

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

6请求推理服务

接下来通过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, '
Infer time: ', (end_time - start_time) * 1000, 'ms')
print('Average time: ', sum_time / len(filelist) * 1000, 'ms') 
137e9b04-9804-11ef-a511-92fbcf53809c.png

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

7总结

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

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 英特尔
    +关注

    关注

    60

    文章

    9848

    浏览量

    171186
  • 开发板
    +关注

    关注

    25

    文章

    4871

    浏览量

    96958
  • 模型
    +关注

    关注

    1

    文章

    3097

    浏览量

    48622
  • Docker
    +关注

    关注

    0

    文章

    450

    浏览量

    11784
  • OpenVINO
    +关注

    关注

    0

    文章

    83

    浏览量

    162

原文标题:使用 OpenVINO™ Model Server 在哪吒开发板上部署模型|开发者实战

文章出处:【微信号:英特尔物联网,微信公众号:英特尔物联网】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    LabVIEW+OpenVINO在CPU上部署新冠肺炎检测模型实战(含源码)

    使用LabVIEW+OpenVINO在CPU上部署新冠肺炎CT图像病害分割
    的头像 发表于 03-23 13:34 1679次阅读
    LabVIEW+<b class='flag-5'>OpenVINO</b>在CPU<b class='flag-5'>上部署</b>新冠肺炎检测<b class='flag-5'>模型</b>实战(含源码)

    如何使用OpenVINO C++ API部署FastSAM模型

    FastSAM 模型 | 开发者实战》,在该文章中我们向大家展示了基于 OpenVINO Python API 的基本部署流程。在实际部署
    的头像 发表于 11-17 09:53 813次阅读
    如何使用<b class='flag-5'>OpenVINO</b> C++ API<b class='flag-5'>部署</b>FastSAM<b class='flag-5'>模型</b>

    介绍在STM32cubeIDE上部署AI模型的系列教程

    介绍在STM32cubeIDE上部署AI模型的系列教程,开发板型号STM32H747I-disco,值得一看。MCUAI原文链接:【嵌入式AI开发】篇四|
    发表于 12-14 09:05

    在AI爱克斯开发板上用OpenVINO™加速YOLOv8分类模型

    本系列文章将在 AI 爱克斯开发板上使用 OpenVINO 开发套件依次部署并测评 YOLOv8 的分类模型、目标检测
    的头像 发表于 05-05 11:47 985次阅读
    在AI爱克斯<b class='flag-5'>开发板</b>上用<b class='flag-5'>OpenVINO</b>™加速YOLOv8分类<b class='flag-5'>模型</b>

    在AI爱克斯开发板上用OpenVINO™加速YOLOv8目标检测模型

    《在 AI 爱克斯开发板上用 OpenVINO 加速 YOLOv8 分类模型》介绍了在 AI 爱克斯开发板上使用 OpenVINO
    的头像 发表于 05-12 09:08 1218次阅读
    在AI爱克斯<b class='flag-5'>开发板</b>上用<b class='flag-5'>OpenVINO</b>™加速YOLOv8目标检测<b class='flag-5'>模型</b>

    自训练Pytorch模型使用OpenVINO™优化并部署在AI爱克斯开发板

    本文章将依次介绍如何将 Pytorch 自训练模型经过一系列变换变成 OpenVINO IR 模型形式,而后使用 OpenVINO Python API 对 IR
    的头像 发表于 05-26 10:23 860次阅读
    自训练Pytorch<b class='flag-5'>模型</b>使用<b class='flag-5'>OpenVINO</b>™优化并<b class='flag-5'>部署</b>在AI爱克斯<b class='flag-5'>开发板</b>

    AI爱克斯开发板上使用OpenVINO加速YOLOv8目标检测模型

    《在AI爱克斯开发板上用OpenVINO加速YOLOv8分类模型》介绍了在AI爱克斯开发板上使用OpenVINO
    的头像 发表于 05-26 11:03 1150次阅读
    AI爱克斯<b class='flag-5'>开发板</b>上使用<b class='flag-5'>OpenVINO</b>加速YOLOv8目标检测<b class='flag-5'>模型</b>

    在AI爱克斯开发板上用OpenVINO™加速YOLOv8-seg实例分割模型

    《在 AI 爱克斯开发板上用 OpenVINO 加速 YOLOv8 目标检测模型》介绍了在 AI 爱克斯开发板上使用 OpenVINO
    的头像 发表于 06-05 11:52 927次阅读
    在AI爱克斯<b class='flag-5'>开发板</b>上用<b class='flag-5'>OpenVINO</b>™加速YOLOv8-seg实例分割<b class='flag-5'>模型</b>

    在AI爱克斯开发板上用OpenVINO™加速YOLOv8-seg实例分割模型

    《在 AI 爱克斯开发板上用 OpenVINO 加速 YOLOv8 目标检测模型》介绍了在 AI 爱克斯开发板上使用 OpenVINO
    的头像 发表于 06-30 10:43 835次阅读
    在AI爱克斯<b class='flag-5'>开发板</b>上用<b class='flag-5'>OpenVINO</b>™加速YOLOv8-seg实例分割<b class='flag-5'>模型</b>

    20210520定位图全志D1哪吒开发板

    20210520定位图D1哪吒开发板
    发表于 03-21 09:51 2次下载

    基于OpenVINO C# API部署RT-DETR模型

    Python API 部署 RT-DETR 模型 | 开发者实战》和《基于 OpenVINO C++ API 部署 RT-DETR
    的头像 发表于 11-10 16:59 682次阅读
    基于<b class='flag-5'>OpenVINO</b> C# API<b class='flag-5'>部署</b>RT-DETR<b class='flag-5'>模型</b>

    NNCF压缩与量化YOLOv8模型OpenVINO部署测试

    OpenVINO2023版本衍生出了一个新支持工具包NNCF(Neural Network Compression Framework – 神经网络压缩框架),通过对OpenVINO IR格式模型的压缩与量化更好的提升
    的头像 发表于 11-20 10:46 1407次阅读
    NNCF压缩与量化YOLOv8<b class='flag-5'>模型</b>与<b class='flag-5'>OpenVINO</b><b class='flag-5'>部署</b>测试

    使用爱芯派Pro开发板部署人体姿态估计模型

    在经过之前对于开发板的使用,以及通过几个爱芯派官方给出的示例demo(mobilenet/yolov5)在开发板上的部署之后,笔者也逐渐了解了爱芯派这块开发板利用其官方的推理引擎和pi
    的头像 发表于 01-09 09:50 1312次阅读
    使用爱芯派Pro<b class='flag-5'>开发板</b><b class='flag-5'>部署</b>人体姿态估计<b class='flag-5'>模型</b>

    OpenVINO™ 赋能千元级『哪吒』AI开发套件大语言模型 | 开发者实战

    ,大多数高性能模型通常需要昂贵的计算资源,使得它们的应用受限于有限的环境。本文将探讨在OpenVINO的赋能下,如何在不足千元的AI开发板上部署Stable-Zeph
    的头像 发表于 01-06 08:05 1398次阅读
    <b class='flag-5'>OpenVINO</b>™ 赋能千元级『<b class='flag-5'>哪吒</b>』AI<b class='flag-5'>开发</b>套件大语言<b class='flag-5'>模型</b> | <b class='flag-5'>开发</b>者实战

    使用OpenVINO C++在哪吒开发板上推理Transformer模型

    OpenVINO 是一个开源工具套件,用于对深度学习模型进行优化并在云端、边缘进行部署。它能在诸如生成式人工智能、视频、音频以及语言等各类应用场景中加快深度学习推理的速度,且支持来自 PyTorch
    的头像 发表于 10-12 09:55 215次阅读
    使用<b class='flag-5'>OpenVINO</b> C++<b class='flag-5'>在哪吒</b><b class='flag-5'>开发板</b>上推理Transformer<b class='flag-5'>模型</b>