Vitis 使用教程:从零实现 AI 模型 FPGA 部署
为什么是 FPGA?为什么是 Vitis?
FPGA + Vitis AI 是边缘智能场景下的黄金组合。
传统印象里,FPGA 开发等于 Verilog、时序约束、逻辑综合……门槛高得吓人。但 Xilinx(现 AMD)推出的 Vitis 统一平台彻底改变了这一点。它允许我们用 C/C++ 甚至 Python 来描述算法,再通过高层次综合(HLS)自动生成硬件电路。
更关键的是,配套的 Vitis AI 工具链专为深度学习推理优化,支持从 TensorFlow/PyTorch 导出的模型一键量化、编译并部署到 Zynq SoC 或 Alveo 加速卡上。
- 不会写 Verilog?没关系。
- 没搞过 FPGA?也能上手。
- 只要你会训练模型,就能把它变成硬件加速引擎。
在 Kria KV260 上实测 ResNet-50,INT8 量化后推理速度超过 1200 FPS,功耗仅 5W 左右。
部署流程概览
整个流程可以拆成五个阶段:环境搭建 → 模型导出 → 量化校准 → 编译生成 → 板端运行。
第一步:搭好地基——安装 Vitis 与 Vitis AI
别急着跑代码,版本兼容性是第一道坎。
我用的是:
- 主机系统:Ubuntu 20.04
- Vitis 版本:2023.1
- Vitis AI:3.0
- 目标平台:Kria KV260 SOM
安装顺序不能乱:
- 先装 Vivado/Vitis,勾选'Vitis Embedded Development'
- 再配置 Vitis AI Docker 镜像(官方最省心)
docker pull xilinx/vitis-ai:latest
docker run -it --gpus all --rm --name vitis-ai \
-v /path/to/your/model:/workspace \
xilinx/vitis-ai:latest
提示:一定要确认 XRT(Xilinx Runtime)、DPU 固件和 Vitis 版本匹配!否则后面 .xclbin 加载会失败。
第二步:把 PyTorch 模型变成 ONNX
假设你已经有一个训练好的分类模型(比如 MobileNetV2),接下来要把它'翻译'成中间格式。
import torch
import torchvision
# 加载预训练模型
model = torchvision.models.mobilenet_v2(pretrained=True)
model.eval()
# 构造 dummy input
dummy_input = torch.randn(1, 3, 224, 224)
# 导出 ONNX
torch.onnx.export(
model, dummy_input, "mobilenet_v2.onnx",
input_names=["input"], output_names=["output"],
opset_version=13, do_constant_folding=True
)
关键点:

