跳到主要内容
极客日志极客日志
首页博客AI提示词GitHub精选代理工具
搜索
|注册
博客列表

目录

  1. 本地部署 Stable Diffusion AI 模型实战指南
  2. 1. 环境准备
  3. 1.1 创建虚拟环境
  4. 使用 3.10 版本的 python 创建 venv
  5. 激活 venv (Mac/Linux)
  6. Windows 用户请使用:.venv\Scripts\activate
  7. 1.2 安装依赖
  8. 2. 模型下载与选择
  9. 2.1 模型来源
  10. 2.2 下载方式
  11. 例如:git clone [email protected]:stabilityai/stable-diffusion-xl-base-1.0
  12. 2.3 模型类型选择
  13. 3. 加载模型
  14. 3.1 单文件加载
  15. 3.2 预训练模型加载
  16. 4. 设备配置
  17. 4.1 Windows / Linux (NVIDIA GPU)
  18. 4.2 Mac (M1/M2/M3 芯片)
  19. 5. 调度器配置
  20. 5.1 常见调度器
  21. 5.2 代码示例
  22. 6. 提示词工程
  23. 6.1 基础提示词
  24. 6.2 长提示词支持
  25. 7. 图像生成
  26. 7.1 生成参数说明
  27. 7.2 生成代码
  28. 8. 完整项目脚本
  29. 1. 初始化设备
  30. 2. 加载模型
  31. 3. 配置调度器
  32. 4. 配置提示词处理器
  33. 5. 定义提示词
  34. 6. 执行生成
  35. 9. 常见问题排查
  36. 10. 总结
  • 💰 8折买阿里云服务器限时8折了解详情
PythonAI算法

本地部署 Stable Diffusion AI 模型实战指南

本文介绍了在本地 Python 环境中使用 diffusers 库部署 Stable Diffusion 模型的完整流程。内容涵盖环境搭建、模型下载与加载、GPU 设备配置、调度器选择、提示词工程及图像生成参数调优。提供了从零开始的代码示例和常见问题排查指南,帮助开发者快速实现文生图功能并进行本地化 AI 应用开发。

独立开发者发布于 2025/2/6更新于 2026/4/201 浏览
本地部署 Stable Diffusion AI 模型实战指南

本地部署 Stable Diffusion AI 模型实战指南

本文介绍如何在本地 Python 环境中使用 diffusers 库运行 Stable Diffusion 模型,实现文生图(Text-to-Image)功能。我们将涵盖环境搭建、模型加载、推理配置及完整代码示例。

1. 环境准备

diffusers 目前对 Python 3.12 的支持尚不完善,建议使用 Python 3.10 或 3.11 版本创建虚拟环境以避免依赖冲突。

1.1 创建虚拟环境

# 使用 3.10 版本的 python 创建 venv
/opt/homebrew/opt/[email protected]/libexec/bin/python3 -m venv .venv
# 激活 venv (Mac/Linux)
source .venv/bin/activate
# Windows 用户请使用:.venv\Scripts\activate

1.2 安装依赖

安装核心库及其依赖项:

pip install diffusers accelerate transformers torch torchvision torchaudio

注意:如果是在 NVIDIA GPU 环境下,请确保已安装对应版本的 CUDA Toolkit 和 cuDNN,以便 PyTorch 能调用 GPU 加速。

2. 模型下载与选择

模型文件通常存储在 Hugging Face 或 Civitai 等社区平台。diffusers 支持多种格式的模型文件。

2.1 模型来源

  • Hugging Face: 官方预训练模型仓库,如 runwayml/stable-diffusion-v1-5。
  • Civitai: 提供大量微调后的 CheckPoint 和 LoRA 模型,适合特定风格生成。

2.2 下载方式

推荐使用 Git LFS 克隆模型仓库:

git lfs install
git clone [email protected]:<MODEL_ID>
# 例如:git clone [email protected]:stabilityai/stable-diffusion-xl-base-1.0

或者直接从网页下载 .safetensors 格式的单文件模型。

