2023-12-30 16:49:14 [显示全部楼层]
8635浏览
查看: 8635|回复: 3

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

[复制链接]
本帖最后由 nicho 于 2024-1-2 18:39 编辑

一起树莓派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

nicho  中级技匠
 楼主|

发表于 2024-1-1 15:39:12

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

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

使用道具 举报

许培享  中级技神

发表于 2024-1-13 10:25:18

收藏收藏下
回复

使用道具 举报

海川  见习技师

发表于 2024-1-19 20:02:30

6666666666
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail