news 2026/9/10 4:37:44

Diffusers 中文指南:图像、视频与音频扩散模型库的三大组件、设计哲学与官方 Pipeline 全景

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Diffusers 中文指南:图像、视频与音频扩散模型库的三大组件、设计哲学与官方 Pipeline 全景

Diffusers 中文指南:图像、视频与音频扩散模型库的三大组件、设计哲学与官方 Pipeline 全景

【免费下载链接】diffusers🤗 Diffusers: State-of-the-art diffusion models for image, video, and audio generation in PyTorch.项目地址: https://gitcode.com/GitHub_Trending/di/diffusers

🤗 Diffusers 是一个面向 PyTorch 的模块化扩散模型工具箱,提供覆盖图像、视频、音频乃至 3D 分子结构等多种模态的预训练扩散模型,既能以几行代码完成推理,也能支撑自定义模型训练。本文以官方中文首页 docs/source/zh/index.md 为核心骨架,结合仓库源码深入讲解库的三大核心组件(Pipelines、Schedulers、Models)、设计哲学、核心 API 用法以及官方支持的全部 Pipeline 一览表,帮助你快速建立对 Diffusers 的整体认知,并能够在此基础上按图索骥深入各个子模块。

库的定位:一个为推理与训练而生的模块化工具箱

🤗 Diffusers 的设计目标是成为生成式 AI 领域的首选扩散模型库:无论你只是想用预训练模型快速做推理,还是想从头训练自己的扩散模型,这个库都以"模块化工具箱"的形式为你提供支持。与一些追求"开箱即用黑盒"的库不同,Diffusers 明确宣称其设计更偏重于:

  • 可用而非高性能(Usability over Performance)
  • 简明而非简单(Simple over Easy)
  • 易用而非抽象(Tweakable, contributor-friendly over Abstraction)

这三条原则的具体内涵在仓库文档 docs/source/en/conceptual/philosophy.md 中有完整阐述,后文会逐一展开。

从代码结构上看,库的主体位于 src/diffusers,其中三个最核心的子包恰好对应官方首页宣称的三大组件:

  • src/diffusers/pipelines:最先进的扩散管道,几行代码即可完成推理;
  • src/diffusers/schedulers:可互换的噪声调度器,用于平衡生成速度与质量;
  • src/diffusers/models:可组合的预训练模型,作为构建端到端扩散系统的积木。

三大组件:Pipelines、Schedulers 与 Models

官方首页将库抽象为三个彼此独立、又可自由组合的部分,这是理解 Diffusers 一切用法的钥匙。

Diffusion Pipelines:端到端推理的最简入口

DiffusionPipeline是一个把"文本编码器 + 去噪模型 + 调度器 + VAE 解码器"等组件打包在一起的高级端到端类,设计目标就是"只需几行代码"完成推理。它在源码中的定义位于 src/diffusers/pipelines/pipeline_utils.py,继承自ConfigMixinPushToHubMixin,并提供了两个核心类方法:

  • from_pretrained(pipeline_utils.py 第 640 行):从 Hugging Face Hub 或本地目录加载整个管道,自动下载并缓存所有子组件;
  • save_pretrained(pipeline_utils.py 第 254 行):将管道连同model_index.json配置一起保存,便于分享与复用。

一个典型的推理调用只需三步:

from diffusers import DiffusionPipeline # 1. 加载管道(自动下载并缓存全部组件) pipeline = DiffusionPipeline.from_pretrained("stable-diffusion-v1-5/stable-diffusion-v1-5") # 2. 与 PyTorch 一致的设备管理 pipeline.to("cuda") # 3. 传入提示词,一步生成 image = pipeline("An image of a squirrel in Picasso style").images[0] image.save("image_of_squirrel_painting.png")

from_pretrained加载后,管道内部会按model_index.json组装子组件。以 Stable Diffusion 为例,其管道由UNet2DConditionModel(去噪骨干)、AutoencoderKL(图像与潜空间互转)、PNDMScheduler(去噪调度器)以及 CLIP 文本编码器等组成,这些组件同时以同名属性暴露在管道对象上,因此可以像下面这样自由更换调度器:

from diffusers import StableDiffusionPipeline, EulerDiscreteScheduler pipeline = StableDiffusionPipeline.from_pretrained("stable-diffusion-v1-5/stable-diffusion-v1-5") pipeline.scheduler = EulerDiscreteScheduler.from_config(pipeline.scheduler.config)

这也印证了首页"调度器可交替使用"的描述——更换调度器不需要重新加载模型权重。

Noise Schedulers:掌控去噪节奏的算法组件