2.3 模型类型选择

选择模型时需关注以下属性:

  • 基础架构: SD 1.5 生成 512x512 图片;SDXL 1.0 及以上支持 1024x1024 及以上分辨率。
  • 速度优化: Turbo 系列可显著减少推理步数,提升生成速度。
  • 风格: 根据需求选择写实、动漫或艺术风格。

3. 加载模型

根据模型文件格式不同,加载方式有所区别。

3.1 单文件加载

如果是下载的 .safetensors 单文件模型:

from diffusers import StableDiffusionXLPipeline

pipe = StableDiffusionXLPipeline.from_single_file("path/to/dreamshaperXL_v21TurboDPMSDE.safetensors")

3.2 预训练模型加载

如果是从 Hugging Face 下载的完整目录结构:

from diffusers import StableDiffusionPipeline

pipe = StableDiffusionPipeline.from_pretrained("runwayml/stable-diffusion-v1-5")

4. 设备配置

根据硬件环境设置推理设备,以利用 GPU 加速。

4.1 Windows / Linux (NVIDIA GPU)

import torch

device = "cuda" if torch.cuda.is_available() else "cpu"
pipe = pipe.to(device)

4.2 Mac (M1/M2/M3 芯片)

Apple Silicon 支持 MPS (Metal Performance Shaders) 后端:

device = 'mps'
pipe = pipe.to(device)

5. 调度器配置

调度器(Scheduler)决定了图像生成的采样过程,直接影响画质和速度。它对应 AUTOMATIC1111 WebUI 中的 Sampling method。

5.1 常见调度器

  • DPM++ SDE Karras: 平衡速度与质量,推荐用于大多数场景。
  • Euler a: 速度快,但细节可能略少。
  • DDIM: 稳定性好,适合固定种子复现。

5.2 代码示例

from diffusers import DPMSolverSinglestepScheduler

pipe.scheduler = DPMSolverSinglestepScheduler.from_config(
    pipe.scheduler.config, 
    use_karras_sigmas=True
)

6. 提示词工程

提示词(Prompt)的质量直接决定生成效果。默认 Token 限制通常为 77 个,如需更长描述可使用 compel 库进行向量化处理。

6.1 基础提示词

prompt = "masterpiece, cat wizard, gandalf, lord of the rings, detailed, fantasy, cute, adorable, Pixar, Disney"
negative_prompt = "worst quality, low quality, normal quality, lowres, low details, oversaturated, undersaturated, overexposed, underexposed"

6.2 长提示词支持

安装 compel 库:

pip install compel

使用 Compel 处理提示词嵌入:

from compel import Compel, ReturnedEmbeddingsType

compel = Compel(
    tokenizer=[pipe.tokenizer, pipe.tokenizer_2],
    text_encoder=[pipe.text_encoder, pipe.text_encoder_2],
    returned_embeddings_type=ReturnedEmbeddingsType.PENULTIMATE_HIDDEN_STATES_NON_NORMALIZED,
    requires_pooled=[False, True]
)

conditioning, pooled = compel(prompt)
negative_prompt_embeds, negative_pooled = compel(negative_prompt)

7. 图像生成

调用 Pipeline 进行推理,调整关键参数以获得最佳效果。

7.1 生成参数说明

  • num_inference_steps: 推理步数,越多越精细但越慢(建议 20-50)。
  • guidance_scale: 引导系数,控制提示词遵循程度(建议 5-9)。
  • strength: 用于图生图时的强度。

7.2 生成代码

image = pipe(
    prompt_embeds=conditioning,
    pooled_prompt_embeds=pooled,
    negative_prompt_embeds=negative_prompt_embeds,
    negative_pooled_prompt_embeds=negative_pooled,
    height=1024,
    width=1024,
    num_inference_steps=6,
    guidance_scale=2,
).images[0]

image.save("output.jpg")

8. 完整项目脚本

将上述步骤整合为一个完整的可运行脚本:

