StableDiffusion-3.5 文生图模型本地部署尝鲜

文章目录

  • 官方仓库
  • ComfyUI 配置
  • 模型文件
  • 生成图片,观察日志
  • 生成样例

买了新的 4070TiS 显卡之后,终于有了个人的 16GB 显存,再也不用在关键时刻和实验室的其他人抢那两张 3080Ti 12G 了,所以想试试看干净的 Linux 环境下,显卡用于 AI 创作工作的效率,正好最近听说 StableDiffusion 3.5 模型发布了,有更快的速度和更好的提示词跟随性,我以前也没有试过本地部署这些文生图模型,都是玩在线的一些体验网站。

官方仓库

官方的 sd3.5 仓库 从 README 来看是只支持命令行操作的,有点不方便,所以需要额外使用支持这些大模型或者文生图模型的 UI 界面程序辅助。印象中之前比较火的是 StableDiffusionWebUI 这款,可以在 Windows 上直接运行,但是我现在是 Linux Ubuntu 24.04 ,所以随便谷歌了一下看看有什么推荐,大部分博客都是推荐一个叫 ComfyUI 的可视化界面程序。

在这里插入图片描述

ComfyUI 配置

StableDiffusion 3.5 的发布文章好像就是有 ComfyUI 的推荐链接的,关于 ComfyUI 和 StableDiffusionWebUI 谁好大家可以自己谷歌看看博客,一般是说 ComfyUI 的话占用计算资源更少,出图更快,灵活性更高,使用节点自定义配置界面,但是也更难上手和学习(我觉得还好,节点的输入输出已经节点的功能都直接显示在节点上了一眼就能看明白)。

在这里插入图片描述

根据教程的指示,先把该下载的模型文件下载好,需要 Hugging Face 的账号,随便用邮箱注册一个即可,然后下载模型文件之前需要填写表单表明模型的使用意图之类的,也很简单,没有真实性校验,全凭个人君子本性[doge]

然后克隆 comfyui 的代码仓库到本地,comfyui 也是通过 python 启动一个后台进程,提供一个前段页面供用户操作。参考 comfyui 的官方文档安装 comfyui 的 conda 环境:

# for amd gpupip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/rocm6.0
# or
pip install --pre torch torchvision torchaudio --index-url https://download.pytorch.org/whl/nightly/rocm6.1# for nvidia gpupip install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu121
# or
pip install --pre torch torchvision torchaudio --index-url https://download.pytorch.org/whl/nightly/cu124

这里要求 pytorch 的版本使用对应的 cuda12.4 ,其实 cuda 12 之上都可以,我装的是 12.1 就行(第一次装的 cuda 11.3 运行文生图会发生报错,有一些 torch 的 api 是版本不支持,要到 2.0 之后才支持)。这一步骤主要是先安装 GPU 依赖。另外,安装 pytorch 的时候无需本地安装 cuda 和 cudnn,pytorch 的包是自带 cuda 二进制可执行文件和动态库以及 cudnn 的动态库了,不要再自己额外本地 /usr/local 的什么位置安装全局的 cuda ,否则可能导致环境错乱。一般来说 python 写炼丹机器学习代码,你不是开发 cuda 库或者 python 库需要使用 cuda 的 C/C++ API 头文件自行编译什么库给其他人用的话,是不需要在本地安装 cuda 和 cudnn 套件的,作为使用者,我们只需要二进制可知性文件,因此直接按照 pytorch 官网的安装指令安装 pytorch 就行(之前初学的时候一直以为要本地安装 cuda 和 cudnn 先,实验室服务器环境一团乱麻,各种版本的 cuda,坑死了)。最后,numpy 1.x 适用于 torch 1.x ,numpy 2.x 适用于 torch 2.x ,如果两者的版本不匹配的话,torch 很可能运行不了(不确定是不是一定这样,但是我其他实验要跑起来必须这么匹配版本)。

