以下文章来源于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 系统终端用户名和密码
CasaOS登陆界面Username: linaro
Password: linaro
点击 CasaOS 左上角第三个图标登陆 Airbox 系统终端
CasaOS 终端登陆界面代码环境准备
终端打开后,接下来就直接复制提供的命令就好
克隆 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 服务
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 按钮开始生成任务,生成的图片结果会直接显示在右边,点击下载图标可自行下载
Stable Diffusion 3 生图效果
终端中会打印运行进度,可见平均每个 step 需要 2.93s
set seed to: 15
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
100%|████████████████████████████████████████████████████████████████████| 28/28 [01:22<00:00, 2.93s/it]
更多例子
radxa 提供多个 Example 例子,用户只需单击例子选项即可复现生成的图片。
Prompt: A vibrant street wall covered in colorful graffiti, the centerpiece spells "Radxa Airbox", in a storm of colors
Prompt: a cyberpunk hotel with the neon sign with the text Radxa Airbox
Prompt: Astronaut in a jungle, cold color palette, muted colors, detailed, 8k
总结
**Stable Diffusion 3 Medium在Radxa Airbox上的部署与应用总结**Stable Diffusion 3 Medium作为一种先进的多模态扩散变换器(MMDiT)文本到图像模型,在图像质量、排版、复杂提示理解和资源效率上均有显著提升。瑞莎团队通过SOPHON SDK将该模型移植到SG2300X处理器系列产品上,实现了在Radxa Airbox上的离线快速图像生成。
**环境准备**:
**硬件方面**:
- 主要设备:Radxa Airbox + 65W配套电源
- 辅助设备:网线(接入WAN或LAN接口)、可选Type-C数据线连接PC(便于管理和调试)、保证Airbox能通过网络被访问。
**软件方面**:
- Airbox预装CasaOS,可通过浏览器访问其IP地址的81端口进行登录和配置。
- 推荐使用CasaOS命令行模式进行操作,特别是对Linux新手而言。
**部署步骤**:
1. **登录CasaOS**: 通过浏览器访问Airbox IP的81端口,使用预设用户名(radxa)和密码(radxa)登录CasaOS,进一步通过系统终端用户名(linaro)和密码(linaro)登陆Airbox系统终端。
2. **克隆代码并配置环境**: 在终端中运行命令,从GitHub克隆SD3-Medium-TPU代码仓库并配置必要的运行环境依赖。
3. **下载模型**: 可通过run.sh脚本自动从GitHub下载模型,或备选方案是从百度网盘手动下载并上传至Airbox。
4. **启动Stable Diffusion 3 Gradio服务**: 使用bash run.sh启动服务,之后在PC浏览器访问Airbox IP的8999端口以访问Gradio前端界面。
**使用示例**:
- 通过Gradio前端加载模型(注意,较大模型加载速度慢,建议存放在SSD中)。
- 输入英文Prompt信息(如“A cat with a sign text Welcome to radxa!”)及可选的Negative Prompt来指定不希望出现的元素。
- 设置合理的步数和CFG值等参数后提交任务,生成的图片将直接显示并支持下载。
**展示效果与效率**:
- 示例显示生成的图片质量高,符合Prompt描述。
- 加载和生成图片的过程有详细的终端日志输出,如每步约需2.93秒,便于性能监控。
**附加资源**:
- Radxa提供了多个示例Prompt供用户快速尝试,如“A vibrant street wall covered in colorful graffiti…”等,进一步简化了尝试流程。
总结:通过Radxa的硬件优化及SOPHON SDK的加持,Stable Diffusion 3 Medium在Airbox上的部署与运行表现出色,为提高文本到图像生成效率和质量提供了新的解决方案。