电子说
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进行模型训练,最后产生出的结果去实际应用,效果很差,而且还不知道如何整合到iOS与Android的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
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
将会看到以上的编辑画面,可以使用圈选复制,然后在本机新增加一个文本文件,然后贴上刚刚复制的内容,储存成一个文本文件,例如:id_rsa_192.168.0.1.key。
接着,在本机打开Browser,进入Workbench的网站,然后按下Create的按钮,产生一个新的项目:
在Create Project画面上,可以看到Environment的功能,有个Add Remote Target的按钮,按下后开始新增新的远程主机:
这时可以看到Target Machine的列表,第一个显示的就是Workbench内建预设的环境。按下『Add』按钮后,进行新增机器的画面:
在Add Remote Target窗体中,请填入以下信息:
•Hostname (远程主机IP)
•Port (远程主机ssh port, 除非有手动变更,预设都是22)
•Target Name(自己为这个远程命名)
•User (登入远程主机用的账号)
•Ssh key (就是一开始我们先存下来的私钥文本文件)
以上正确填写后,下方的Save Target将会从灰色变成深红色,按下后,就开始启动安装与设定程序了。
安装进行中的画面:
安装中,每个阶段都可以实时显示状态以及正在设定中的项目:
安装完成后,在Target Machines的列表中会清楚出现该设备,如果安装出现问题,也会出现错误信息。
安装中如果出现错误,也会出现在下方的信息中:
回到Create Project画面后,下方的Environment,就可以选择远程的主机来进行演算了。
实际简单的测试一下,可以看到远程主机上跑出来的结果,项目列表上可以看到第二列,使用我们刚刚新增的远程主机资源进行演算的结果:
4.目前有没有什么可以进一步厘清的地方?
截至目前无法正确的设定远程主机使用GPU或是VPU的资源,算是一种遗憾。我想后续应该是有机会可以解决,后续再做更新。
小结
如果各位希望打造一群工作的主机,可以进行选择模型、设定数据集、建立基准到分析与部署,Workbench正好提供了分布式Environment的安装方式,设定起来不难。后续在商业上思考可以如何客户运用OpenVINO打造一个私有的AI运算环境应该不是问题。
全部0条评论
快来发表一下你的评论吧 !