第二章:环境搭建——安装Xilinx Vitis、Vivado、PetaLinux,配置FINN Docker环境
好,咱们直接进入正题。环境搭建这事儿,说难不难,说简单也真能折腾你一整天。我当年第一次搭FINN环境的时候,光一个Docker权限问题就卡了三个小时。嗯,咱们今天就把这些坑都填平。
2.1 硬件与操作系统要求
先看看你的机器够不够格。说白了,Xilinx这套工具链就是个资源大户。
| 组件 | 最低要求 | 推荐配置 |
|---|---|---|
| CPU | 4核 | 8核以上 |
| 内存 | 16 GB | 32 GB |
| 硬盘 | 100 GB 空闲 | 200 GB SSD |
| 操作系统 | Ubuntu 18.04 / 20.04 | Ubuntu 20.04 LTS |
注意:千万别用Windows直接装。我试过,WSL2勉强能跑,但各种玄学问题会让你怀疑人生。老老实实装双系统或者用Linux物理机。
2.2 安装Vivado与Vitis
我个人习惯先把Vivado和Vitis一起装。为啥?因为Vitis是Vivado的超集,装一个Vitis就全有了。
去Xilinx官网下载 Unified Installer。你想想看,2023.2版本大概20多个G,网速不好的话,建议挂一晚上。
# 下载完成后,给执行权限
chmod +x Xilinx_Unified_2023.2_*.bin
# 运行安装程序
./Xilinx_Unified_2023.2_*.bin
安装时记得勾选:
- Vivado ML Standard / Enterprise
- Vitis Core Development
- 对应板卡的Device Support(比如Zynq-7000、Zynq UltraScale+)
小技巧:安装路径不要有中文和空格。我习惯放在
/tools/Xilinx 下,干净利落。
2.3 安装PetaLinux
PetaLinux是用来生成Linux镜像的。FINN生成的硬件加速器,最终要跑在Linux系统上,所以这步绕不开。
下载PetaLinux Installer,版本要和Vivado对齐。比如你用Vivado 2023.2,PetaLinux也得是2023.2。
# 安装依赖
sudo apt-get install -y gawk wget git diffstat unzip texinfo gcc build-essential \
chrpath socat cpio python3 python3-pip python3-pexpect xz-utils debianutils \
iputils-ping python3-git python3-jinja2 libegl1-mesa libsdl1.2-dev \
pylint3 xterm python3-subunit mesa-common-dev zstd liblz4-tool
# 安装PetaLinux
chmod +x petalinux-v2023.2-*.run
./petalinux-v2023.2-*.run /tools/Xilinx/petalinux
踩坑提醒:我曾经在Ubuntu 22.04上装PetaLinux 2023.2,结果python版本不兼容,折腾了两天。最后老老实实换回Ubuntu 20.04,一次过。所以,听我一句劝,Ubuntu 20.04最稳。
2.4 配置环境变量
装完工具,得让系统知道它们在哪。每次打开终端都要source一下,挺烦的。我建议直接写进 .bashrc。
# 编辑 ~/.bashrc
echo 'source /tools/Xilinx/Vivado/2023.2/settings64.sh' >> ~/.bashrc
echo 'source /tools/Xilinx/Vitis/2023.2/settings64.sh' >> ~/.bashrc
echo 'source /tools/Xilinx/petalinux/settings.sh' >> ~/.bashrc
source ~/.bashrc
验证一下:
vivado -version
vitis -version
petalinux-version
如果都能正常显示版本号,说明环境变量配好了。
2.5 安装Docker与配置FINN镜像
FINN官方推荐用Docker来跑。为啥?因为依赖太多了,Python包、ONNX、PyTorch、Brevitas……手动装一遍,你可能会疯掉。
2.5.1 安装Docker
# 安装Docker
sudo apt-get update
sudo apt-get install -y docker.io
# 启动Docker服务
sudo systemctl start docker
sudo systemctl enable docker
# 将当前用户加入docker组(避免每次sudo)
sudo usermod -aG docker $USER
# 然后退出终端重新登录
提示:加完docker组后,记得重新登录或者执行
newgrp docker,否则权限不会立即生效。
2.5.2 拉取FINN Docker镜像
# 拉取官方FINN镜像
docker pull xilinx/finn:latest
# 或者指定版本,更稳定
docker pull xilinx/finn:0.8.1
拉取完成后,启动容器:
# 创建并进入容器
docker run -it --name finn_dev \
-v /path/to/your/project:/workspace \
xilinx/finn:0.8.1 /bin/bash
-v 参数是把宿主机的项目目录挂载到容器里。这样你在容器里改代码,宿主机也能看到。
2.6 验证FINN环境
进到容器里,跑个简单的测试:
# 进入容器后
cd /workspace
python3 -c "import finn; print(finn.__version__)"
如果没报错,恭喜你,环境搭好了。
重点:FINN的核心依赖包括:
- Brevitas(量化感知训练)
- ONNX(模型中间表示)
- PyTorch(训练框架)
- Xilinx Vitis / Vivado(编译与部署)
2.7 常见问题与避坑指南
- Docker拉取太慢? 配置国内镜像源。修改
/etc/docker/daemon.json,加入{"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]},然后重启Docker。 - Vivado安装卡在95%? 别慌,那是安装Device Support,确实慢。等就完了,别强行关闭。
- PetaLinux编译报错? 检查gcc版本。Ubuntu 20.04自带的gcc 9没问题,Ubuntu 22.04的gcc 11可能会有兼容性问题。
- 容器里找不到显卡? 如果你要用GPU训练量化模型,启动容器时加
--gpus all参数。
嗯,环境搭建这部分就到这儿。你把这些步骤走一遍,基本不会出大问题。下一章咱们开始讲FINN的量化原理,那才是真正的硬核内容。