调度器负责定义两件事:训练时如何逐步向样本添加噪声(前向加噪),推理时如何从噪声中一步步还原出数据样本(反向去噪)。它们是无参数的纯算法组件,全部位于 src/diffusers/schedulers,一个 Python 文件对应一种调度算法。当前仓库中已经收录了相当丰富的调度器家族,例如:

  • 经典家族:DDPM(scheduling_ddpm.py)、DDIM(scheduling_ddim.py)、PNDM(scheduling_pndm.py);
  • 高阶求解器:DPMSolverMultistep(scheduling_dpmsolver_multistep.py)、UniPCDEISSASolver等;
  • 离散步进家族:EulerDiscrete(scheduling_euler_discrete.py)、EulerAncestralDiscreteLMSDiscreteKDPM2Discrete
  • 蒸馏/一致性家族:LCM(scheduling_lcm.py)、TCDSCMConsistencyModels
  • 流匹配家族:FlowMatchEulerDiscrete(scheduling_flow_match_euler_discrete.py)、FlowMatchHeunDiscrete,广泛用于 Flux、SD3、LTX 等现代模型。

调度器的可互换性来自统一的接口约定:每个调度器都通过set_num_inference_steps设置去噪步数、通过timesteps属性暴露需要循环的时间步序列、通过step方法根据模型预测输出计算"更干净"的上一时刻样本。在快速上手文档 docs/source/zh/quicktour.md 中,给出了一个把UNet2DModelDDPMScheduler组合起来手写去噪循环的完整示例,是理解"管道内部到底发生了什么"的最佳起点。

Models:可自由混搭的预训练构建模块

模型是可配置、可微调、可替换的构建模块,默认以最高精度加载。所有模型都继承自ModelMixinConfigMixin,并通过from_pretrained加载、save_pretrained保存。从源码目录 src/diffusers/models 可以看到,模型按架构类型分目录组织:

  • src/diffusers/models/autoencoders:各类 VAE 自动编码器,例如AutoencoderKL(定义于 autoencoder_kl.py),负责图像与潜空间的编解码,其关键超参数包括in_channelslatent_channelsscaling_factor(用于对潜空间做方差归一化)等;
  • src/diffusers/models/transformers:以 Transformer 为骨干的扩散模型,如transformer_flux.pytransformer_wan.py等;
  • src/diffusers/models/unets:U-Net 架构的去噪模型,如UNet2DConditionModel
  • 以及embeddings.pynormalization.py等被各模型共享的标准模块。

官方首页特别强调"模型可作为构建模块,与调度器结合创建你自己的端到端扩散系统"。由于模型与调度器之间依赖极小、接口清晰,你可以像搭积木一样把不同论文中的组件拼装起来做实验,这也是 Diffusers 区别于"一把梭"式推理框架的核心价值。

设计哲学:为什么 Diffusers 长这样

要正确使用和贡献 Diffusers,理解其设计哲学比记忆 API 更重要。官方首页用三句话概括,而 philosophy 文档 给出了完整论证:

可用性优先于高性能(Usability over Performance)

  • 模型默认以最高精度(float32)加载,且默认不做任何激进优化,确保在不同平台和加速器上开箱即用,无需复杂安装;
  • 库保持轻量:必需依赖极少,把acceleratesafetensorsonnx等作为可选的软依赖,性能优化(如半精度、量化、卸载)按需开启;
  • 代码追求自解释,避免过度使用 lambda 和魔法语法。

简明优先于简单(Simple over Easy)

  • 遵循 PyTorch 的 API 习惯,例如设备管理交给用户的pipeline.to(...)
  • 倾向于抛出清晰明确的错误信息,而不是静默"纠正"错误输入——教用户理解,而不是纵容用户偷懒
  • 模型与调度器分离:去噪循环由用户显式编写,虽然"麻烦",但换来的是更易调试、更自由地改造去噪过程、随时切换组件;
  • 管道各组件独立成类、独立序列化:文本编码器、UNet、VAE 各自有独立文件,这直接催生了 DreamBooth、Textual Inversion 等只需微调单个组件的训练范式(相关训练脚本见 examples/dreambooth 与 examples/textual_inversion)。

