以下文章来源于Radxa ,作者瑞莎
Stable Diffusion 3 Medium 是一种多模态扩散变换器 (MMDiT) 文本到图像模型,在图像质量、排版、复杂提示理解和资源效率方面具有显著提升的性能。
目前瑞莎团队使用 Stable Diffusion 3 Medium 开源模型,通过 SOPHON SDK 移植到 SG2300X 处理器系列产品上进行本地 TPU 硬件加速推理,实现在 radxa Airbox 上离线快速生成特色风格且带清晰文本的图片。
有关 Stable Diffusion 3 Medium 更多技术细节,请参阅官方网站和研究论文。
环境准备
硬件准备
-
Airbox + 65W的配套电源
-
网线
-
在局域网内可使用浏览器访问 PC
-
Type-C 数据线(可选)
将网线根据您的网络环境选择插入 WAN 口(推荐接入广域网)或者 LAN 口(接入局域网),根据您的使用习惯可选将 Type-C 数据线 C 口端插入 Airbox Debug 口, A 口端插入至您的 PC,最后插入电源上电自动开机,更多详细关于硬件准备工作请参考这里
软件环境准备
针对熟练度不同的 Linux 开发者,可以选择两种方式进行环境准备。因 Airbox 镜像已经预装 CasaOS,所以本文以 CasaOS 命令行模式为例子进行部署 Stable Diffusion 3
-
终端命令行模式
-
CasaOS 命令行模式(新手推荐)
开启终端
待 Airbox 开机后,通过您的 PC 浏览器访问 Airbox 的 IP 地址的 81 端口便可登录 CasaOS,如何获取 Airbox IP 地址?请参考这里
CasaOS 用户名和密码
Username: radxa
Password: radxa
Airbox 系统终端用户名和密码
Username: linaro
Password: linaro
点击 CasaOS 左上角第三个图标登陆 Airbox 系统终端
代码环境准备
终端打开后,接下来就直接复制提供的命令就好
克隆 SD3-Medium-TPU 代码仓库
cd /data
git clone https://github.com/zifeng-radxa/SD3-Medium-TPU.git
&& cd SD3-Medium-TPU
配置运行环境(仅需运行一次)
此脚本会自动配置所需运行依赖的库,请耐心等待安装
source env.sh
下载 radxa 提供好的 Stable Diffusion 3 bmodel 格式模型
-
如果您可以流畅访问 github, 可直接运行 run.sh 脚本, 这会自动从 github 上下载模型后并启动程序
bash run.sh
-
如果你出现下载的压缩包 md5 比对不过可以通过模型下载脚本重新下载
bash tar_downloader.sh
-
如果您无法使用 github 下载,radxa 提供百度云链接,请将下载好的 models 文件夹拷贝到 Airbox 上 SD-Medium-TPU/python_demo 文件夹中,您可以直接通过 CasaOS 文件管理器中直接上传至 Airbox
链接: https://pan.baidu.com/s/1ngEYqbJLm4PGPQxsozs-Kw?pwd=w9v9 提取码: w9v9 --来自百度网盘超级会员v5的分享
启动 Stable Diffusion 3 Gradio 服务
确保下载好模型好启动服务
bash run.sh
启动后在您的 PC 浏览器访问 Airbox IP 的 8999 端口即可访问 Stable Diffusion3 Gradio 服务
使用示例
点击右上角 Load Model 加载模型
-
因为模型接近 10G 如果您的模型存放在 emmc 中,加载速度会比较慢,可以选择存放在 SSD 中
-
在 CasaOS 终端中可以看到各个模型的加载细节, SSD 中加载模型需要 37 秒
read file models/mmdit.bmodel, size 100000, duration 0.000318, speed 0.292869 GB/s
[BMRT][bmcpu_setup:406] INFO:cpu_lib 'libcpuop.so' is loaded.
bmcpu init: skip cpu_user_defined
open usercpu.so, init user_cpu_init
[BMRT][load_bmodel:1084] INFO:Loading bmodel from [models/mmdit.bmodel]. Thanks for your patience...
[BMRT][load_bmodel:1023] INFO:pre net num: 0, load net num: 26
[BMRT][bmcpu_setup:406] INFO:cpu_lib 'libcpuop.so' is loaded.
bmcpu init: skip cpu_user_defined
open usercpu.so, init user_cpu_init
[BMRT][load_bmodel:1084] INFO:Loading bmodel from [models/clip_g.bmodel]. Thanks for your patience...
[BMRT][load_bmodel:1023] INFO:pre net num: 0, load net num: 14
[BMRT][bmcpu_setup:406] INFO:cpu_lib 'libcpuop.so' is loaded.
bmcpu init: skip cpu_user_defined
open usercpu.so, init user_cpu_init
[BMRT][load_bmodel:1084] INFO:Loading bmodel from [models/clip_l.bmodel]. Thanks for your patience...
[BMRT][load_bmodel:1023] INFO:pre net num: 0, load net num: 34
[BMRT][bmcpu_setup:406] INFO:cpu_lib 'libcpuop.so' is loaded.
bmcpu init: skip cpu_user_defined
open usercpu.so, init user_cpu_init
[BMRT][load_bmodel:1084] INFO:Loading bmodel from [models/t5.bmodel]. Thanks for your patience...
[BMRT][load_bmodel:1023] INFO:pre net num: 0, load net num: 26
[BMRT][bmcpu_setup:406] INFO:cpu_lib 'libcpuop.so' is loaded.
bmcpu init: skip cpu_user_defined
open usercpu.so, init user_cpu_init
[BMRT][load_bmodel:1084] INFO:Loading bmodel from [models/vae_decoder.bmodel]. Thanks for your patience...
[BMRT][load_bmodel:1023] INFO:pre net num: 0, load net num: 1
You set `add_prefix_space`. The tokenizer needs to be converted from the slow tokenizers
填入 Prompt 信息
-
在 Prompt 填入英文提示词,比如
A cat with a sign text Welcome to radxa!
-
可选填入 Negative Prompt 反向提示词(输入不想出现的物体)
deformed, lowres, bad anatomy, error, extra digit, fewer digits, cropped, worst quality, low quality, jpeg artifacts, signature, watermark, username, blurry, artist name
选择合理的步数和 CFG值,可选 clip skip(跳过模型推理的最后层数,建议为0)和随机种子,最后点击 Submit 按钮开始生成任务,生成的图片结果会直接显示在右边,点击下载图标可自行下载
终端中会打印运行进度,可见平均每个 step 需要 2.93s
set seed to: 15
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
100%|████████████████████████████████████████████████████████████████████| 28/28 [01:22<00:00, 2.93s/it]
更多例子
radxa 提供多个 Example 例子,用户只需单击例子选项即可复现生成的图片。