import torch
from diffusers import StableDiffusionXLPipeline, DPMSolverSinglestepScheduler
from compel import Compel, ReturnedEmbeddingsType

# 1. 初始化设备
device = "cuda" if torch.cuda.is_available() else "cpu"

# 2. 加载模型
model_path = "path/to/your/model.safetensors"
pipe = StableDiffusionXLPipeline.from_single_file(model_path)
pipe = pipe.to(device)

# 3. 配置调度器
pipe.scheduler = DPMSolverSinglestepScheduler.from_config(
    pipe.scheduler.config, use_karras_sigmas=True
)

# 4. 配置提示词处理器
compel = Compel(
    tokenizer=[pipe.tokenizer, pipe.tokenizer_2],
    text_encoder=[pipe.text_encoder, pipe.text_encoder_2],
    returned_embeddings_type=ReturnedEmbeddingsType.PENULTIMATE_HIDDEN_STATES_NON_NORMALIZED,
    requires_pooled=[False, True]
)

# 5. 定义提示词
prompt = "a beautiful landscape with mountains and lakes, realistic, 8k resolution"
negative_prompt = "blurry, low quality, distorted"

conditioning, pooled = compel(prompt)
negative_prompt_embeds, negative_pooled = compel(negative_prompt)

# 6. 执行生成
image = pipe(
    prompt_embeds=conditioning,
    pooled_prompt_embeds=pooled,
    negative_prompt_embeds=negative_prompt_embeds,
    negative_pooled_prompt_embeds=negative_pooled,
    num_inference_steps=20,
    guidance_scale=7.5,
).images[0]

image.save("result.png")
print("Generation completed.")

9. 常见问题排查

  • 显存不足 (OOM): 尝试降低分辨率,或使用 --lowvram 启动选项,或启用 enable_model_cpu_offload()。
  • 生成速度慢: 检查是否启用了 GPU,尝试使用 Turbo 模型或减少推理步数。
  • 模型加载失败: 确认文件格式为 .safetensors 或 .ckpt,并检查路径是否正确。

10. 总结

本文详细讲解了在本地使用 diffusers 库运行 Stable Diffusion 的完整流程,包括环境配置、模型加载、调度器优化及提示词控制。通过本教程,开发者可以快速搭建自己的 AI 绘图工作流,并根据实际需求调整参数以获得高质量输出。后续可进一步探索 LoRA 微调、ControlNet 姿态控制等高级功能。

  • 💰 8折买阿里云服务器限时8折购买
  • 🦞 5分钟部署阿里云小龙虾了解详情
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog

更多推荐文章

查看全部
  • 腾讯混元大模型辅助开发自助棋牌室平台实战
  • LangSmith 大模型应用开发监控与测试平台详解
  • 使用 LangChain 构建开源大语言模型智能体实践
  • 使用 Coze 平台搭建多功能 AI 女友机器人
  • 金融 AI 平台 FinRobot 架构与实战应用解析
  • 大模型技术热门面试题精选及解答指南
  • 大模型应用:如何编写高质量 Prompt 的理论基础与 Rust 实践
  • LlamaIndex 中构建 RAG 应用完整指南
  • 七种主流大模型微调方法详解:原理与场景对比
  • 微调 LLM 构建任务型对话 Agent 方案与实践
  • LangChain 输出解析器使用详解
  • 大模型人才成职场新宠,百万年薪现象解析
  • RAG 技术详解:如何有效消除大模型幻觉问题
  • 编程 Agent 如何革新软件开发行业
  • 基于 Claude 处理超长文档的 Prompt 编写指南
  • 大模型核心面试问题与解析:100 道高频考点梳理
  • 爬虫实战:传统编程与 AIGC 提示词工程对比
  • 基于 Crawlee 构建类人行为爬虫框架实战
  • AI Agent:自主性、反应性与交互性的融合,将颠覆软件行业
  • 国内企业大模型岗位面试全解析:20 家公司经验分享

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • RSA密钥对生成器

    生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online

  • Mermaid 预览与可视化编辑

    基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online

  • curl 转代码

    解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online