许可协议:openrail++
标签:
stable-diffusion-xl-base-1.0-GGUF
!!! 仅由 gpustack/llama-box v0.0.75+ 实验性支持 !!!
模型创建者: Stability AI
原始模型: stable-diffusion-xl-base-1.0
GGUF量化: 基于 llama-box 修补的 stable-diffusion.cpp ac54e。
VAE来源: madebyollin/sdxl-vae-fp16-fix。
量化方式 |
OpenAI CLIP ViT-L/14 量化 |
OpenCLIP ViT-G/14 量化 |
VAE 量化 |
FP16 |
FP16 |
FP16 |
FP16 |
Q8_0 |
FP16 |
FP16 |
FP16 |
Q4_1 |
FP16 |
FP16 |
FP16 |
Q4_0 |
FP16 |
FP16 |
FP16 |
SD-XL 1.0-base 模型卡片

模型

SDXL 采用了一种专家集成的潜在扩散流程:
首先,基础模型用于生成(带噪声的)潜在表示,随后通过一个专门用于最终去噪步骤的优化模型(可在此获取:https://huggingface.co/stabilityai/stable-diffusion-xl-refiner-1.0/)进行进一步处理。
需要注意的是,基础模型可以独立使用。
或者,我们可以采用两阶段流程:
首先,基础模型用于生成所需输出尺寸的潜在表示。
第二步,使用专门的高分辨率模型,并应用一种称为 SDEdit(https://arxiv.org/abs/2108.01073,也称为“img2img”)的技术,
对第一阶段生成的潜在表示进行处理,使用相同的提示。这种技术比第一种稍慢,因为它需要更多的函数评估。
源代码可在 https://github.com/Stability-AI/generative-models 获取。
模型描述
模型来源
出于研究目的,我们推荐我们的 generative-models
GitHub 仓库(https://github.com/Stability-AI/generative-models),它实现了最流行的扩散框架(包括训练和推理),并且随着时间的推移会添加蒸馏等新功能。
Clipdrop 提供免费的 SDXL 推理。
- 仓库: https://github.com/Stability-AI/generative-models
- 演示: https://clipdrop.co/stable-diffusion
评估
上图评估了用户对 SDXL(带优化和不带优化)与 SDXL 0.9 及 Stable Diffusion 1.5 和 2.1 的偏好。
SDXL 基础模型的表现显著优于之前的版本,而结合优化模块的模型实现了最佳的整体性能。
🧨 Diffusers
确保将 diffusers 升级到 >= 0.19.0:
pip install diffusers --upgrade
此外,确保安装 transformers
、safetensors
、accelerate
以及不可见水印:
pip install invisible_watermark transformers accelerate safetensors
如果仅使用基础模型,可以运行:
from diffusers import DiffusionPipeline
import torch
pipe = DiffusionPipeline.from_pretrained("stabilityai/stable-diffusion-xl-base-1.0", torch_dtype=torch.float16, use_safetensors=True, variant="fp16")
pipe.to("cuda")
prompt = "一名宇航员骑着一匹绿色的马"
images = pipe(prompt=prompt).images[0]
要使用完整的“基础 + 优化”流程作为专家集成,可以运行:
from diffusers import DiffusionPipeline
import torch
base = DiffusionPipeline.from_pretrained(
"stabilityai/stable-diffusion-xl-base-1.0", torch_dtype=torch.float16, variant="fp16", use_safetensors=True
)
base.to("cuda")
refiner = DiffusionPipeline.from_pretrained(
"stabilityai/stable-diffusion-xl-refiner-1.0",
text_encoder_2=base.text_encoder_2,
vae=base.vae,
torch_dtype=torch.float16,
use_safetensors=True,
variant="fp16",
)
refiner.to("cuda")
n_steps = 40
high_noise_frac = 0.8
prompt = "夜晚,一只雄伟的狮子从大石头上跳下"
image = base(
prompt=prompt,
num_inference_steps=n_steps,
denoising_end=high_noise_frac,
output_type="latent",
).images
image = refiner(
prompt=prompt,
num_inference_steps=n_steps,
denoising_start=high_noise_frac,
image=image,
).images[0]
当使用 torch >= 2.0
时,可以通过 torch.compile 将推理速度提高 20-30%。只需在运行流程前用 torch.compile 包装 unet:
pipe.unet = torch.compile(pipe.unet, mode="reduce-overhead", fullgraph=True)
如果受限于 GPU 显存,可以通过调用 pipe.enable_model_cpu_offload
启用 CPU 卸载,而不是 .to("cuda")
:
- pipe.to("cuda")
+ pipe.enable_model_cpu_offload()
有关如何使用 diffusers
运行 Stable Diffusion XL 的更多信息,请参阅 Stable Diffusion XL 文档。
Optimum
Optimum 提供了一个兼容 OpenVINO 和 ONNX Runtime 的 Stable Diffusion 流程。
OpenVINO
安装 Optimum 及 OpenVINO 所需的依赖项:
pip install optimum[openvino]
要加载 OpenVINO 模型并使用 OpenVINO Runtime 运行推理,需要将 StableDiffusionXLPipeline
替换为 Optimum 的 OVStableDiffusionXLPipeline
。如果想加载 PyTorch 模型并动态转换为 OpenVINO 格式,可以设置 export=True
。
- from diffusers import StableDiffusionXLPipeline
+ from optimum.intel import OVStableDiffusionXLPipeline
model_id = "stabilityai/stable-diffusion-xl-base-1.0"
- pipeline = StableDiffusionXLPipeline.from_pretrained(model_id)
+ pipeline = OVStableDiffusionXLPipeline.from_pretrained(model_id)
prompt = "夜晚,一只雄伟的狮子从大石头上跳下"
image = pipeline(prompt).images[0]
更多示例(如静态重塑和模型编译)可在 Optimum 文档 中找到。
ONNX
安装 Optimum 及 ONNX Runtime 推理所需的依赖项:
pip install optimum[onnxruntime]
要加载 ONNX 模型并使用 ONNX Runtime 运行推理,需要将 StableDiffusionXLPipeline
替换为 Optimum 的 ORTStableDiffusionXLPipeline
。如果想加载 PyTorch 模型并动态转换为 ONNX 格式,可以设置 export=True
。
- from diffusers import StableDiffusionXLPipeline
+ from optimum.onnxruntime import ORTStableDiffusionXLPipeline
model_id = "stabilityai/stable-diffusion-xl-base-1.0"
- pipeline = StableDiffusionXLPipeline.from_pretrained(model_id)
+ pipeline = ORTStableDiffusionXLPipeline.from_pretrained(model_id)
prompt = "夜晚,一只雄伟的狮子从大石头上跳下"
image = pipeline(prompt).images[0]
更多示例可在 Optimum 文档 中找到。
用途
直接使用
该模型仅供研究使用。可能的研究领域和任务包括:
- 艺术创作及设计和艺术过程中的应用。
- 教育或创意工具中的应用。
- 生成模型的研究。
- 安全部署可能生成有害内容的模型。
- 探索和理解生成模型的局限性和偏见。
以下用途不在适用范围内。
非适用用途
该模型未经过训练以生成人物或事件的真实或准确表示,因此使用该模型生成此类内容超出了该模型的能力范围。
局限性与偏见
局限性
- 模型无法实现完美的照片级真实感
- 模型无法渲染可读文本
- 模型在处理涉及组合性的更复杂任务时表现不佳,例如渲染“蓝色球体上的红色立方体”对应的图像
- 面部和人物可能无法正确生成
- 模型的自动编码部分是有损的
偏见
尽管图像生成模型的能力令人印象深刻,但它们也可能强化或加剧社会偏见。