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

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

一、背景

 

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

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

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

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

 

二、部署流程

1、Windows 环境配置

1.1 升级Windows版本到指定的Win10预览版

 

预览版Windows 10  ver:21390

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

注意: win11安装需要tpm验证,并且开启tpm

参考:https://baijiahao.baidu.com/s?id=1704271094210992572&wfr=spider&for=pc

 

1.关闭系统自动更新

2.防火墙关闭

依次设置为关闭

 

3.关闭睡眠

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

4.开机自动登录

a)组策略设置

 

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

 

找到 计算机配置 > 管理模板 > 系统 > 登录 > 登陆时不显示欢迎屏幕

双击进入

   

修改为 已启动 , 然后点击 应用 , 最后点击 确定 .

  1.  

b)注册表修改

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

Windows Registry Editor Version 5.00

 

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

"DefaultUserName"="govion"

"AutoAdminLogon"="1"

"DefaultPassword"="XXX"

 

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

注意: 需要到注册表中确定是否已经顺利写入;

 

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

切换到

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

即为成功

 

1.2 安装显卡驱动

Windows安装471.21_gameready_win10-dch_64bit_international

其他最近的驱动版本也可以。

 

1.3 安装WSL2

WSL简化安装:

管理员权限打开命令行并执行:wsl --install

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

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

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

 

手动升级WSL2

依次输入下面两个命令

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

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

 

重启电脑!!!

重启电脑!!!

重启电脑!!!

 

安装wsl2 linux内核更新包

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

切换wsl版本:

wsl --set-default-version 2

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

 

 

1.4 安装Ubuntu18.04子系统

1.4.1 自动导入已有子系统

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

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

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

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

 

特别注意:

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

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

 

1.4.2 手动安装(从零开始)

1.4.2.1 安装Ubuntu18.04子系统

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

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

 

1.4.2.2 安装Docker Desktop WSL2 backend

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

安装好后,进行如下设置:

 

打开1,执行2

 

去除开机自启勾选

 

1.4.2.3 Ubuntu环境配置

1cuda 安装

安装命令

$ wget https://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 https://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是否安装成功:

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

 

确认打印结果如上类似。

 

 2)安装Docker

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

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

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

$ curl -s -L https://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

 

重新打开一个Ubuntu18.04应用并执行:

 

$ sudo service docker stop

$ sudo service docker start

 

验证是否能够启动docker并使用GPU

执行命令和输出如下:

 

3)开启ssh服务

安装ssh服务

sudo apt-get install openssh-server

启动ssh服务

sudo service ssh start

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

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

将其中的PermitRootLogin no修改为yes,

PubkeyAuthentication yes修改为no

 

 

4)下载安装镜像

tfServing镜像

online方式)

docker pull tensorflow/serving:2.4.3-gpu

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

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

•sudo docker load < tfServing_img.tar

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

 

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

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

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

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

 

6)问题处理:

1. root用户docker run报错:

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

 

解决方案:

sudo groupadd docker #添加docker用户组

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

newgrp docker #更新用户组

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

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

sudo systemctl restart docker

 

2、关闭管理员权限申请弹窗确认

步骤一:  控制面板

 

步骤二:  

 

步骤三:

 

步骤四:

 

步骤五: 

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

 

3、开机自启脚本

1.获取管理员权限打开CMD

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

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

4. init.wsl脚本启动TFServing

 

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

deploy_model_new.sh参考如下

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

4、设置脚本开机自启

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

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

 

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

脚本:StartWsl.bat

 

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

 

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

 

2021年11月3日 08:32