VTA 安装指南
我们提供了五个安装指南,每 一个都对前一个教程进行了扩展:
VTA 模拟器安装
需要在机器上 安装 TVM。查看 Docker 指南 来快速开始。
设置以下路径后才能使用 VTA:
export TVM_PATH=<path to TVM root>
export VTA_HW_PATH=$TVM_PATH/3rdparty/vta-hw
构建 TVM 时要启用 VTA 功能模拟库。
cd <tvm-root>
mkdir build
cp cmake/config.cmake build/.
echo 'set(USE_VTA_FSIM ON)' >> build/config.cmake
cd build && cmake .. && make -j4
将 VTA Python 库添加到 Python 路径,运行 VTA 示例。
export PYTHONPATH=/path/to/vta/python:${PYTHONPATH}
测试 VTA 模拟设置
为确保已正确安装 VTA Python 包,运行以下 2D 卷积进行测试。
python <tvm root>/vta/tests/python/integration/test_benchmark_topi_conv2d.py
诚邀你体验 VTA 编程教程。
注意:每个卷积层的吞吐量都会在 GOPS 中报告。这些数字实际上是模拟器通过评估软件中的卷积实现的计算吞吐量。
高级配置(可选)
VTA 是一个通用的可配置深度学习加速器。配置由 3rdparty/vta-hw/config
下的 vta_config.json
指定。该文件提供了 VTA 加速器的体系结构规范,以参数化 TVM 编译器堆栈和 VTA 硬件堆栈。
VTA 配置文件还指定了 TVM 编译器 target。当 TARGET
设置为 sim
时,所有 TVM 工作负载都在 VTA 模拟器上执行。可以修改配置文件的内容,将 VTA 重建为不同的参数化:
cd <tvm root>
vim 3rdparty/vta-hw/config/vta_config.json
# 编辑 vta_config.json
make
Xilinx Pynq FPGA 设置
第二个指南扩展了以上 VTA 模拟器安装指南,从而运行完整的 TVM 和 VTA 软件-硬件堆栈的 FPGA 硬件测试。需要的硬件组件有:
- Pynq FPGA 开发板可从 Digilent 以 200 美元或 150 美元的价格购买。
- 一个以太网到 USB 适配器,用于将 Pynq 板连接到你的开发机器。
- 8+ GB micro SD 卡。
- 一个 AC 转 DC 12V 3A 电源适配器。
本指南涵盖以下主题:
- Pynq 板设置说明。
- Pynq 端 RPC 服务器构建和部署。
- 再次访问 VTA 模拟器安装指南中的测试示例,这次是在 Pynq 板上执行。
Pynq 板设置
根据 Pynq 开发板入门教程 设置 Pynq 开发板。
按照说明进行操作,包括打开 PYNQ-Z1 步骤(此后无需继续学习本教程)。
- 确保已下载最新的 Pynq 镜像 PYNQ-Z1 v2.5,并已经用它为你的 SD 卡制作镜像(推荐免费的 Etcher 程序)。
- 对于这个测试设置,遵循“连接到计算机”以太网设置说明。为成功与板子通信,确保 为计算机分配一个静态 IP 地址。
一旦开发板通电,并连接到你的开发机器,尝试进行连接,并确保已正确设置 Pynq 开发板:
# 要连接到 Pynq 开发板,使用 <username, password> 组合:<xilinx, xilinx>
ssh xilinx@192.168.2.99
Pynq 端 RPC 服务器构建和部署
因为板到计算机的直接连接会阻止单板直接访问互联网,所以要使用 sshfs 将 Pynq 的文件系统挂载到你的开发机器的文件系统中。接下来,直接将 TVM 仓库克隆到开发机器上的 sshfs 挂载点。
# 在宿主机端
mkdir <mountpoint>
sshfs xilinx@192.168.2.99:/home/xilinx <mountpoint>
cd <mountpoint>
git clone --recursive https://github.com/apache/tvm tvm
# 完成后,可以离开挂载点,并卸载目录
cd ~
sudo umount <mountpoint>
现在已经在 Pynq 的文件系统中克隆了 VTA 仓库,可以通过 ssh 登入,并基于 TVM 的 RPC 服务器启动构建。构建过程大约需要 5 分钟。
ssh xilinx@192.168.2.99
# 构建 TVM runtime 库(需要 5 分钟)
cd /home/xilinx/tvm
mkdir build
cp cmake/config.cmake build/.
echo 'set(USE_VTA_FPGA ON)' >> build/config.cmake
# 复制 pynq 具体配置
cp 3rdparty/vta-hw/config/pynq_sample.json 3rdparty/vta-hw/config/vta_config.json
cd build
cmake ..
make runtime vta -j2
# FIXME (tmoreau89): 通过修复 cmake 构建,删除此步骤
make clean; make runtime vta -j2
# 构建 VTA RPC 服务器(需要 1 分钟)
cd ..
sudo ./apps/vta_rpc/start_rpc_server.sh # pw is 'xilinx'
启动 RPC 服务器时,可看到以下显示。为了运行下一个示例,需要让 RPC 服务器在 ssh
session 中运行。
INFO:root:RPCServer: bind to 0.0.0.0:9091
关于 Pynq RPC 服务器的提示:
- RPC 服务器应该在端口
9091
上监听。若没有,早期的进程可能已经意外终止。在这种情况下推荐重新启动 Pynq,然后重新运行 RPC 服务器。 - 要终止 RPC 服务器,只需发送
Ctrl + c
命令。可以用sudo ./apps/pynq_rpc/start_rpc_server.sh
重新运行。 - 若无响应,可以通过使用物理电源开关对其重新通电,重新启动单板。
测试基于 Pynq 的硬件设置
在开发机器上运行示例前,按如下方式配置主机环境:
# 在宿主机端
export VTA_RPC_HOST=192.168.2.99
export VTA_RPC_PORT=9091