Stable Diffusion 本地部署与快速上手指南
Stable Diffusion 是一款开源文生图模型,支持消费级 GPU 运行。本文介绍其三种使用方式:官方 Web 应用、Google Colab 云端及本地部署。重点详述了本地环境搭建流程,包括硬件要求、Conda 环境配置、模型下载及脚本执行,并提供了提示词编写技巧、显存优化方案及图生图玩法,帮助开发者快速上手 AI 绘画创作。文章还涵盖了常见问题的排查方法,旨在提供一份完整的本地部署指南。

Stable Diffusion 是一款开源文生图模型,支持消费级 GPU 运行。本文介绍其三种使用方式:官方 Web 应用、Google Colab 云端及本地部署。重点详述了本地环境搭建流程,包括硬件要求、Conda 环境配置、模型下载及脚本执行,并提供了提示词编写技巧、显存优化方案及图生图玩法,帮助开发者快速上手 AI 绘画创作。文章还涵盖了常见问题的排查方法,旨在提供一份完整的本地部署指南。

继 DALL-E 和 Midjourney 之后,AI 绘图领域又一款热门的深度学习模型问世——Stable Diffusion。2022 年 8 月发布的 Stable Diffusion 更加高效且轻量,可以在消费级 GPU 上运行。Stability AI 公司表示:'它在速度和质量上的突破意味着它可以在消费者级的 GPU 上运行。这将允许研究人员和公众在一系列条件下运行它,并使图像生成普及化。'
这意味着现在你只需一句话和几十秒的时间,就可以让你脑海中天马行空的画面出现在你眼前:

或者随手画一笔,让 AI 帮你加'亿点点'细节:

目前主要有三种方式来体验和使用 Stable Diffusion,各有优劣。
适合快速上手体验一下,或者付费玩家。

Colab 是 Google Research 团队开发的一款产品,可以通过浏览器编写和执行 Python,并免费分配使用包括 GPU 在内的计算资源。
打开 Colab 笔记本页面,按照步骤和提示执行即可。可能存在的坑在于模型的载入,需要用到特定的 Notebook 链接,不过通常都不是大问题。
虽然看着繁琐,但是可以薅羊毛用免费的显卡资源,性能也还不错,还是很香的。
这是最推荐的方式,适合长期开发和深度定制。
目前存在多个基于官方代码仓库 fork 出来的不同版本,可以有不同的部署和运行方式,包括 Docker 部署、WebUI(如 Automatic1111)等。这里讲解基于官方的原版进行部署和使用,其他的方式都大同小异。
这个放在第一位是因为权重文件太大了,建议先下载起来,其他步骤在操作时,它可以在后台慢慢下载。
目前常用的是 sd-v1-4.ckpt,版本越高,训练的数据量越大,下载最新版本即可,大小约 4.27GB。
可以去 HuggingFace 下载,或使用以下命令:
curl https://www.googleapis.com/storage/v1/b/aai-blog-files/o/sd-v1-4.ckpt?alt=media > sd-v1-4.ckpt
如果上述链接失效,请前往 HuggingFace 官网搜索 stablediffusion 相关模型仓库下载。
确保系统已安装 Python,并在命令行输入 python --version 查看版本。如果不满足要求,请前往 python.org 下载安装包。
Conda 是一个依赖包和环境管理工具,有 Anaconda 和 Miniconda 两个版本,这里使用 Miniconda 就可以,体积更小。
可以官网下载对应的安装包,也可以命令行下载安装。
如果安装成功,可以通过 conda --version 查看版本,conda 准备好就可以进入下一步。
使用 Git 克隆官方仓库:
git clone https://github.com/CompVis/stable-diffusion.git
cd stable-diffusion/
a. 创建 ldm 环境
进入 Stable Diffusion 代码目录,使用 environment.yaml 文件,创建 Conda 环境。
conda env create -f environment.yaml
这个命令会根据 environment.yaml 文件,创建一个名字叫做 ldm 的虚拟环境,下载对应的依赖。这一步是很容易出现问题的地方,因为依赖比较多,安装时间比较长。可能会出现某些依赖安装时间特别长,最后失败的情况。
可能出现的问题及解决方案:
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
Pip subprocess error: ERROR: Command errored out with exit status 128: git fetch -q … 的错误,则检查当前网络环境对 GitHub 的访问是否通畅,可能需要配置代理。# 查看已存在环境
conda env list
# 先切换到 base 环境
conda activate base
# 删除 ldm
conda env remove --name ldm
b. 激活 ldm 环境
conda activate ldm
走完前面这些步骤,确认一下你的模型权重文件下载好了没有,--ckpt 参数就指向这个文件。按照下面的参数,执行 txt2img.py 脚本。
python scripts/txt2img.py --prompt "rainbow ice cream cone" --plms --ckpt sd-v1-4.ckpt --skip_grid --n_samples 1
如果执行成功,你应该可以在 output 文件夹内找到生成出来的彩色甜筒🍦的图片。

可能出现的问题:
尝试把 --prompt 参数换成脑洞大开的各种描述词吧。其他参数详情可以参考 GitHub 主页。
除了文字生成图,还有可以玩图生图。
一些能让图像更加有趣的提示词内容建议:

Ultra realistic photo, princess peach in the mushroom kingdom, beautiful face, intricate, highly detailed, smooth, sharp focus, art by artgerm and greg rutkowski and alphonse mucha
可以使用显存占用优化的版本,牺牲推理速度,以获得比原始版本更少的显存占用。可以使用 2.4G 显存生成 512*512 尺寸图片。
为了减少显存使用进行的优化:
开启 web 服务,接入有道翻译 API,让他自动翻译输入的中文提示词,并执行图片生成。

说到中文支持,百度文心大模型发布的'ERNIE-ViLG 文生图',最近也在开放测试,有更好的中文语境理解,更能理解你的中文梗。不过完整功能需要申请体验,参数较少,可玩性比较弱。
除了单纯的文字作为输入生成图片,Stable Diffusion 还支持文字 + 图片作为输入,生成新的图片。就像最前面所展示过的,可以理解成你提供一个草图,AI 根据你的要求,帮你添加亿点点细节。
这是我尝试的,使用一个简单的线条图片,加上一段描述文字:'一只耐克鞋',所生成的结果:

如果我把他的输出再次变为输入,重复渲染,可以得到更多不同的结果。甚至可以一秒换品牌…

Stability AI 的口号是'AI by the people, for the people'。AI 从群众中来,到群众中去。它可以单纯用来创作你天马行空的想象,也可以用作你文章的免费配图,能辅助你的工作,甚至能参赛获奖!赶快玩起来吧。
environment.yaml 时遇到依赖冲突,可以尝试更新 pip 和 setuptools:
pip install --upgrade pip setuptools wheel
ckpt 文件路径正确,且文件格式为 .ckpt 或 .safetensors。如果是 .safetensors 格式,可能需要安装额外的库。--ddim 参数。sys.stdout.reconfigure(encoding='utf-8')。Stable Diffusion 作为一个开源项目,拥有庞大的社区支持和丰富的插件生态。通过本地部署,你可以完全掌控自己的生成过程,不受平台限制。随着技术的不断发展,AIGC 技术将在游戏、设计、影视等领域得到更广泛的应用,使系统具有更高效、更智能、更灵活的特性。对于开发者来说,掌握这项技术至关重要。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online