作者:
王國強(qiáng) 蘇州嘉樹醫(yī)療科技有限公司 算法工程師
指導(dǎo):
顏國進(jìn) 英特爾邊緣計(jì)算創(chuàng)新大使
1OpenVINO Model Server介紹
OpenVINO Model Server(OVMS)是一個(gè)高性能的模型部署系統(tǒng),使用C++實(shí)現(xiàn),并在Intel架構(gòu)上的部署進(jìn)行了優(yōu)化,使用OpenVINO 進(jìn)行推理,推理服務(wù)通過gPRC或REST API提供,使得部署新算法、AI實(shí)驗(yàn)變得簡單。OVMS可以在Docker容器、裸機(jī)、Kuberntes環(huán)境中運(yùn)行,這里我使用的是Docker容器。
2哪吒開發(fā)板Docker安裝
Ubuntu22.04上的Docker安裝可以參照官方文檔:
https://docs.docker.com/engine/install/
首先安裝依賴:
sudo apt update sudo apt install ca-certificates curl
然后添加Docker的GPG密鑰,如果你的網(wǎng)絡(luò)可以正常訪問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
如果無法正常訪問,就需要換成國內(nèi)鏡像源,這里以阿里源為例:
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
安裝后可以通過以下命令驗(yàn)證是否安裝成功:
sudo docker --version sudo docker run hello-world
3拉取OpenVINOModel Server鏡像
各個(gè)版本的鏡像可以在OpenVINO 的Docker Hub上找到,我拉取了一個(gè)最新的帶有GPU環(huán)境的鏡像:
https://hub.docker.com/r/openvino/model_server/tags
sudo docker pull openvino/model_server:latest-gpu sudo docker images
4準(zhǔn)備模型
首先在哪吒開發(fā)板上新建一個(gè)models文件夾,文件夾的結(jié)構(gòu)如下,這里我在models文件夾下存放了resnet50和Transformer兩個(gè)模型,版本都為1,模型為OpenVINO IR格式。
5啟動(dòng)OpenVINO Model Server容器
在哪吒開發(fā)板上啟動(dòng)帶有iGPU環(huán)境的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
各個(gè)參數(shù)的含義可在官方文檔查看:https://docs.openvino.ai/2024/ovms_docs_parameters.html
容器啟動(dòng)后可以通過以下命令查看容器ID、狀態(tài)信息等。
sudo docker ps
這樣Transformer模型就通過OpenVINO Model Server部署在了哪吒開發(fā)板上。
6請(qǐng)求推理服務(wù)
接下來通過gRPC API訪問推理服務(wù),以python為例,首先安裝ovmsclient包。
pip install ovmsclient
請(qǐng)求推理的代碼如下,這里在局域網(wǎng)的另一臺(tái)機(jī)器上請(qǐng)求哪吒開發(fā)板上的推理服務(wù),10.0.70.164為哪吒開發(fā)板的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')
推理結(jié)果成功返回,平均推理時(shí)間12ms,如果換成更穩(wěn)定的以太網(wǎng)速度應(yīng)該會(huì)更快。
7總結(jié)
以上就是在哪吒開發(fā)板上使用OpenVINO(C++)推理模型,并通過OpenVINO Model Server進(jìn)行模型部署的過程,可以看出OpenVINO的使用還是比較方便、簡潔的,推理速度也很快。
-
英特爾
+關(guān)注
關(guān)注
60文章
9858瀏覽量
171240 -
開發(fā)板
+關(guān)注
關(guān)注
25文章
4886瀏覽量
97019 -
模型
+關(guān)注
關(guān)注
1文章
3105瀏覽量
48642 -
Docker
+關(guān)注
關(guān)注
0文章
452瀏覽量
11792 -
OpenVINO
+關(guān)注
關(guān)注
0文章
83瀏覽量
166
原文標(biāo)題:使用 OpenVINO? Model Server 在哪吒開發(fā)板上部署模型|開發(fā)者實(shí)戰(zhàn)
文章出處:【微信號(hào):英特爾物聯(lián)網(wǎng),微信公眾號(hào):英特爾物聯(lián)網(wǎng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論