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

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

3天内不再提示

如何运用OpenVINO打造一个私有的AI运算环境

jf_cVC5iyAO 来源:易心Microbit编程 作者:易心Microbit编程 2022-10-20 16:20 次阅读

OpenVINO强大之处在于整合了当前AI经常应用的情境,像是图片或是影像的对象辨识、语音识别、自然语言与数据推荐系统等等,而透过这个套件的Open Model Zoo可以导入现有多个常用框架的模型,像是Caffe、TensorFlow、MXNet、Kaldi与ONNX,无疑是个现成的参考数据库。

OpenVINO支持现有多个常用框架的模型(Source:Intel

Intel OpenVINO 工具套件包含的项目实在太多,要做到基础入门我想非常快。但如果要真的上手到导入既有的商业项目中,我想还是需要花不少时间。学习Intel OpenVINO 工具集我想是非常值得去投资的,后续对于导入AI应用到升级与维护项目,会非常的容易。

以下的介绍将会以短篇的模式进行,我使用以下的环境去进行学习与测试:

1.硬件

•Rock X Intel(R) Atom(TM) x5-Z8350 1.4GHz CPU. 4Gb RAM 与 128Gb 的SD卡环境

•EFI单板计算机,使用i7-1185G7E 2.8GHz 11代的Intel CPU, 16Gb RAM 与 128Gb SSD.

•2019年Mac book Pro 15吋 i7 2.6GHz CPU, 使用Parallels 设定两个ubuntu VM. 分别设定 2Cores与4 Cores的环境

2. O/S:分别使用ubuntu server20.04 与 ubuntu desktop 20.04 两个版本进行测试。

3. OpenVINO工具包版本: 2021.4

个人接触与学习使用OpenVINO,目地都在于如何将这个工具应用在未来公司的项目上,而选用Ubuntu Linux操作系统,一方面是考虑Open Source 降低入门需要的投资成本,再者也是因为公司内部整体的建置维护环境。如果有需要以Windows操作系统为建置环境,可以再多参考官方的文件。

我自己个人打算在OpenVINO完成三大目标:

1.应用DL Workbench可以选用现有或是自制的模型,透过GUI接口,轻松完成模型的分析与部署工作。

2.使用Nodejs的语言去使用OpenVINO提供的各种资源进行开发。

3.将V7RC上的道路辨识功能,透过OpenVINO的环境,使用Nodejs语言去重现功能。

首部曲– 从DL Workbench开始谈起

在2018年我开始接触AI,是基于想在公司的产品V7RC中导入AI的元素,当时我希望可以透过遥控车上面的镜头传回到手机上,透过手机上的运算资源进行演算,辨识影像中的物体。最早透过同事的协助找到Framework,使用Python进行模型训练,最后产生出的结果去实际应用,效果很差,而且还不知道如何整合到iOSAndroid的APP。

后来Google Cloud的AutoML 提供了一个模型训练很好的环境,训练好的模型可以直接使用Tensorflow Lite SDK整合到iOS与Android的APP中。这上面有个非常重要的关键在于一个好的GUI,让使用者很容易地上手,去进行模型训练,最后导出到自己的应用上。

后来像是Teachable Machine 也提供很好的GUI给使用者,对于入门的使用者来说,也的确够用,但截至目前,我们的工程师还无法将训练成果部署到APP上。

DL Workbench最棒的地方在于可以从多种不同常用的Framework选择自己要汇入的模型,或是汇入自己的模型,进行训练,并且可以选择使用哪个装置进行训练与分析。Dataset的管理也非常容易,很容易让人着迷,愿意多花点时间去尝试那些已经训练好的模型进行比较。

/如果要了解如何安装,可以参考之前的文章。/

而我想分享的是在实际安装过程中遇到的问题排解与疑问,以下使用自问自答方式来进行:

1.DL Workbench是个Application,所以需要Desktop执行吗?

答案是不需要。DL Workbench是一个Web Server,安装好了之后可以透过其他的计算机以访问网站的方式来操作,就跟AutoML或是Teachable Machine一样。多人操作应该也没有问题。我喜欢装在Ubuntu Server上,减少像是Desktop版本还要跑个X Window浪费效能。

2.安装DL Workbench需不需要在机器上面安装OpenVINO套件?

答案是不需要。原本我的理解是一个步骤一个步骤去安装OpenVINO所有的工具套件,Workbench放在最后面,当然就要先装好套件后才可以安装Workbench。但其实Workbench使用Docker Container安装,是不需要先下载与安装工具包。为了方便各位进行测试,我也提供我的安装方式作为参考:

Step 1. Docker执行环境安装:

确认与安装docker环境:如果不确定Docker的版本,可以重新参考官方文件,

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

以下是我安装流程:

A.移除旧版的docker套件:

~$ sudo apt-get remove docker docker-enginedocker.io containerd runc

B.安装docker需要使用到的套件:

~$ sudoapt-get update

~$ sudoapt-get install

apt-transport-https

ca-certificates

curl

gnupg

lsb-release

C.设定apt安装所需要的套件库与环境(以x86环境为例):

~$ echo

"deb [arch=amd64signed-by=/usr/share/keyrings/docker-archive-keyring.gpg]https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee/etc/apt/sources.list.d/docker.list > /dev/nul

D.实际进行安装:

~$ sudoapt-get update

~$ sudoapt-get install docker-ce docker-ce-cli containerd.io

E.安装后,需要将ubuntu的用户加入docker的群组:

~$ sudo usermod -aG docker ${USER}

F.重新注销用户,再次登入,才会将新加入的docker群组生效。或是重新启动也可以。

Step 2. 安装GPU Driver:

建议可以再次安装Intel GPU的Driver,使用DFI 的单板计算机曾经遇到过无法正确安装GPU Driver,导致Workbench无法使用GPU,仅能使用CPU进行训练。安装方次可以参考以下的网址:

https://docs.openvinotoolkit.org/latest/openvino_docs_install_guides_installing_openvino_linux.html#additional-GPU-steps

https://dgpu-docs.intel.com/installation-guides/ubuntu/ubuntu-focal.html

参考安装流程如下:

A.安装必要的套件,并增加apt套件库的信息

~$ sudoapt-get install -y gpg-agent wget

~$ wget-qO - https://repositories.intel.com/graphics/intel-graphics.key | sudo apt-keyadd -

~$ sudoapt-add-repository

'deb[arch=amd64] https://repositories.intel.com/graphics/ubuntu focal main'

B.安装:

~$ sudoapt-get update

~$ sudoapt-get install

intel-opencl-icd

intel-level-zero-gpu level-zero

intel-media-va-driver-non-freelibmfx1

C.选择性安装开发工具包,如果要执行某些API,还是需要安装才会正常运作:

~$ sudoapt-get install

libigc-dev

intel-igc-cm

libigdfcl-dev

libigfxcmrt-dev

level-zero-dev

D. 设定权限:

可以先检查用户是否在render的群组,使用以下命令来检查,列出目前这个用户所拥有的群组:

~$ groups ${USER}

如果这个用户有没有加入render与video的群组,使用以下方法加入:

~$ sudogpasswd -a ${USER} render

~$ sudogpasswd -a ${USER} video

~$newgrp render

~$newgrp video

Step 3. 安装DL Workbench DockerContainer:

有实际用过Docker Container的朋友应该知道,如果没有设定将数据储存在外部空间,只要每次重新开启Container,所有数据将会清空,还原成一开始的“干净”状态。因此除了安装之外,还要确保相关设定与项目都有储存到Server的储存装置上,而不是在Container里面。

参考官网的文件进行安装:

https://docs.openvinotoolkit.org/latest/workbench_docs_Workbench_DG_Persist_Database.html

A. 使用pip安装openvino-workbench套件,这不是下载与安装WorkbenchContainer,可以当作是方便启动的script,简化后面的流程:

~$ python3 -m pip install -Uopenvino-workbench

B.建立一个可以放设定与项目的目录,例如放在自己目录下的openvino-workbench目录:

~$ mkdir -m 777 ~/openvino-workbench

C.执行以下命令启动Workbench:

~$ openvino-workbench --imageopenvino/workbench:2021.4 --assets-directory ~/openvino-workbench --enable-gpu--container-name openvino-workbench

这个命令,我们将Container名称命名为 openvino-workbench,并且指定~/openvino-workbench作为项目与设定储存的目录,另外也启动GPU。如果发生错误,像是找不到/dev/rencer/*的目录等等,就是系统没有正确的设定GPU,可以尝试先吧–enable-gpu拿掉试试看。

完成后,就可以在本机打开Browser连结上这个网站,例如Workbench主机的IP是10.211.55.17,那么就在Browser上面键入:http:// 10.211.55.17:5665

ca10fb96-504e-11ed-a3b6-dac502259ad0.png

3. DL Workbench最吸引我的地方在哪?

看到DL Workbench的接口上,Environment的右边有个Add Remote Target按钮。没错,可以将多台机器的资源统一在这个见面上管理,这样可以将项目切换到不同机器上进行训练与分析。

经过一番努力,测试成功了,真的可以将项目指派到其他机器上面去进行训练,但可惜的是只能在本机进行验证与测试,我想未来的版本应该会解决这个问题。

以下提供安装方式,以及参考网址。

https://docs.openvinotoolkit.org/latest/workbench_docs_Workbench_DG_Setup_Remote_Target.html

Step 1. 在远程主机进行设定,下载并且安装必要套件:

A.安装套件:

~$ sudoapt-get update

~$ sudoapt-get install -y --no-install-recommends

openssh-server

ssh

python3

ython3-distutils

python3-apt

python3-dev

python3-pip

gcc

libgtk-3-0

ffmpeg

~$python3 -m pip install --upgrade pip

B. 更新python3-virtualenvwrapper套件。就个人的经验上我分别在Atom与VM的环境上尝试安装时,会遇到个套件出现问题,导致最后的安装无法完成,避免麻烦在一开始就先完成更新套件。以下是更新方式:

~$ sudo apt removepython3-virtualenvwrapper

~$ sudo apt autoremove

~$ sudo apt purge python3-virtualenv

~$ /usr/bin/python3 -m pip install--force-reinstall virtualenvwrapper

Step 2. 设定ssh远程登录,并取得privatekey

回到安装DL Workbench的机器上,我们需要可以使用ssh直接登入到远程主机的相关权限。设定的过程中我们将会设定一个private key, 这个档案将要使用在Workbench的设定上。以下是相关执行步骤(如果对于ssh非常熟悉的朋友,可以简化这个流程,直接取得ssh登入的private key):

A. 使用ssh-keygen 产生ssh的Key:

~$ ssh-keygen

B.将刚刚产生的public key 复制到远程的主机,可以使用ssh-copy-id命令,使用方法是:

~$ ssh-copy-id louis@192.168.1.100

# 请将louis改成远程可以登入账号,192.68.1.100改成远程的主机

过程中会需要填写登入的密码,请正确的进行填写。

C.验证是否正确,使用ssh登入远程主机,将不再需要填写密码,可以直接登入。

~$ ssh louis@192.168.1.100

如果可以正常登入,就表示完成这个步骤

Step 3. 确认远程主机的用户拥有根权限(SudoPrivileges),不需要输入密码就可以执行sudo的命令。

A.首先简单的确认是否有sudo的权限以及是否不需要输入密码就可以执行sudo,执行以下指令:

~$ sudo ls -la /

B.如果可以顺利列出根目录下所有的档案与目录,表示这个用户已经拥有根权限,并且不需要密码就可以执行。如果显示没有sudo权限,则表示这个用户没有sudo使用权,请使用以下命令,将这个用户加入到sudo群组中:

~$ su

~$ usermod -a -G sudo USERNAME

~$ exit

C. 加入后,请注销再重新登入,并且再次使用sudols -la / 确认目前用户使用已经拥有sudo权限。

D. 如果用户已经拥有sudo权限,但需要填写密码,则使用visudo,将这个用户加入到/etc/sudoers.tmp档案中:

~$ sudo visudo

此时会开启编辑画面,并且显示档案内容,接着将光标移到档案的最后,加入以下权限:

louis ALL=(ALL) NOPASSWD: ALL #请将louis改成这个账户的名称

接着存挡离开,再重新测试这个用户的sudo命令:

~$ sudo ls -la /

此时应该不需要密码就可以执行了。

*特别注意:使用 visudo 编辑并存挡,务必确认正确填写,否则有可能导致系统严重的问题发生。

Step 4:

进入 DL Workbench 设定目前准备进入到DL Workbench设定的步骤,在此之前,必须要先下载id_rsa的私钥到本机来,方便等一下再接口上需要上传这个档案。再次使用ssh登入到安装Workbench的主机上,可以使用vi或是其他编辑器,打开私钥档案,使用以下命令开启:

~$ vi ~/.ssh/id_rsa

ca3cd978-504e-11ed-a3b6-dac502259ad0.png

将会看到以上的编辑画面,可以使用圈选复制,然后在本机新增加一个文本文件,然后贴上刚刚复制的内容,储存成一个文本文件,例如:id_rsa_192.168.0.1.key。

接着,在本机打开Browser,进入Workbench的网站,然后按下Create的按钮,产生一个新的项目:

ca6f07e0-504e-11ed-a3b6-dac502259ad0.png

在Create Project画面上,可以看到Environment的功能,有个Add Remote Target的按钮,按下后开始新增新的远程主机:

caa29998-504e-11ed-a3b6-dac502259ad0.png

这时可以看到Target Machine的列表,第一个显示的就是Workbench内建预设的环境。按下『Add』按钮后,进行新增机器的画面:

caca8d40-504e-11ed-a3b6-dac502259ad0.png

在Add Remote Target窗体中,请填入以下信息:

•Hostname (远程主机IP)

•Port (远程主机ssh port, 除非有手动变更,预设都是22)

•Target Name(自己为这个远程命名)

•User (登入远程主机用的账号)

•Ssh key (就是一开始我们先存下来的私钥文本文件)

以上正确填写后,下方的Save Target将会从灰色变成深红色,按下后,就开始启动安装与设定程序了。

cae65eda-504e-11ed-a3b6-dac502259ad0.png

安装进行中的画面:

cb09da18-504e-11ed-a3b6-dac502259ad0.png

安装中,每个阶段都可以实时显示状态以及正在设定中的项目:

cb371514-504e-11ed-a3b6-dac502259ad0.png

安装完成后,在Target Machines的列表中会清楚出现该设备,如果安装出现问题,也会出现错误信息。

cb596600-504e-11ed-a3b6-dac502259ad0.png

安装中如果出现错误,也会出现在下方的信息中:

cb7979c2-504e-11ed-a3b6-dac502259ad0.png

回到Create Project画面后,下方的Environment,就可以选择远程的主机来进行演算了。

cb96ce3c-504e-11ed-a3b6-dac502259ad0.png

实际简单的测试一下,可以看到远程主机上跑出来的结果,项目列表上可以看到第二列,使用我们刚刚新增的远程主机资源进行演算的结果:

cbd393da-504e-11ed-a3b6-dac502259ad0.png

4.目前有没有什么可以进一步厘清的地方?

截至目前无法正确的设定远程主机使用GPU或是VPU的资源,算是一种遗憾。我想后续应该是有机会可以解决,后续再做更新。

小结

如果各位希望打造一群工作的主机,可以进行选择模型、设定数据集、建立基准到分析与部署,Workbench正好提供了分布式Environment的安装方式,设定起来不难。后续在商业上思考可以如何客户运用OpenVINO打造一个私有的AI运算环境应该不是问题。

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

    关注

    87

    文章

    30272

    浏览量

    268498
  • 数据库
    +关注

    关注

    7

    文章

    3769

    浏览量

    64292
  • 模型
    +关注

    关注

    1

    文章

    3181

    浏览量

    48736
  • Open
    +关注

    关注

    0

    文章

    14

    浏览量

    11063
收藏 人收藏

    评论

    相关推荐

    在Ubuntu上搭建OpenVINO C++程序开发环境

    在应用 Anomalib 和 OpenVINO 实现瑕疵检测的过程中,经常会在 Ubuntu 下训练并部署 AI 模型。笔者直在 Windows 上开发程序,比较喜欢 Visual Studio
    发表于 08-09 09:42 987次阅读
    在Ubuntu上搭建<b class='flag-5'>OpenVINO</b> C++程序开发<b class='flag-5'>环境</b>

    服务器群打造“娱乐云”

    的结果,然后告诉你结果,,,这个时候,你老爸就是云计算,个私有的云就这样诞生。如果你想把云都变成公有的,那么“公有云”就是,天下所有的儿子给天下所有老爸打电话,比如你问你爸1+2+3
    发表于 07-07 21:17

    服务器群打造“娱乐云”

    计算器算出来等于2的结果,然后告诉你结果,,,这个时候,你老爸就是云计算,个私有的云就这样诞生。如果你想把云都变成公有的,那么“公有云”就是,天下所有的儿子给天下所有老爸打电话,比如
    发表于 09-05 09:40

    LabVIEW类 的私有数据问题?

    对于LavVIEW类的私有数据使用,直有问题,想请教下大家。根据我对类的理解,在定义了类,并实例化后,对类中的成员数据进行写操作,然后进行读操作的话,那么这个数据应该反映的是写操
    发表于 02-29 17:55

    如何运用居家环境里既有的线路来连结IPTV?

    为什么不用以太网络和Wi-Fi无线局域网络?如何运用居家环境里既有的线路来连结IPTV?
    发表于 05-26 06:00

    python私有变量和私有方法

    ,就是个私有变量。这样的规则在属性上生效,在方法上也同样适用。如果实例方法,以双下划线开头,那么这个方法就是
    发表于 03-08 16:30

    永久设置OpenVINO trade Windows reg10的工具套件环境变量

    您可以在 Windows® 10 中手动设置OpenVINO环境变量。在 Windows® 10 系统中,转到 >系统和安全>系统>高级系统设置&
    发表于 08-15 07:18

    如何才能在树莓派搭建私有

    首先私有云是什么东西呢?类似于百度云网盘,360云盘等可以把数据上传到服务器的平台,这样在家里就可以搭建个私有云,上传自己喜欢的电影或
    发表于 11-18 17:45 14次下载
    如何才能在树莓派搭建<b class='flag-5'>私有</b>云

    LoRaWAN网关如何配置私有的外置MQTT SERVER

    的MQTTSERVER。 实际部署中,很多用户都会使用自己私有的MQTTSERVER,那么LoRaWAN商业网关如何配置私有的MQTTSERVER呢? 本文将介绍如何在LoRaWAN网关上配置私有的MQTTSERVER
    发表于 06-12 13:56 1623次阅读
    LoRaWAN网关如何配置<b class='flag-5'>私有的</b>外置MQTT SERVER

    公共云与私有云我们应该选择哪一个

    1、什么是私有云? 个私有云,也被称为企业云或内部云,是部署模型,其中资源仅向
    发表于 12-15 17:20 809次阅读

    如何搭建个私有云平台

    智能硬件开发是交叉学科,通常在入门的时候,是以单片机STM32为主,搭建云平台或接入云平台,以此实现智能产品开发和设计。
    发表于 08-04 10:21 6739次阅读

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

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

    OpenVINO™ 赋能 BLIP 实现视觉语言 AI 边缘部署

    通过视觉和语言感知世界。人工智能的长期目标是构建智能体,通过视觉和语言输入来理解世界,并通过自然语言与人类交流。比如,在《几行代码加速StableDiffusion,使用OpenVINO轻松文生
    的头像 发表于 09-04 16:21 665次阅读
    <b class='flag-5'>OpenVINO</b>™ 赋能 BLIP 实现视觉语言 <b class='flag-5'>AI</b> 边缘部署

    如何快速下载OpenVINO Notebooks中的AI大模型

    OpenVINO Notebooks是Jupyter Notebook形式的OpenVINO范例程序大集合,方便开发者快速学习并掌握OpenVINO推理程序,并通过Copy&Paste方式将范例中的关键程序应用到自己的
    的头像 发表于 12-12 14:40 1082次阅读
    如何快速下载<b class='flag-5'>OpenVINO</b> Notebooks中的<b class='flag-5'>AI</b>大模型

    研华携手群联 共同打造边缘运算与工控应用生成式AI平台

    赋能安全可靠&平民化的地端GenAI环境   导读: 4月17日,群联电子(Phison)宣布与研华科技(Advantech)携手合作,共同打造GenAI运算平台。该平台将致力于协助工控应用客户
    发表于 04-26 17:28 235次阅读
    研华携手群联 共同<b class='flag-5'>打造</b>边缘<b class='flag-5'>运算</b>与工控应用生成式<b class='flag-5'>AI</b>平台