Stable Diffusion Quick Start | 深度学习算法
本文基于 Diffusers 给出了一个简单的 Stable Diffusion 简单 demo,对比了使用 LCM 的 SDXL 和原版 SDXL 的运行效率和算法效果。
主流代码库
目前主流的基于扩散模型的生成任务代码有两个,一个是 Stability-AI/stablediffusion,另一个就是 Diffusers。前者就是著名的 AUTOMATIC1111/stable-diffusion-webui 的底层实现,后者主要用于训练。
模型格式
在 HuggingFace 上下载模型时,一般会在仓库中见到两种格式的模型,即 diffusers 格式和 ckpt 格式。下图展示了一个模型仓库的文件,其中上面的红框对应的是 diffusers 格式,下面的红框对应的是 ckpt 格式:
ckpt 格式也分为两种:原始 ckpt 格式和 safetensors 格式。safetensors 格式是 ckpt 格式转换得到的,防止有人在 ckpt 文件中加入恶意代码。safetensor 格式和 ckpt 格式都能直接用于 stable-diffusion-webui 项目,而 diffusers 格式的模型则只能使用 diffusers 运行。
算法效果
虽然 stable-diffusion-webui 项目是主流的用于推理的项目,但是需要配合浏览器使用,不能在纯命令行环境下使用,在某些云服务器上运行不方便,所以本文采用 Diffusers 进行演示。
本文参考这个脚本进行了效果和性能测试。使用的 prompt 是:close-up photography of beautiful young woman in the sunshine, leica 35mm summilux。
模型类型 | 采样次数 | 算法效果 |
---|---|---|
SDXL | 20 | |
SDXL + LCM-LoRA | 4 |
性能对比
测试所用显卡为 NVIDIA A10,并且开启了 FP16。
模型类型 | 采样次数 | 运行时间 | 显存占用 | 模型大小 |
---|---|---|---|---|
SDXL | 20 | 8.851 s | 10.75 GB | x |
SDXL + LCM-LoRA | 4 | 1.824 s | 14.63 GB | 376 MB + x |
可以看出,因为采样次数的减少,推理时间大大减少。同时因为使用了额外的 LoRA 模型,整体模型体积和显存占用都增加了。
参考
Stable Diffusion Quick Start | 深度学习算法