一起树莓派5运行AI文生图模型Run Stable Diffusion on Raspberry Pi 5

2023-12-301.7万
精华项目
AI 快速预览详细 收起
本文介绍了如何在树莓派5上运行Stable Diffusion AI文生图模型。首先,确保树莓派5运行最新的Raspberry Pi OS x64,并配备8GB版本的树莓派5、官方主动散热器和稳定的网络连接。接着,通过命令行克隆Stable Diffusion XL 1.0模型,并编译XNNPACK工具和Stable Diffusion example。最后,通过设置参数运行模型,生成图像。整个过程耗时较长,但对学习和实验非常有价值。


一起树莓派5运行AI文生图模型Run Stable Diffusion on Raspberry Pi 5图1

虽然Raspberry Pi的性能限制了Stable Diffusion的运行效率,但对于在普通 SBC 上能运行 Stable Diffusion还是非常的酷,这个过程对于学习和实验来说是非常有价值的。

实验条件
  • 系统 :确保Raspberry Pi 5运行的是最新的 Raspberry Pi OS x64
  • 硬件:这里是用的是树莓派5的8GB版本,配官方主动散热器,5V4A 电源适配器
  • 网络:所需下载的模型较大,约16GB,需要非常稳定的网络连接

实验Stable Diffusion XL 1.0

1. 克隆Stable Diffusion模型:从H站克隆Stable Diffusion XL 1.0模型。

使用命令:
//树莓派默认git 不支持 lfs,需要先额外安装依赖 https://git-lfs.com/

//添加仓库
curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash

//安装
sudo apt-get install git-lfs

//激活
git lfs install

//拉取模型
git clone --depth=1 https://huggingface.co/vitoplantamura/stable-diffusion-xl-base-1.0-onnxstream



这一步非常耗时,确保下载速度是正常之后,可以去玩一会再回来看了,这一步建议直接在树莓派里面(or VNC)打开 terminal,防止电脑的 ssh 断了就全功尽弃了。。。
一起树莓派5运行AI文生图模型Run Stable Diffusion on Raspberry Pi 5图3


2. 编译XNNPACK工具

# 没有 Cmake 的需要先安装
sudo apt install cmake

# 下载仓库
git clone https://github.com/google/XNNPACK.gitcd XNNPACK

# 找回兼容本项目的
commitgit rev-list -n 1 --before="2023-06-27 00:00" master

# 这里可以得到一串字符串(Commit id),将其粘贴到下个命令中
git checkout <上一步得到的COMMIT_ID>

# 编译
mkdir buildcd buildcmake -DXNNPACK_BUILD_TESTS=OFF -DXNNPACK_BUILD_BENCHMARKS=OFF ..
cmake --build . --config Release
make

# 检查,在当前目录应该要有libXNNPACK.a的文件
ls



3. 编译Stable Diffusion exmaple

# 下载仓库
git clone https://github.com/vitoplantamura/OnnxStream.gitcd OnnxStreamcd srcmkdir buildcd build

# 编译,这里因为使用树莓派5,所以这里使用-DMAX_SPEED=ON,-DXNNPACK_DIR则附上在上一步XNNPACK位置,这里自行修改
cmake -DMAX_SPEED=ON -DXNNPACK_DIR=/home/pi/xxx/XNNPACK ..
cmake --build . --config Release

# 检查,在当前目录应该要有名叫 sd 的文件
ls


4. 开始 diffusion,在这里先试试 SD XL 1.0


# 切换到上一步有sd文件的目录

