全球体育网

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

网站全球体育网    行业信息    【自有技术大(da)讲堂】AI推(tui)理(TFServing GPU)在工(gong)业制造现(xian)场windows环境上(shang)的部(bu)署方案(an)

一、背景

 

工业(ye)制造现场工控机一般采用(yong)windows系统,而TFServing-GPU推(tui)理并(bing)不(bu)支持在windows上直接安装部(bu)署,这就(jiu)给使用(yong)Tensorflow训练的AI模(mo)型在(zai)工(gong)控机(带(dai)GPU)上直接部(bu)署(shu)带来(lai)了阻碍。

目(mu)前比较常(chang)见的(de)做法是(shi)另外配置(zhi)Linux服务(wu)器(qi)来部署TFServing挂载AI模(mo)型,这就带来(lai)了额外(wai)的硬件成本。

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

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

 

二、部署流程

1、Windows 环境配置

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

 

预览版Windows 10  ver:21390

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

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

参考:

 

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

2.防(fang)火墙(qiang)关闭(bi)

依次(ci)设置为关(guan)闭

 

3.关闭睡眠

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

4.开机(ji)自动登录(lu)

a)组策略设置

 

按住win+R,弹出(chu)运行(xing)窗口,输(shu)入(ru) gpedit.msc 然(ran)后确(que)认

 

找到(dao) 计(ji)算机(ji)配置(zhi) > 管(guan)理模板 > 系统(tong) > 登(deng)录 > 登(deng)陆时不显示欢迎屏幕

双击进入(ru)

   

修(xiu)改为 已启动 , 然后点(dian)击 应(ying)用 , 最后(hou)点击 确定 .

  1.  

b)注册表修改

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

Windows Registry Editor Version 5.00

 

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

"DefaultUserName"="govion"

"AutoAdminLogon"="1"

"DefaultPassword"="XXX"

 

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

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

 

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

切换到(dao)

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

即为成功(gong)

 

1.2 安装(zhuang)显卡驱动(dong)

Windows安装471.21_gameready_win10-dch_64bit_international

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

 

1.3 安装WSL2

WSL简化安装:

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

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

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

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

 

手动升级(ji)WSL2

依次输(shu)入下(xia)面(mian)两个命令

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

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

 

重(zhong)启电脑!!!

重启(qi)电脑!!!

重启电脑!!!

 

安装wsl2 linux内核更(geng)新包

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

切换wsl版本:

wsl --set-default-version 2

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

 

 

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

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

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

wsl.exe --import <新(xin)的Linux子系统名称> <新的Linux子(zi)系统路(lu)径> <导出的tar压缩文件(jian)路径及名称>

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

Ubuntu-18.04.tar来(lai)源(yuan):之前已经做(zuo)好的子系(xi)统(tong)

 

特(te)别注(zhu)意:

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

2. D:\WSL\Ubuntu_18路径(jing)必须存在,如果没有D盘就换个其他位置,建议(yi)使(shi)用用户目录(例(li)如C:\Users\govion\Ubuntu_18

 

1.4.2 手动(dong)安装(从零开(kai)始)

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

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

点击“获取”后再点击“安装”

 

1.4.2.2 安装Docker Desktop WSL2 backend

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

安(an)装好后,进行(xing)如下设置:

 

打开1,执行2

 

去除开机自启勾(gou)选

 

1.4.2.3 Ubuntu环境配置

1cuda 安装(zhuang)

安装命令(ling)

$ 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

 

验证CUDA是(shi)否(fou)安装(zhuang)成功(gong):

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

 

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

 

 2)安装(zhuang)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)个Ubuntu18.04应用并执行:

 

$ sudo service docker stop

$ sudo service docker start

 

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

执行命令(ling)和输出如下:

 

3)开启ssh服务

安装ssh服务

sudo apt-get install openssh-server

启动ssh服务

sudo service ssh start

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

修改/etc/ssh/sshd-config文件,

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

PubkeyAuthentication yes修改为no

 

 

4)下载安装镜像

tfServing镜像

online方式)

docker pull tensorflow/serving:2.4.3-gpu

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

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

•sudo docker load < tfServing_img.tar

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

 

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

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

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

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

 

6)问题处理:

1. root用(yong)户docker run报错:

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

 

解决方(fang)案(an):

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

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

newgrp docker #更新用户组

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

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

sudo systemctl restart docker

 

2、关(guan)闭管理员权限申请弹窗(chuang)确认

步骤一:  控制面板

 

步骤(zhou)二:  

 

步骤(zhou)三:

 

步骤四:

 

步骤五: 

       使用(yong)管理员(yuan)身份运行任意一(yi)个(ge)程序,确认(ren)没(mei)有弹窗即可

 

3、开(kai)机自启脚本

1.获取管理员权(quan)限打(da)开CMD

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

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

4. init.wsl脚本启动TFServing

 

init.wsl脚本参(can)考如下图:先(xian)启动ssh和(he)docker, 然(ran)后停止(zhi)已(yi)有的TFServing镜像(xiang),再重新启动。

deploy_model_new.sh参考如(ru)下(xia)

5.以root用户进入子系统(ubuntu18.04)Shell,可(ke)有(you)可(ke)无。

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

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

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

 

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

脚本:StartWsl.bat

 

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

 

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

 

2021年11月3日 08:32