huggingface / diffusers
huggingface/diffusers
🤗 Diffusers:基于PyTorch的图像、视频和音频生成扩散模型,采用最先进技术。
项目概览
项目概述
🤗 Diffusers 是 Hugging Face 团队开发的一个用于生成图像、音频和 3D 分子结构的先进扩散模型库。它基于 PyTorch,提供了一套模块化的工具箱,既支持简单的推理,也支持训练自定义扩散模型。该库的设计理念强调可用性优先于性能、简单优于复杂、可定制性优于抽象。
核心功能
- 扩散管道(Pipelines):提供多种预训练扩散模型的推理管道,只需几行代码即可生成图像、视频和音频。
- 噪声调度器(Schedulers):支持多种可互换的噪声调度器,用于控制扩散速度和输出质量。
- 预训练模型(Models):提供可作为构建模块的预训练模型,可与调度器组合,构建端到端的扩散系统。
- 训练支持:支持训练自定义扩散模型,包括 DreamBooth、LoRA 等训练方法。
- 社区贡献:支持社区管道(Community Pipelines)和社区训练示例,鼓励开源贡献。
适用与不适用场景
适用场景:
- 文本到图像生成(如 Stable Diffusion、Flux 等)
- 图像到图像转换(如 img2img、inpainting、outpainting)
- 文本到视频生成(如 CogVideoX、HunyuanVideo 等)
- 音频生成(如 ACE-Step)
- 超分辨率、图像变化等高级图像处理
- 研究和教育目的,学习和实验扩散模型
不适用场景:
- 需要极高性能的实时生成场景(库设计优先考虑可用性而非性能)
- 非 PyTorch 框架的项目(库基于 PyTorch)
- 需要完全抽象化的场景(库强调可定制性,可能暴露较多底层细节)
技术架构与依赖
- 编程语言:Python
- 深度学习框架:PyTorch
- 主要依赖:
torch、transformers、accelerate、safetensors、PIL等(具体依赖列表见仓库的setup.py) - 可选依赖:
controlnet_aux(用于 ControlNet 辅助工具)、peft(用于 LoRA 等适配器)等 - 架构组件:
- 管道(Pipelines):如
DiffusionPipeline、StableDiffusionPipeline等 - 模型(Models):如
UNet2DModel、AutoencoderKL、Transformer2DModel等 - 调度器(Schedulers):如
DDPMScheduler、DDIMScheduler等 - 加载器(Loaders):如
FromSingleFileMixin、LoraLoaderMixin等
- 管道(Pipelines):如
安装与快速开始
安装(推荐在虚拟环境中):
使用 pip:
pip install --upgrade diffusers[torch]
使用 conda:
conda install -c conda-forge diffusers
快速开始:
文本到图像生成:
from diffusers import DiffusionPipeline
import torch
pipeline = DiffusionPipeline.from_pretrained("stable-diffusion-v1-5/stable-diffusion-v1-5", dtype=torch.float16)
pipeline.to("cuda")
pipeline("An image of a squirrel in Picasso style").images[0]
自定义扩散系统(使用模型和调度器):
from diffusers import DDPMScheduler, UNet2DModel
from PIL import Image
import torch
scheduler = DDPMScheduler.from_pretrained("google/ddpm-cat-256")
model = UNet2DModel.from_pretrained("google/ddpm-cat-256").to("cuda")
scheduler.set_timesteps(50)
sample_size = model.config.sample_size
noise = torch.randn((1, 3, sample_size, sample_size), device="cuda")
input = noise
for t in scheduler.timesteps:
with torch.no_grad():
noisy_residual = model(input, t).sample
prev_noisy_sample = scheduler.step(noisy_residual, t, input).prev_sample
input = prev_noisy_sample
image = (input / 2 + 0.5).clamp(0, 1)
image = image.cpu().permute(0, 2, 3, 1).numpy()[0]
image = Image.fromarray((image * 255).round().astype("uint8"))
image
典型使用方法
- 加载预训练模型:使用
from_pretrained方法从 Hugging Face Hub 加载模型、管道或调度器。 - 推理:直接调用管道对象生成图像、视频或音频。
- 训练:使用
examples目录下的训练脚本(如 DreamBooth、LoRA)训练自定义模型。 - 加载单文件模型:使用
from_single_file方法加载 Automatic1111 等生态的单文件模型。 - 使用适配器:通过 PEFT 库加载 LoRA 等适配器,实现个性化生成。
- 社区管道:通过
custom_pipeline参数加载社区贡献的管道。
配置与部署要点
- 硬件要求:建议使用 NVIDIA GPU 以获得最佳性能,支持 Apple Silicon(M1/M2)的 MPS 加速。
- 内存优化:可参考官方文档中的优化指南(如 FP16、注意力切片等)以减少内存占用。
- 模型存储:模型默认从 Hugging Face Hub 下载,可设置环境变量
HF_HOME等控制缓存位置。 - 日志配置:可通过环境变量
DIFFUSERS_VERBOSITY控制日志级别,DIFFUSERS_NO_ADVISORY_WARNINGS禁用警告。 - 部署:可结合 BentoML 等工具进行模型服务化部署。
限制、风险与许可证
- 许可证:Apache-2.0
- 限制:
- 库设计优先考虑可用性,可能牺牲部分性能。
- 依赖 PyTorch,不支持其他深度学习框架。
- 部分高级功能(如某些模型)可能需要额外的依赖或硬件支持。
- 风险:
- 生成内容可能包含不适宜内容(NSFW),需自行处理安全过滤。
- 模型可能受各自许可证限制,使用前需检查模型卡。
- 社区贡献的代码可能未经充分测试,使用时需谨慎。
官方链接
- GitHub 仓库:https://github.com/huggingface/diffusers
- 官方文档:https://huggingface.co/docs/diffusers/index
- Hugging Face Hub:https://huggingface.co/models?library=diffusers
- Discord 社区:https://discord.gg/G7tWnz98XR
- 最新版本:v0.39.0(发布于 2026-07-03)
信息来源和分析时间
- 信息来源:GitHub 仓库 README、CONTRIBUTING.md、文档目录及 API 文档。
- 分析时间:2026-07-03(基于最新发布版本日期)