全球体育网

【自有技术大讲堂】AI推理(TFServing GPU)在工业制造现场windows环境上的部署方案

网站全球体育网    行业信息    【自有技(ji)术大讲(jiang)堂】AI推理(TFServing GPU)在工(gong)业(ye)制造(zao)现场windows环境(jing)上的(de)部(bu)署方案

一、背景

 

工业(ye)制造现场工控机一般(ban)采(cai)用windows系统,而TFServing-GPU推理(li)并不支持在(zai)windows上(shang)直接安装(zhuang)部署,这就给使用Tensorflow训练的AI模型在工控机(GPU)上直接部署带来了阻碍。

目前(qian)比较常见的做(zuo)法是另外配置Linux服务器来部(bu)署TFServing挂载AI模型,这就带来了额外的硬件成(cheng)本。

另外,众所(suo)周知(zhi),一些第三方的(de)windows虚拟机软(ruan)件(例如(ru)virtualbox, vmware)也(ye)是无法直接使用(yong)到本机(ji)的GPU设备的。

本(ben)文提供的(de)(de)方(fang)案,利(li)用了(le)微(wei)软官方(fang)提供的(de)(de)WSL2虚拟机(ji),加(jia)载(zai)了(le)Linux系统,提供了TFServing-GPU 推理(li)的接(jie)口,解决了上文提到的工业制造现场AI部署痛点。

 

二、部署流程

1、Windows 环境配(pei)置

1.1 升(sheng)级Windows版本到指(zhi)定(ding)的Win10预览(lan)版

 

预览版Windows 10  ver:21390

预售版Windows 11  ver:22000 (Windows11正(zheng)式(shi)发(fa)布后可以使用正(zheng)式(shi)版本)

注(zhu)意: win11安(an)装需(xu)要tpm验证(zheng),并且开启tpm

参考:

 

1.关闭(bi)系统自动更新(xin)

2.防(fang)火墙关闭

依次设置为(wei)关(guan)闭(bi)

 

3.关闭睡眠

电源(yuan)选项 》 更改计划设置 》 永不休眠

4.开机自(zi)动登录

a)组策略设置(zhi)

 

按住win+R,弹(dan)出运行窗口,输入 gpedit.msc 然后确认

 

找(zhao)到 计算(suan)机配置 > 管理模板 > 系统(tong) > 登录(lu) > 登陆时不显示欢迎(ying)屏(ping)幕

双击进(jin)入(ru)

   

修(xiu)改为 已启(qi)动 , 然(ran)后点击 应用(yong) , 最后点击 确(que)定 .

  1.  

b)注册表修改

保存以下内容到文件login.reg到电脑上(shang),注意更改windows用户账号和密码

Windows Registry Editor Version 5.00

 

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon]

"DefaultUserName"="govion"

"AutoAdminLogon"="1"

"DefaultPassword"="XXX"

 

确(que)定更(geng)改信息后,双击运行login.reg即可.

注意: 需(xu)要到(dao)注册表中确定(ding)是否已经(jing)顺利写(xie)入;

 

Win+R 调(diao)出运行窗口,输(shu)入 regedit ,点击确(que)定(ding)

切换(huan)到

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon目录下

即为成(cheng)功

 

1.2 安装显卡(ka)驱动

Windows安(an)装(zhuang)471.21_gameready_win10-dch_64bit_international

其他(ta)最(zui)近(jin)的驱动版本(ben)也可以。

 

1.3 安装(zhuang)WSL2

WSL简化安(an)装:

管理员权限(xian)打开(kai)命令行(xing)并(bing)执行(xing):wsl --install

按照http://docs.microsoft.com/en-us/windows/wsl/install-win10链接中指南安(an)装

注意只(zhi)要操(cao)作“简化安装”。不需要操作“手动安装”

完成“简化安装”后会自动安装一个Ubuntu20子系统版本,不用管它,也不要使(shi)用这(zhei)个版本。

 

手动升级WSL2

依次输入下面两(liang)个命令

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

 

重启电脑!!!

重启电(dian)脑!!!

重(zhong)启电(dian)脑(nao)!!!

 

安装wsl2 linux内核更新包

http://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi

切换(huan)wsl版(ban)本:

wsl --set-default-version 2

完成wsl2 的更新,按下(xia)面步(bu)骤接着导(dao)入ubuntu18.

 

 

1.4 安装Ubuntu18.04子系(xi)统

1.4.1 自(zi)动导入(ru)已有子系统(tong)

cmd命令提示符或Windows PowerShell中运行以下形式的命令(管理员权限):

wsl.exe --import <新的Linux子系(xi)统名(ming)称> <新的(de)Linux子系统(tong)路径> <导出的(de)tar压缩(suo)文件路径及名称>

例如:wsl.exe --import Ubuntu-18.04 D:\WSL\Ubuntu_18 D:\WSL\Ubuntu-18.04.tar

Ubuntu-18.04.tar来源:之前已经做好(hao)的子系统

 

特别(bie)注意:

1.子系统名称必须为Ubuntu-18.04

