手把手教你用 ComfyUI 部署 Stable diffusion 3

关于SD3的优势就不再赘述了,这里主要说说普通用户如何在本地进行部署。

目前SD3的模型已经在HuggingFace开源,地址是:https://huggingface.co/stabilityai/stable-diffusion-3-medium

但是下载模型需要先登录Hugging Face账户,并签署一份许可协议

签署完毕之后就可以看到整个项目的文件列表了

上面的文件大致可以分为三部分:

1、comfy_example_workflows

这部分主要是三份Comfyui的工作流文件,下面会用到。

之所以用Comfyui,是因为目前(截止到文章发布时间)的Stable diffusion webui 还没支持SD3,所以并没办法运行SD3的大模型,我也浅试了一下,用目前的 Stable diffusion webui 加载 sd3_medium.safetensors ,但报这样的错。

而Comfyui 目前已经支持了,不过需要注意升级内核版本,低版本的也是不支持的,可以从下面的图片中看到,6月11号的版本才刚开始支持SD3(可见Comfyui很早就收到消息)。

我个人不太建议就只升到 8c4a9be 这个版本,因为后续的发布说明其实还有很多关于SD3的更新,可见 8c4a9be 只是一个比较粗糙的版本,我个人是直接升到了最新版。

2、text_encoders

text_encoders里面有四个模型文件,分别是:

├── text_encoders/
│   ├── clip_g.safetensors
│   ├── clip_l.safetensors
│   ├── t5xxl_fp16.safetensors
│   └── t5xxl_fp8_e4m3fn.safetensors

这里面是三种不同的文本编码器,即两个CLIP模型和T5模型,其中T5模型还提供了两个量化版本,一个16位量化(fp16),一个是8位量化(fp8)。

这里补充一下,CLIP 模型[1]最初由 OpenAI 开发,它是一个多模态预训练模型,能够理解图像和文本之间的关系。CLIP 通过在大量的图像和文本对上进行训练,学习到了一种能够将文本描述和图像内容对齐的表示方法。这种表示方法使得 CLIP 能够理解文本描述的内容,并将其与图像内容进行匹配。

简单来说,CLIP[2]就是将我们的提示词转化为SD模型能够理解的“语言”(向量),从而让SD模型知道要生成怎样的图片。

3、checkpoints

本次SD3一共公开了四个大模型,分别是:

├── sd3_medium.safetensors  (4.34G)
├── sd3_medium_incl_clips.safetensors (5.97 G)
├── sd3_medium_incl_clips_t5xxlfp8.safetensors (10.9G)
└── sd3_medium_incl_clips_t5xxlfp16.safetensors (15.8G)

sd3_medium.safetensors 就是一个比较纯粹的底模,只包含了 MMDiT 和 VAE 的相关权重,但是不包含我们上面第2点提到的任何一个文本编码器。

sd3_medium_incl_clips.safetensors 则是 sd3_medium + clip_g + clip_l 的结合体,这个模型体积会小点,但是没有T5XXL编码器的模型性能会有所不同。

sd3_medium_incl_clips_t5xxlfp8.safetensors 则是 sd3_medium + clip_g + clip_l + t5xxl_fp8_e4m3fn 的结合体,是一个在质量和资源要求之间取得平衡的模型。

sd3_medium_incl_clips_t5xxlfp16.safetensors 则是 sd3_medium + clip_g + clip_l + t5xxl_fp16 的结合体,质量应该会高些,但是占用的显存也是最高的。

接下来就进入到实操的环节了,如果已经装过Comfyui的朋友可以跳过第一部分。

一、安装Comfyui

第一步是下载安装包,这里我准备了夸克网盘和百度网盘两种形式

# 夸克网盘是秋叶大佬提供的安装包,所以包含的内容比较多
https://pan.quark.cn/s/64b808baa960#/list/share/377bd955c75a411c8d1d01f366255cdb-ComfyUI*101aki
# 百度网盘是我自己下载后再上传的,只放了一个整合包,方便没有夸克网盘的朋友
链接:https://pan.baidu.com/s/103QhzN5R7m-19-JFW6Z9Yw 
提取码:6666

第二步就是解压安装,双击启动器,启动器的布局是和之前的SD启动器是基本差不多的

启动成功后,点击一键启动,出现这个画面就成功了一半了

第三步是升级内核版本,如果已经升级过的朋友可跳过

我这边是直接升到了最新版,包括扩展版本也都是升到了最新

我这边启动的时候会有一些报错(可能是升了版本导致),但是实际测试后对SD3的出图不影响

二、下载模型