# 命令说明
# --xl              运行stable-diffusion XL 1.0
# --turbo           运行stable-diffusion Turbo 1.0
# --models-path     设置包含stable-diffusion模型的文件夹
# --ops-printf      在推理过程中,将当前操作写入标准输出
# --output          设置输出的 PNG 文件路径
# --decode-latents  跳过扩散过程,直接解码指定的潜变量文件
# --prompt          设置正向prompt
# --neg-prompt      设置负向prompt
# --steps           设置扩散步骤的数量
# --seed            设置seed
# --save-latents    在扩散过程后,将潜变量保存在指定的文件中
# --decoder-calibrate   (仅限 SD 1.5)校准量化版本的 VAE 解码器
# --not-tiled           (仅限 SDXL 1.0)不使用分块 VAE 解码器
# --ram             使用 RAM WeightsProvider(实验性功能),允许使用大内存
# --rpi             配置模型在普通树莓派上运行,如树莓派 3、4、5
# --rpi-lowmem      配置模型在小内存的树莓派上运行,如Zero2

# 这里使用这部分参数
# --xl              运行stable-diffusion XL 1.0
# --models-path     设置包含stable-diffusion模型的文件夹
# --output          设置输出的 PNG 文件路径
# --prompt          设置正向prompt
# --steps           设置扩散步骤的数量
# --ram             使用RAM WeightsProvider,允许使用大内存,经实验最高 5.3G 内存占用
# --rpi             配置模型在普通树莓派上运行,如树莓派 3、4、5

# 运行
./sd --xl --models-path /home/pi/xxxx/stable-diffusion-xl-base-1.0-onnxstream --output result.png --prompt "A photo of an astronaut riding a horse" --steps 3 --ram --rpi


5. 进程启动后的资源占用(btop)一起树莓派5运行AI文生图模型Run Stable Diffusion on Raspberry Pi 5图4

6. 输出
一起树莓派5运行AI文生图模型Run Stable Diffusion on Raspberry Pi 5图2

7. 结果(steps=3),大约耗时25分钟
一起树莓派5运行AI文生图模型Run Stable Diffusion on Raspberry Pi 5图6
可以基本满足 prompt 的元素,但是还不够完美,接下来继续尝试,尝试修改 steps 或者使用 XL1.5,TBD

8. 实验Stable Diffusion 1.5

跑下来Stable Diffusion 1.5的模型尺寸、内存占用、生成速度都要比 XL1.0 要好

1. 克隆Stable Diffusion模型:从H站克隆Stable Diffusion 1.5模型。使用命令:

# 下载模型,并解压到树莓派,1.5 的模型比较小,只有 2G 左右
https://github.com/vitoplantamura/OnnxStream/releases/tag/v0.1


2. 开始 diffusion1.5
# 这次我们调整下参数,切换到 1.5 的模型目录

# 运行./sd --models-path /home/pi/xxx/SD1.5 --output result.png --prompt "A photo of an astronaut riding a horse" --steps 3 --ram --rpi



3. 输出
一起树莓派5运行AI文生图模型Run Stable Diffusion on Raspberry Pi 5图9

4. 结果(steps=3),大约耗时4分钟,快了非常多
一起树莓派5运行AI文生图模型Run Stable Diffusion on Raspberry Pi 5图5
可以基本满足 prompt 的元素,但是还不够完美,接下来继续尝试,尝试修改 --steps 5

5. 结果(steps=5),大约耗时6分钟
一起树莓派5运行AI文生图模型Run Stable Diffusion on Raspberry Pi 5图7
可以看得到宇航员的样子了,接下来继续尝试,尝试修改 --steps 12

6. 结果(steps=12),大约耗时15分钟
一起树莓派5运行AI文生图模型Run Stable Diffusion on Raspberry Pi 5图8


继续尝试,TBD

创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(7)
IOHDHQ
IOHDHQ
厉害厉害厉害,生成的图像很逼真
IOHDHQ
IOHDHQ
厉害厉害厉害
罗罗罗
罗罗罗
666
ALSET
ALSET
不错呀,模型文件从哪下载的,支持PC上SD 其它的模型吗 ?
海川
海川
6666666666
许培享
许培享
收藏收藏下
nicho
nicho
作者

在树莓派4下运行也没问题,但是速度不及树莓派5,粗测要多花费3倍的时间
- 没有更多了 -