2. D:\WSL\Ubuntu_18路(lu)径必(bi)须存在,如果没有D盘就换个其(qi)他位置(zhi),建议使用用户(hu)目(mu)录(例如C:\Users\govion\Ubuntu_18

 

1.4.2 手动安装(从零开始)

1.4.2.1 安装Ubuntu18.04子系(xi)统

Microsoft Store”搜索Ubuntu,并安装Ubuntu18.04LTS子系(xi)统(tong)

点(dian)击“获取”后再点击“安装”

 

1.4.2.2 安装Docker Desktop WSL2 backend

使用提供(gong)的安(an)装包安(an)装:Docker Desktop Installer

安装好后,进行如下设(she)置(zhi):

 

打开1,执行2

 

去(qu)除开机自启勾选

 

1.4.2.3 Ubuntu环境配置

1cuda 安装

安装(zhuang)命令

$ wget http://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-wsl-ubuntu.pin

$ sudo mv cuda-wsl-ubuntu.pin /etc/apt/preferences.d/cuda-repository-pin-600

$ wget http://developer.download.nvidia.com/compute/cuda/11.4.0/local_installers/cuda-repo-wsl-ubuntu-11-4-local_11.4.0-1_amd64.deb

$ sudo dpkg -i cuda-repo-wsl-ubuntu-11-4-local_11.4.0-1_amd64.deb

$ sudo apt-key add /var/cuda-repo-wsl-ubuntu-11-4-local/7fa2af80.pub

$ sudo apt-get update

$ sudo apt-get -y install cuda

 

验证(zheng)CUDA是否安装(zhuang)成功:

启动Ubuntu18.04子系统(tong)(搜索(suo)Ubuntu18应(ying)用启(qi)动)执(zhi)行如下命令:

 

确认打印结果(guo)如上类(lei)似。

 

 2)安装Docker

$ distribution=$(. /etc/os-release;echo $ID$VERSION_ID)

$ curl -s -L http://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -

$ curl -s -L http://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list

$ curl -s -L http://nvidia.github.io/libnvidia-container/experimental/$distribution/libnvidia-container-experimental.list | sudo tee /etc/apt/sources.list.d/libnvidia-container-experimental.list

$ sudo apt-get update

$ sudo apt-get install -y nvidia-docker2

 

重新打开一(yi)个(ge)Ubuntu18.04应用并(bing)执行(xing):

 

$ sudo service docker stop

$ sudo service docker start

 

验证是(shi)否能够启(qi)动docker并使用GPU

执行命令和输出如下:

 

3)开启ssh服务(wu)

安装ssh服务

sudo apt-get install openssh-server

启(qi)动ssh服(fu)务

sudo service ssh start

如果ssh出现permission denied (publickey)问题(ti)还是无法登录,就修改sshd的(de)默认配(pei)置

修改(gai)/etc/ssh/sshd-config文件,

将其中(zhong)的PermitRootLogin no修改为yes,

PubkeyAuthentication yes修改(gai)为no

 

 

4)下(xia)载安(an)装(zhuang)镜像

tfServing镜像

online方式(shi))

docker pull tensorflow/serving:2.4.3-gpu

(离(li)线方式使(shi)用已有TFServing镜像)

•把tfServing_img.tar放到home/user(之前新(xin)建的(de)用户名)目录下

•sudo docker load < tfServing_img.tar

•sudo docker tag d1eaacb267c1 tensorflow/serving:latest-gpu

 

5)启动docker 容器,运行(xing)模型Serving服务

此部分和在(zai)Linux服务器(qi)上启动TFServing挂载(zai)AI模型相(xiang)同。

不太熟悉的同学请可以参考如(ru)下网络教程实施:

http://blog.csdn.net/JerryZhang__/article/details/86516428

 

6)问(wen)题处(chu)理:

1. root用户docker run报错:

WARNING: Error loading config file: /home/raiden/.docker/config.json: stat /home/raiden/.docker/config.json: permission denied

 

解决(jue)方案:

sudo groupadd docker #添加docker用户(hu)组

sudo gpasswd -a $USER docker #将登陆用(yong)户加入(ru)到docker用(yong)户组中

newgrp docker #更新用户组

sudo chown "$USER":"$USER" /home/"$USER"/.docker -R

sudo chmod g+rwx "/home/$USER/.docker" -R

sudo systemctl restart docker

 

2、关闭(bi)管理(li)员(yuan)权限申(shen)请弹(dan)窗确(que)认

步骤一:  控制面板(ban)

 

步骤(zhou)二(er):  

 

步(bu)骤三(san):

 

步骤四:

 

步骤五: 

       使用管理员身份运行任意一个程序(xu),确认没有弹窗(chuang)即可

 

3、开(kai)机自启脚本

1.获取管理(li)员权限打开(kai)CMD

2.把WSL2子(zi)系统的端口映射到windows局(ju)域网

3.给WSL2子系统添加虚拟(ni)IP,可(ke)以在windows局域网环境找到(dao)此(ci)子系(xi)统

4. init.wsl脚本(ben)启动(dong)TFServing

 

init.wsl脚(jiao)本参考如下图:先启动sshdocker, 然后停止已有(you)的TFServing镜像,再重(zhong)新启动。

deploy_model_new.sh参考如下

5.以root用(yong)户进(jin)入(ru)子(zi)系统(ubuntu18.04)Shell,可有可无。

4、设置脚本(ben)开机自启

1)按键 Win + R, 弹出“运(yun)行”窗(chuang)口

2)输入(ru) shell:startup,点击(ji)确定

 

3)把StartWSL.bat放到这个路(lu)径下

脚(jiao)本(ben):StartWsl.bat

 

4)重启(qi),会弹出(chu)窗口,等待脚本自动执行完成如下截图:

 

脚本执(zhi)行完成后,此命(ming)令(ling)行窗口可(ke)以关闭,也可(ke)以不关闭。

 

2021年11月3日 08:32