然后在克隆下来的 comfyui 项目根目录下根据 requirements.txt 安装其他依赖:

pip install -r requirements.txt

模型文件

  • Update ComfyUI to the latest version.
  • Download Stable Diffusion 3.5 Medium and save it to your models/checkpoint folder.
  • Ensure clip_g.safetensors, clip_l.safetensors, and t5xxl_fp16.safetensors are in your models/clip folder.
  • Download the workflow here and start creating!

根据发布文章中的图片表格选择自己合适的模型!我是 4070TiS 16GB ,所以选择 large-turbo 可能是比较合适的,兼顾了出图速度和质量。

![[Pasted image 20241104164735.png]]

回到 comfyui 接入 sd3.5 的教程博客中。根据教程的指示,把对应的文生图模型和语言模型移动到指定的目录下:

(sd3.5) ┌[fredom@4070TiS 16:23:38] ~/workspace/ComfyUI (master)
└> ls models/checkpoints/
total 16G
-rw-rw-r-- 1 fredom fredom   0 Nov  3 19:28 put_checkpoints_here
-rw-rw-r-- 1 fredom fredom 16G Nov  4 10:58 sd3.5_large_turbo.safetensors
(sd3.5) ┌[fredom@4070TiS 16:35:19] ~/workspace/ComfyUI (master)
└> ls models/clip
total 11G
-rw-rw-r-- 1 fredom fredom 1.3G Nov  4 11:39 clip_g.safetensors
-rw-rw-r-- 1 fredom fredom 235M Nov  4 11:57 clip_l.safetensors
-rw-rw-r-- 1 fredom fredom    0 Nov  3 19:28 put_clip_or_text_encoder_models_here
-rw-rw-r-- 1 fredom fredom 9.2G Nov  4 13:41 t5xxl_fp16.safetensors

然后 python main.py 即可运行后台进程在 8081 端口提供 web service 前段可视化服务。

在这里插入图片描述

本地打开提供的链接之后,可以得到工作流节点的可视化界面,我的界面因为之前改过所以不是默认的了,这里我把提示词的节点换成了 TripleCLIPLoader

在这里插入图片描述

原始的 CLIPLoader 运行的话会报错,提示无法找到提示词语言模型不知道咋回事,后来在这个 issue 下有人回答了如果使用了 3.5 教程中的三个 clip 模型放到 models/clip 目录下的话,那么 clip 节点需要相应的换成 TripleCLIPLoader ,然后点击节点中对应的模型进行加载。

在这里插入图片描述

生成图片,观察日志

在正面提示词(posity)和负面提示词(negative)完成填写之后,可以点击右下角面板的 Queue Prompt ,将当前提示词加入生成队列,此时可以观察后台终端的输出,或者浏览器标签页的标题,会显示生成进度,同时节点界面也会使用绿色边框高亮目前进行到哪个节点步骤。

在这里插入图片描述

在这里插入图片描述

据我大概观察,一般是 10 秒出一张预览图,至于保存图片什么的节点就没去尝试了,因为证明了显卡能够正常工作以及出图的速度测试就行,之前显卡也已经经过了一个晚上通宵的炼丹测试,证明显卡装机之后稳定性没问题,系统稳定性没问题。

然后在生成的过程中也观察了一下显存和计算利用率,好家伙真的是极限,Large-turbo 80 亿参数(8.1B),生成 512x512 的图像基本吃满显卡。

在这里插入图片描述

基本上吃满显存了,平时不动的显卡风扇也有了 30% 的转速,功耗来到了 200w ,所以如果小伙伴的显卡也是 16 GB 的话,可能无法使用原生的 Large 模型了,估计要 4090 24GB 级别的才能愉快玩耍。

生成样例

最后是一些生成的样本,感觉效果不如 GPT 给出来的好,不过毕竟是开源的,而且我用的模型是 Large-turbo 也不是 Large 估计效果还是会损失一些的。不过这些图片拿来做唱片的专辑倒是很合适。