可调优、对贡献者友好优先于抽象(Tweakable, contributor-friendly over Abstraction)

  • 借鉴 Transformers 的单文件策略(single-file policy):一个类(管道/调度器/模型)的几乎全部代码写在单个自包含文件中,宁可复制粘贴,也不急于抽象;
  • 这与流行的 DRY(Don't Repeat Yourself)原则背道而驰,但对快速演进的机器学习社区反而更有效:范式变化太快,难以建立长久有效的抽象;研究者希望直接改代码做实验;新贡献者不必担心改动会破坏库的其他核心功能。

从源码结构看,这一策略得到了严格执行:pipelines/下每个目录对应一个论文/项目/版本,schedulers/下一个文件对应一种调度算法,models/下按架构家族分文件存放,相似代码通过# Copied from注释机制保持同步。

官方 Pipeline 一览表(含任务与对应论文)

官方首页完整汇总了当时所有官方支持的 pipelines 及其对应论文,下表完整继承该清单,并补充了"当前仓库源码中可确认的新增管道"供对照。读者可根据任务类型(文本生成图像、图生图、修复、超分、视频生成、音频生成等)快速定位到最合适的管道,再进入对应源码目录深入研读。

首页官方管道清单(按任务分类)

管道论文/来源任务
alt_diffusionAltCLIP: Altering the Language Encoder in CLIP for Extended Language Capabilities文本引导的图像到图像生成
audio_diffusionAudio Diffusion无条件音频生成
controlnetAdding Conditional Control to Text-to-Image Diffusion Models文本引导的图像到图像生成(条件控制)
cycle_diffusionUnifying Diffusion Models' Latent Space, with Applications to CycleDiffusion and Guidance文本引导的图像到图像生成
dance_diffusionDance Diffusion无条件音频生成
ddpmDenoising Diffusion Probabilistic Models无条件图像生成
ddimDenoising Diffusion Implicit Models无条件图像生成
if / if_img2img / if_inpaintingDeepFloyd IF(对应源码目录 src/diffusers/pipelines/deepfloyd_if)图像生成 / 图像到图像生成
latent_diffusion / latent_diffusion_uncondHigh-Resolution Image Synthesis with Latent Diffusion Models文生图 / 超分图像到图像 / 无条件图像生成
paint_by_examplePaint by Example: Exemplar-based Image Editing with Diffusion Models图像引导的图像修复
pndmPseudo Numerical Methods for Diffusion Models on Manifolds无条件图像生成
score_sde_veScore-Based Generative Modeling through Stochastic Differential Equations无条件图像生成
semantic_stable_diffusionSemantic Guidance文本引导生成
stable_diffusion_text2imgStable Diffusion文本到图像生成
stable_diffusion_img2imgStable Diffusion文本引导的图像到图像生成
stable_diffusion_inpaintStable Diffusion文本引导图像修复
stable_diffusion_panoramaMultiDiffusion文本到全景图生成
stable_diffusion_pix2pixInstructPix2Pix文本引导图像编辑
stable_diffusion_pix2pix_zeroZero-shot Image-to-Image Translation文本引导图像编辑
stable_diffusion_attend_and_exciteAttend-and-Excite: Attention-Based Semantic Guidance文本到图像生成
stable_diffusion_self_attention_guidanceImproving Sample Quality Using Self-Attention Guidance文生图 / 无条件图像生成
stable_diffusion_image_variationStable Diffusion Image Variations图像到图像生成
stable_diffusion_latent_upscaleStable Diffusion Latent Upscaler文本引导超分图像到图像
stable_diffusion_model_editingEditing Implicit Assumptions in Text-to-Image Diffusion Models文生图模型编辑
stable_diffusion_2Stable Diffusion 2文生图 / 修复 / 深度条件生成 / 超分
stable_diffusion_safeSafe Stable Diffusion文本引导生成(安全过滤)
stable_unclipStable unCLIP文生图 / 文本引导图像到图像
text_to_video_sdModelscope's Text-to-video-synthesis Model in Open Domain文本到视频生成
unclipHierarchical Text-Conditional Image Generation with CLIP Latents文本到图像生成
versatile_diffusionVersatile Diffusion: Text, Images and Variations All in One文生图 / 图像变体 / 图文双引导生成
vq_diffusionVector Quantized Diffusion Model for Text-to-Image Synthesis文本到图像生成

当前仓库源码中可确认的新增管道

值得注意的是,首页表格反映的是文档编写时期的官方支持列表。随着仓库持续演进,src/diffusers/pipelines 目录下已新增大量管道目录,以下均可在当前仓库中直接找到源码确认存在,覆盖了图像、视频、音频等更广泛的模态:

  • 图像生成类:stable_diffusionstable_diffusion_3stable_diffusion_xlfluxflux2pixart_alphapixart_sigmasanaqwenimagekolorskandinskykandinsky2_2kandinsky3kandinsky5luminalumina2hunyuan_imageideogram4krea2glm_imageheliosanyflow等;
  • 视频生成类:cogvideocogview3cogview4wanltxltx2mochianimatediffstable_video_diffusionhunyuan_videohunyuan_video1_5cosmoslatteeasyanimate等;
  • 音频生成类:audioldm2stable_audiostable_audio_3等;
  • 条件控制与编辑类:controlnetcontrolnet_sd3controlnet_hunyuanditt2i_adapterip_adapterspagmarigoldledits_ppchronoedit等;
  • 经典研究类:ddpmddimlatent_diffusionpndmvq_diffusionkandinsky等。

这种"管道目录即功能清单"的组织方式本身就是设计哲学的体现:想了解某个管道,直接打开对应目录下的pipeline_*.py文件即可通读全部逻辑。

学习路径导航:从快速上手到深度定制

官方首页为不同需求的读者规划了四条学习路线,对应仓库 docs 目录下的不同模块,本文一并整理如下(链接已转换为仓库根目录相对路径):

  1. Tutorials(入门教程):掌握生成输出、搭建自定义扩散系统、训练扩散模型的基础技能,推荐首次接触 Diffusers 的读者从这里开始。中文版教程位于 docs/source/zh/tutorials,其中 autopipeline.md 讲解自动管道切换、basic_training.md 讲解基础训练、using_peft_for_inference.md 讲解用 PEFT/LoRA 做推理;此外 quicktour.md 是快速上手的必读入口。

  2. How-to guides(操作指南):解决"如何加载管道、模型、调度器""如何针对特定任务使用管道""如何控制输出""如何优化推理速度""如何训练"等实战问题。中文版指南位于 docs/source/zh/using-diffusers,其中 schedulers.md 详细讲解调度器的加载、访问、更换与比较。

  3. Conceptual guides(概念指南):理解库为什么这样设计,以及使用库的伦理准则与安全实现,核心文档即 docs/source/en/conceptual/philosophy.md。

  4. Reference(API 参考):逐类逐方法的技术说明,见 docs/source/en/api(注意:首页表格中的api/pipelines/overview等路径在文档目录中对应的是各管道与调度器的 API 详解)。

安装与快速开始

按照 docs/source/zh/quicktour.md 的说明,运行 Diffusers 需要三个基础依赖:

pip install --upgrade diffusers accelerate transformers
  • accelerate:加速推理与训练过程中的模型加载;
  • transformers:运行 Stable Diffusion 等最流行扩散模型所必需的库(提供文本编码器等)。

如果你使用中文版首页进行学习,官方推荐从 quicktour.md 开始:先体验DiffusionPipeline的一键推理,再动手把UNet2DModelDDPMScheduler组合起来手写去噪循环,从而真正理解管道内部的每一个步骤。更进一步,examples 目录下汇集了各类官方训练脚本(DreamBooth、LoRA、ControlNet、文本反转等),可以在此基础上微调出自己的模型。

小结

本文以官方中文首页为骨架,完整梳理了 Diffusers 的三大组件(Pipelines、Schedulers、Models)及其在 src/diffusers 源码中的对应实现,深入解读了"可用性优先、简明优先、贡献者友好优先"的设计哲学,并给出了覆盖图像、视频、音频多种模态的官方管道全景清单。理解这些底层设计,你就掌握了阅读 Diffusers 源码、自由组合模型与调度器、乃至向社区贡献新管道的方法论。后续无论是做推理、微调还是研究实验,都可以沿着本文给出的源码路径与文档路径继续深入。

【免费下载链接】diffusers🤗 Diffusers: State-of-the-art diffusion models for image, video, and audio generation in PyTorch.项目地址: https://gitcode.com/GitHub_Trending/di/diffusers

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/10 4:34:33

嵌入式面试四大实战能力:硬件感知、资源博弈、系统穿透与现场还原

1. 这不是技术筛选,是嵌入式工程师的“现场压力测试”“面试老是挂”——这句话我听过不下两百遍,几乎每个来跟我聊职业发展的嵌入式新人,开口第一句就是这个。但真正让我警觉的,不是他们挂了,而是他们挂完之后说的下一…

作者头像 李华
网站建设 2026/9/10 4:34:21

零基础深度学习入门实战路线图:从NumPy感知机到PyTorch/TensorFlow

1. 这不是“速成课”,而是一张你真正能走通的深度学习入门地图我带过不下两百个零基础转行做算法的同学,也给高校本科生讲过三年《机器学习导论》。每次开课前,我都会问一个问题:“你手头有没有跑通过哪怕一个最简单的神经网络&am…

作者头像 李华
网站建设 2026/9/10 4:33:45

多无人机协同运输的Matlab仿真:路径规划与动态控制全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华