视频机器学习流媒体服务器 (VMSS) 是一款软件应用,旨在作为一个“服务器”进程,为多个视频流提供视频分析服务并高效利用一个服务器系统上的多个 FPGA 资源。Aupera 与 Xilinx 联合开发了 VMSS 框架,以在 Alveo U30 及 U50LV 加速卡上实现,使 VMSS 更适合那些想不事先掌握 FPGA 知识便使用 FPGA 平台的开发者。该解决方案包含 VMSS 框架、预处理、机器学习推断及后处理插件。
如果您有其它问题和/或想要报告一个用户体验问题,请将相关信息发送至 vmss@auperatech.com 或 vmss@xilinx.com。
供应商: Aupera
更新日期:2021 年 3 月 31 日
大小:4.3G
容器版本: general_vmss_v1.2
获得评估或购买此产品的权利。
您可免费使用本产品部署以下应用。
该应用是容器化的,可以在几分钟内轻松地在云中或本地运行。
请按照部署方法进行操作。
1.在 X86_Host 准备必要的软件:
$sudo apt update
$sudo apt install make build-essential nfs-kernel-server docker docker-containerd docker.io
$sudo docker pull mongo:latest
2.编辑 /etc/sysctl.conf,为转发 ip 启用 net.ipv4.ip_forward=1:
$sudo vim /etc/sysctl.conf
$sudo service networking restart
$sudo docker pull xilinxpartners/aupera_general_vmss:v1.2
$docker run --cap-add sys_admin --cap-add NET_ADMIN --cap-add NET_RAW --privileged=true --network=bridge --hostname=general -it -v $(pwd):$(pwd) -w $(pwd) -e NFS_ABS_PATH=$(pwd) --name=<CONTAINER_NAME> <REPOSITORY>:<TAG> bash
在这里, REPOSITORY:TAG 是存储库名称,例如:general_vmss:v1.0,可输入‘sudo docker images’命令获得; CONTAINER_NAME 是一个用户定义的容器名称,例如:test;而 NFS_ABS_PATH 则是 nfs 共享目录,也是 docker 容器的工作空间,我们将当前目录用作 nfs 目录。
下次 x86_host 重启时,该 shell 不需要执行,只需运行以下命令进入 docker 容器即可:
$sudo docker container <CONTAINER NAME> start
$sudo docker container exec -it <CONTAINER NAME> /bin/bash
4.启动 nfs 服务并提取 nfs 文件(在 docker 中):
/root/nfs.sh
然后将在 ${NFS_ABS_PATH} 中获得以下文件/目录:
├── BOOT_full_RC5_5.bin
├── EasyDarwin
├── U30
├── VMSS_APP
├── vmss_drivers.tar.gz
├── xrt_202010.2.6.655-amd64.deb
└── xu30-qspi-burn-58553330_10120113-2.9.3-build111.bin
注:每次 x86_host 重启时,都需要执行该 shell。
5.安装 VMSS 驱动(在 docker 外):
$tar -xzvf vmss_drivers.tar.gz
$cd vmss_drivers
$sudo ./install.sh
6.确认 VMSS 驱动已加载(在 docker 外)
$lsmod | grep xocl
$lsmod | grep xdma
注:x86_host 重启时,VMSS 驱动程序将自动加载。
$sudo docker run --name mongo --rm -d -p 27017:27017 mongo
注:您必须通过修改 VMSS docker 容器中的 VMSS_APP/server/conf/plugin.cfg 文件来修改 mongo_url,以匹配主机 ip 地址。
注:每次 x86_host 重启时,都需要执行该步骤。
请联系我们时提供 form表。
${NFS_PATH}U30/drm/license_conf/nodelocked/conf.json
位置位于 docker 映像文件中的节点锁定许可证配置文件必须拷贝到 ${NFS_PATH}U30/drm/conf.json
中。${NFS_PATH}U30/drm/license_conf/floating/conf.json
位置位于 docker 映像文件中的浮动许可证配置文件必须拷贝到 ${NFS_PATH}U30/drm/conf.json
中。3.1.1 前提条件
3.1.2 U30 固件安装过程
1.获得 XRT 环境:
$cd /opt/xilinx/xrt/
$source setup.sh
2.检查卫星控制器 (SC) 固件版本:
$sudo /opt/xilinx/xrt/bin/xbmgmt flash --scan
它将显示如下内容:
Card [0000:07:00.0]
Card type: u30
Flash type: QSPI_PS
Flashable partition running on FPGA:
xilinx_U30_xdma_1_1,[ID=0x5ea44206],[SC=6.3.2]
Flashable partitions installed in system: (None)
Card [0000:08:00.0]
Card type: u30
Flash type: QSPI_PS
Flashable partition running on FPGA:
xilinx_U30_xdma_1_1,[ID=0x5ea44206],[SC=6.3.2]
Flashable partitions installed in system: (None)
如果 SC 固件版本低于 6.3.2,请联系 Xilinx 或 Aupera 支持,升级 SC 固件
3.读取开发板的 PCIe 总线
$sudo lspci -d 10ee:
它将显示如下内容:
07:00.0 Processing accelerators: Xilinx Corporation Device 503d (rev 02)
07:00.1 Processing accelerators: Xilinx Corporation Device 503c (rev 02)
08:00.0 Processing accelerators: Xilinx Corporation Device 503d (rev 02)
08:00.1 Processing accelerators: Xilinx Corporation Device 503c (rev 02)
BDF ID、07:00.1 和 08:00.1 是下一步使用的 card_id。一块 U30 开发板有两个 FPGA 器件(PCIe 端点)。
4.使用 XRT xbmgmt 实用程序闪存 U30 开发板
$sudo /opt/xilinx/xrt/bin/xbmgmt flash --shell --card <card_id> --path <binfile>.bin
其中,card_id 是第 2 步读取的 ID,如 07:00.0,而 binfile 则是 Aupera 固件 QSPI 闪存转储文件的文件名。
它将显示如下过程:
Idcode byte[0]=20
Idcode byte[1]=bb
Idcode byte[2]=21
Idcode byte[3]=10
Idcode byte[4]=44
Idcode byte[5]=0
Erasing flash.............................
Programming flash........................
Verifying........................
Shell is updated successfully
Cold reboot machine to load new shell on card
完成后,用相同的闪存转储文件闪存第 2 步读取的第二个 card_id(如 07:00:1)。
4.下电和上电(冷重启)主机,以更新闪存的 FPGA 映像。
3.2.1 前提条件
3.2.2 U50LV Shell 安装过程
1.获得 XRT 环境:
$cd /opt/xilinx/xrt/
$source setup.sh
2.读取 U50LV 开发板的 PCIe 总线
$sudo lspci -d 10ee
屏幕将显示如下信息:
07:00.0 Processing accelerators: Xilinx Corporation Device 5060
07:00.1 Processing accelerators: Xilinx Corporation Device 5061
07:00.1 Processing accelerators: Xilinx Corporation Device 5061
BDF ID、07:00.1 是下一步使用的 card_id。U50LV 开发板只有 1 个 FPGA 器件(PCIe 端点)。
3.对于 U50LV 卡,DPUCAHX8H 使用的目标平台是 gen3x4 版本,而不是标准的 gen3x16 版本。请下载并安装所需的 gen3x4 目标平台文件。
CentOS/Redhat 7.4-7.7: Xilinx-u50lv-gen3x4-xdma-2-202010.1-2902115-noarch_rpm.tar.gz
Ubuntu 16.04: Xilinx-u50lv-gen3x4-xdma-2-202010.1-2902115-16.04_deb.tar.gz
Ubuntu 18.04: Xilinx-u50lv-gen3x4-xdma-2-202010.1-2902115-18.04_deb.tar.gz
4.使用 Alveo XRT xbmgmt 实用程序闪存 U50 开发板
$sudo /opt/xilinx/xrt/bin/xbmgmt flash --shell --path <firmware_file> --card <card_id>
其中,card_id 是第 2 步读取的 ID,如 07:00.0,而 firmware_file 则是文件名 xilinx_u50lv_gen3x4_xdma_base_2
5.冷重启主机,从闪存加载 FPGA 映像并验证是否检测到 FPGA 电路板。
$sudo lspci -d 10ee:
更多 U50LV Shell 安装步骤,请参见 Xilinx github 文档。
注:一个名为 cred.json 的证书文件和一个名为 conf.json 的配置文件必须放在 U30/drm 目录下。请参考本文档的第 2 部分,生成这些文件并将其复制到 U30/drm 中,以替换一个现有的示例文件,并确保这两款 U30 器件都可编程为正确的固件,然后执行以下命令:
$cd U30 && ./start
如果这个步骤出现了一些 DRM 激活失败的错误消息,请检查 conf.json 和 cred.json 是否正确。如果该步骤长时间挂起,没有任何响应,常见原因如下:
如果启动脚本运行正确,最后应该会有以下消息:
ntpdate -u ntp.api.bz
22 Apr 08:15:06 ntpdate[2804]: step time server 114.118.7.161 offset -1530581455.452152 sec
1.进入 VMSS docker 容器:
$docker container exec -it <CONTAINER NAME> /bin/bash
2.运行 VMSS 服务器:
$cd VMSS_APP/server
$source set_env.sh
$./vmss_server
1.进入 VMSS docker 容器
$docker container exec -it <CONTAINER NAME> /bin/bash
2.启动 VMSS 客户端,打开一个会话:
$cd VMSS_APP/client
$./vmss_client -c open -p 8001 -f open_stream.json
3.关闭一个会话的命令:
$../vmss_client -c close -p 8001 -s 5fcdebd24e4aff0693054073
4.关闭一个会话的命令:
$./vmss_client -c clear -p 8001
如欲了解有关 vmss 客户端的使用详情,请在 VMSS_APP/client 目录下参阅 README.md。
1. 登录 MongoDB docker(在主机上):
$docker exec -it mongo mongo
2.打开数据库 vmss_db:
打开数据库 vmss_db:
3. 在数据库 vmss_db 中浏览结果:
db.retail.find({ session_uuid: ObjectId("5fc8b1306dedf93052684a49")})
其中“retail”是网络名, 5fc8b1306dedf93052684a49 是会话 id 字符串。该命令将显示指定会话的结果。
检查检测或分类结果。
1.登录 MongoDB docker(在主机上):
$docker exec -it mongo mongo
2.打开数据库 vmss_db:
$use vmss_db
3.在数据库 vmss_db 中浏览结果:
db.retail.find({ session_uuid: ObjectId("5fc8b1306dedf93052684a49")})
其中“零售”是网络名,5fc8b1306dedf93052684a49 是会话 id 字符串。该命令将显示指定会话的结果。