本次我们并不需要用到上述所有模型,只需要用到这四个模型即可:

  • sd3_medium.safetensors
  • clip_g.safetensors
  • clip_l.safetensors
  • t5xxl_fp8_e4m3fn.safetensors

下载完毕后将 sd3_medium.safetensors 放入 modelscheckpoints 文件夹,其余三个放入 modelsclip 文件夹即可

三、导入工作流

这里用到的是 comfy_example_workflows文件夹下面的 sd3_medium_example_workflow_basic.json

点击左上角的文件夹图标,会弹出一个工作流文件列表

点击 Import 导入前面的 sd3_medium_example_workflow_basic.json 文件

如果你是先导入工作流,没有放模型,可能会有这样的提示,其实就是告知你模型加载失败,或者你的内核版本没有升级也会导致

其次你可能还要调整显存优化的选项,不然出图可能会失败(看个人显存情况)

最后就是点击 “添加提示词队列” 按钮就会生成图片了

四、测试效果

我这里在面部绘画、手部绘画、字体书写排版、全身照、动物、植物都做了一个简单的对比,使用的SDXL(加了Refiner)和SD3进行对比,并控制图片尺寸大小都是1024,但是在一些细节参数(CFG Scale)还是略有差异,下面请看VCR。

注:左边的照片都是SDXL生成,右边都是SD3生成

4.1 面部绘画

提示词:happy indian girl,portrait photography,beautiful,morning sunlight,smooth light,shot on kodak portra 200,film grain,nostalgic mood,

个人看法:SDXL稍微略逊一筹,因为看起来是一个小女孩,脸部却像一个中年妇女,不是很匹配

4.2 手部绘画

提示词:a girl sitting in the cafe, play guitar,comic, graphic illustration, comic art, graphic novel art, vibrant, highly detailed, colored, 2d minimalistic

个人看法:SDXL还是差一点,双腿绘画明显有问题,手部SD3稍微好点,但是也没有那么惊艳

4.3 字体书写排版

SD3提供的提示词:A vibrant street wall covered in colorful graffiti, the centerpiece spells "SD3 MEDIUM", in a storm of colors

之前用的提示词:Epic anime artwork of a wizard atop a mountain at night casting a cosmic spell into the dark sky that says "Stable Diffusion 3" made out of colorful energy

个人看法:从上面两组图可以看出,SD3的字体书写能力确实是高出SDXL一大截的,但是也不能保证很完美。

4.4 全身照

提示词:a full body portrait of an old hipster man with a ponytail, cigar in mouth, smoke, badass

个人看法:这里我其实是想让他们画全身照的,SD3稍微理解好一点,但是风格上我更喜欢SDXL

提示词:Editorial portrait,full body,1male,dynamic pose,futuristic fashion,cinematic,

个人看法:感觉差不多,但是SD3画出了全身

4.5 植物

提示词:a frozen cosmic rose, the petals glitter with a crystalline shimmer, swirling nebulas, 8k unreal engine photorealism, ethereal lighting, red, nighttime, darkness, surreal art

4.6 拟人化动物

提示词:full body,cat dressed as a Viking,with weapon in his paws,battle coloring,glow hyper-detail,hyper-realism,cinematic

4.7 SD3的一些翻车

可能在网上大家有看到SD3翻车的一些案例,我这边在测试的时候也遇到,有时候在画一些人的时候,确实会出现画得比较怪的情况,甚至画错。据说是因为他们的 NSFW过滤器(过滤掉不合规的成人内容),把所有人类图像都判定为了NSFW,导致误删了一些无害的成人图像。

比如这一组提示词:A girl lying on the grass

个人看法:这组SDXL明显更好,SD3的脖子还有手部那里就感觉怪怪的

还有这一组:A couple lying on the beach in the sun

这一组两边明显都画不好,而且我也发现了一个点,就是在画两人拥抱,或者之间有其他动作的时候,SD的模型的手部特别容易出错,我觉得这是他们后续可以改进的一个点。

像这个也是一个经典的案例

最后还有一个点,也是在测试的时候发现的,就是SD3生成的图片明显更鲜艳,曝光是刚刚好的状态,而SDXL就比较暗沉,有点欠曝。

从上面的测试可以得到,SD3生成的总体效果要优于SDXL,具体表现在图片的细节、色彩、光照方面会更加出色,曝光也更好,已经接近真实的照片;另外在字体书写排版、提示词的理解能力也强一些,但在某些方面还是存在不足,希望后续能不断优化。

参考资料

[1]CLIP 模型: https://github.com/mlfoundations/open_clip

[2]CLIP: /24393799e05448618383abc6e05ca655?pvs=25

10