FINN 量化模型部署全解析
📚
30 章 · 从入门到部署
01
FINN初探
边缘AI定位
什么是FINN?为什么需要FINN?在边缘AI中的定位
02
环境搭建
Vitis/Vivado
安装Xilinx工具链,配置FINN Docker环境
03
量化基础
FP32/INT8/BINARY
模型量化概念,精度与效率选择
04
FINN编译器概览
ONNX→HLS
编译流程,finn-core与hlslib关系
05
ONNX模型准备
PyTorch/TF
导出ONNX格式,算子兼容性检查
06
编译第一步
导入与拓扑
模型导入,数据类型定义
07
编译第二步
量化与阈值
后训练量化,阈值选择
08
编译第三步
折叠与融合
BatchNorm、ReLU融合到卷积
09
编译第四步
内存规划
Streaming Dataflow架构,数据复用
10
编译第五步
HLS生成
生成C++ HLS IP核
11
编译第六步
Vivado集成
IP集成、综合,生成比特流
12
编译第七步
PetaLinux驱动
运行时生成可执行文件
13
编译第八步
板级部署
Zynq/MPSoC上运行推理
14
自定义层支持
HLS算子
编写自定义算子,注册到FINN
15
精度与性能权衡
量化位宽
分析位宽对精度/吞吐量影响
16
FINN调试技巧
debugging
打印中间张量,定位精度损失
17
多模型部署
模型切换
同一FPGA部署多个FINN模型
18
FINN vs Vitis AI
选型指南
何时用FINN?何时用Vitis AI?
19
实战案例1
二值化MobileNetV1
部署到Zynq-7020
20
实战案例2
INT8 ResNet-18
部署到Zynq UltraScale+ MPSoC
21
实战案例3
自定义LSTM
部署LSTM网络到FPGA
22
性能优化
流水线&DSP
流水线深度、DSP利用率、BRAM分配
23
功耗优化
DVFS/时钟门控
动态电压频率调整,数据路径优化
24
FINN与XRT集成
Runtime
使用Xilinx Runtime管理加速器
25
云端应用
AWS F1
在AWS F1实例上部署FINN
26
社区与生态
GitHub/Slack
仓库、论文、贡献指南
27
常见错误与解决
避坑指南
编译错误、时序违例、精度下降
28
未来展望
FINN 2.0
新特性、Transformer量化、稀疏化
29
课程总结
最佳实践
部署全流程回顾,经验总结
30
结业项目
自定义CNN部署
从零开始部署CNN到FPGA开发板