配置 Raspberry Pi Zero (Pi Zero) 运行 openpi
项目需考虑其 ARMv6 架构和硬件限制(单核 CPU,512MB RAM)。以下是完整流程:
1. 系统准备
刷写 Raspberry Pi OS Lite (无桌面版更省资源)
- 下载镜像:https://www.raspberrypi.com/software/operating-systems/
- 使用 Raspberry Pi Imager 写入 TF 卡,开启 SSH:
Advanced Options → Enable SSH → Set username/password
首次启动配置
sudo raspi-config # 扩展文件系统:Advanced > Expand Filesystem # 内存分配:Performance > GPU Memory > 16 # 超频:Performance > Overclock → Pi Zero → 1000MHz sudo reboot
2. 安装基础依赖
# 更新系统
sudo apt update && sudo apt upgrade -y
# 安装核心依赖
sudo apt install -y git git-lfs python3-pip build-essential libopenblas-dev libatlas-base-dev
# 安装 uv (替代 pip)
curl -LsSf https://astral.sh/uv/install.sh | sh
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
3. 克隆项目与子模块
# 使用 HTTPS 避免 SSH 密钥问题
git clone --recurse-submodules https://github.com/Physical-Intelligence/openpi.git
cd openpi
# 初始化子模块 (若上一步遗漏)
git submodule update --init --recursive
4. 配置虚拟环境
# 创建轻量虚拟环境
uv venv .venv
source .venv/bin/activate
# 安装依赖 (跳过 LFS 大文件)
GIT_LFS_SKIP_SMUDGE=1 uv sync
GIT_LFS_SKIP_SMUDGE=1 uv pip install -e . --no-build-isolation
注意:Pi Zero 的 ARMv6 架构可能导致部分包编译失败。若遇到错误:
- 尝试预编译轮子:
uv pip install --prefer-binary <package>
- 减少编译线程:
export MAKEFLAGS="-j1"
5. Docker 替代方案 (推荐)
Pi Zero 性能有限,建议在 PC 端构建 Docker 镜像,然后复制到 Pi Zero:
# 在 x86 主机上构建
docker buildx build --platform linux/arm/v6 -t openpi:pi0 .
# 导出镜像并复制到 Pi Zero
docker save openpi:pi0 > openpi.tar
scp openpi.tar pi@pi-zero-ip:~/
# 在 Pi Zero 加载镜像
docker load < openpi.tar
docker run -it --platform linux/arm/v6 openpi:pi0
6. 优化 Pi Zero 性能
- 增加交换空间 (避免 OOM):
sudo sed -i 's/CONF_SWAPSIZE=100/CONF_SWAPSIZE=1024/' /etc/dphys-swapfile sudo systemctl restart dphys-swapfile
- 禁用桌面服务 (仅 Lite 版可跳过):
sudo systemctl set-default multi-user.target
- 安装散热片:避免高频运行时过热降频。
常见问题解决
编译卡死:
- 降低编译线程:
export MAKEFLAGS="-j1"
- 使用预编译包:
uv pip install --prefer-binary numpy
- 降低编译线程:
内存不足:
- 关闭后台进程:
sudo systemctl stop cron.service
- 使用
zram
压缩内存:sudo apt install zram-tools echo "PERCENT=200" | sudo tee /etc/default/zramswap sudo systemctl restart zramswap.service
- 关闭后台进程:
依赖不兼容:
在requirements.txt
中替换以下兼容版本:# 针对 ARMv6 的兼容版本 numpy==1.24.3 # 最后支持 ARMv6 的版本 scipy==1.10.1 # 需 libopenblas-dev
提示:复杂模型推理建议通过 gRPC/HTTP 调用远程服务器,Pi Zero 仅作控制端。