luxury sedan drving in the downtown in a rainy night

在这里插入图片描述

Lenna image

在这里插入图片描述

anime girl fennec ears blue eyes black medium hair red highlights wearing a long black pants blue pattern standing in the middle of cyberpunk neon city at night smog china

在这里插入图片描述

这个样本和别人的 medium 模型的差距有点大,是我的使用姿势不对?

还有一些奇怪的提示词也是可以的哈,但是不推荐大家拿来做坏事……

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

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

相关文章

规范:项目、目录、文件、样式、事件、变量、方法、url参数、注释、git提交 命名规范及考证

一、规范命名的重要性 易懂、通用、规范、标准、专业性、是经验积累的体现 1.1、常见命名方法 序号命名方法解释1全小写2全大写3驼峰:小驼峰命名法4驼峰:大驼峰命名法5烤串命名法 / 脊柱命名法6下划线分隔法 二、项目名 采用小写字母和中划线&#…

Navicat 连接远程腾讯云服务器的MySQL数据库

首先需要开放开放腾讯云安全端口,可以参考这个链接腾讯云服务器入站规则端口开放使用指南(CentOS系统)。 但是注意需要开放的是IPv6,这个可以通过netstat命令查看确认。 然后查看当前用户信息 select user, host from mysql.user一般看到的都是 localh…

第三十四篇:URL和URI的区别,HTTP系列一

前面我们讲到通过TCP协议通信双方建立可靠连接,那么此时双方进行通信,需要用人能理解的形式进行信息组织,也就是为各种特定需求服务,满足日常生活中的各种场景。 比如:网页浏览、电子邮件、远程登录、文件传输、网络管…

什么情况下,不推荐建立索引?

一般有以下几种情况不推荐建立索引: 1)对于数据量很小的表 当表的数据量很小(如几百条记录)时,建立索引并不会显著提高查询性能,反而可能增加管理的复杂性; 2)频繁更新的表 对于…

GitHub上传自己的项目

目录 一、安装Git插件 1)下载 2)安装 二、创建Gothub的创库 三、通过Git上传本地文件到Github 四、其他 1、部分指令 2、如果已经运行过git init并设置了[user],下次可以直接用 一、安装Git插件 1)下载 下载地址&#x…

「Mac畅玩鸿蒙与硬件26」UI互动应用篇3 - 倒计时和提醒功能实现

本篇将带领你实现一个倒计时和提醒功能的应用,用户可以设置倒计时时间并开始计时。当倒计时结束时,应用会显示提醒。该项目涉及时间控制、状态管理和用户交互,是学习鸿蒙应用开发的绝佳实践项目。 关键词 UI互动应用倒计时器状态管理用户交互…

Linux动态库和静态库

1,手动制作静态库 1,如何形成静态库文件 做库时,头文件(.h)必须暴露,源文件(.c)必须隐藏。 操作:将需要形成库的文件编译成.o文件: 然后用指令:ar -rc libmy_stdio.a my_stdio.o my_string.o…

java基础之 String\StringBuffer\ StringBuilder

文章目录 String字符串的创建为什么说String是不可变的?创建后的字符串存储在哪里?字符串的拼接String类的常用方法 StringBuilder & StringBuffer使用方法验证StringBuffer和StringBuilder的线程安全问题 总结三者区别什么情况下用运算符进行字符串…

告别繁琐统计,一键掌握微信数据

微信数据管理的挑战在数字时代,微信已成为我们日常沟通和商业活动的重要工具。然而,随着微信号数量的增加,手动统计每个账号的数据变得越来越繁琐。从好友数量到会话记录,再到转账和红包,每一项都需要耗费大量的时间和…

bert-base-chinese模型使用教程

向量编码和向量相似度展示 import torch from transformers import BertTokenizer, BertModel import numpy as npmodel_name "C:/Users/Administrator.DESKTOP-TPJL4TC/.cache/modelscope/hub/tiansz/bert-base-chinese"sentences [春眠不觉晓, 大梦谁先觉, 浓睡…

HTML+CSS科技感时钟(附源码!!!)

预览效果 源码(直接复制使用) <!DOCTYPE html> <html lang"zh-Hans"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>科技感时钟</…

PyQt5实战——UTF-8编码器功能的实现(六)

个人博客&#xff1a;苏三有春的博客 系类往期文章&#xff1a; PyQt5实战——多脚本集合包&#xff0c;前言与环境配置&#xff08;一&#xff09; PyQt5实战——多脚本集合包&#xff0c;UI以及工程布局&#xff08;二&#xff09; PyQt5实战——多脚本集合包&#xff0c;程序…

‌MySQL中‌between and的基本用法‌

文章目录 一、between and语法二、使用示例2.1、between and数值查询2.2、between and时间范围查询2.3、not between and示例 BETWEEN AND操作符可以用于数值、日期等类型的字段&#xff0c;包括边界值。 一、between and语法 MySQL中的BETWEEN AND操作符用于在两个值之间选择…

微服务系列一:基础拆分实践

目录 前言 一、认识微服务 1.1 单体架构 VS 微服务架构 1.2 微服务的集大成者&#xff1a;SpringCloud 1.3 微服务拆分原则 1.4 微服务拆分方式 二、微服务拆分入门步骤 &#xff1a;以拆分商品模块为例 三、服务注册订阅与远程调用&#xff1a;以拆分购物车为例 3.1 …

jvm学习笔记-轻量级锁内存模型

一&#xff0c;轻量级锁 LockRecord的那个第一个成员变量是拷贝对应锁定了的java对象资源的MarkWord&#xff0c;Lock Record有一个Ptr指针刚开始指向自己&#xff0c;后面这个指针存储在锁定资源的java对象的markword中&#xff0c;后续可以通过java对象的MarkWord快速定位到…

【力扣专题栏】面试题 01.02. 判定是否互为字符重排,如何利用数组模拟哈希表解决两字符串互排问题?

题解目录 1、题目描述解释2、算法原理解析3、代码编写(1)、两个数组分别模拟哈希表解决(2)、利用一个数组模拟哈希表解决问题 1、题目描述解释 2、算法原理解析 3、代码编写 (1)、两个数组分别模拟哈希表解决 class Solution { public:bool CheckPermutation(string s1, stri…

指针和内存地址的关系(uint8_t和uint32_t的指针有什么区别)

指针在我们的学习中非常常见&#xff0c;有些人只是了解指针的基本概念&#xff0c;却不知道他的原理&#xff0c;到时候使用起来一头雾水&#xff0c;接下来我将对指针做出一些解释说明。 一、数据是如何存储的&#xff1a; 我们初始化一个int变量a,变量a会存储到内存中&#…

flutter 专题四 Flutter渲染流程

一、 Widget - Element - RenderObject关系 二、 Widget 、Element 、RenderObject 分别表示什么 2.1 Widget Widget描述和配置子树的样子 Widget就是一个个描述文件&#xff0c;这些描述文件在我们进行状态改变时会不断的build。但是对于渲染对象来说&#xff0c;只会使用最…

高效内容营销策略提升品牌影响力与客户忠诚度

内容概要 内容营销是一种通过创造和分享有价值的内容&#xff0c;以吸引特定目标受众并促进品牌发展的策略。这种营销形式不仅仅注重产品的直接推广&#xff0c;更着眼于与受众之间建立长期的信任关系。有效的内容营销能够提升品牌在市场中的影响力和客户的忠诚度&#xff0c;…

git 入门作业

任务1: 破冰活动&#xff1a;自我介绍任务2: 实践项目&#xff1a;构建个人项目 git使用流程&#xff1a; 1.将本项目直接fork到自己的账号下&#xff0c;这样就可以直接在自己的账号下进行修改和提交。 这里插一条我遇到的问题&#xff0c;在fork的时候没有将那个only camp4的…