ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

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

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继承自ConfigMixin与PushToHubMixin并提供了两个核心类方法from_pretrainedpipeline_utils.py 第 640 行从 Hugging Face Hub 或本地目录加载整个管道自动下载并缓存所有子组件save_pretrainedpipeline_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 文件对应一种调度算法。当前仓库中已经收录了相当丰富的调度器家族例如经典家族DDPMscheduling_ddpm.py、DDIMscheduling_ddim.py、PNDMscheduling_pndm.py高阶求解器DPMSolverMultistepscheduling_dpmsolver_multistep.py、UniPC、DEIS、SASolver等离散步进家族EulerDiscretescheduling_euler_discrete.py、EulerAncestralDiscrete、LMSDiscrete、KDPM2Discrete蒸馏/一致性家族LCMscheduling_lcm.py、TCD、SCM、ConsistencyModels流匹配家族FlowMatchEulerDiscretescheduling_flow_match_euler_discrete.py、FlowMatchHeunDiscrete广泛用于 Flux、SD3、LTX 等现代模型。调度器的可互换性来自统一的接口约定每个调度器都通过set_num_inference_steps设置去噪步数、通过timesteps属性暴露需要循环的时间步序列、通过step方法根据模型预测输出计算更干净的上一时刻样本。在快速上手文档 docs/source/zh/quicktour.md 中给出了一个把UNet2DModel与DDPMScheduler组合起来手写去噪循环的完整示例是理解管道内部到底发生了什么的最佳起点。Models可自由混搭的预训练构建模块模型是可配置、可微调、可替换的构建模块默认以最高精度加载。所有模型都继承自ModelMixin与ConfigMixin并通过from_pretrained加载、save_pretrained保存。从源码目录 src/diffusers/models 可以看到模型按架构类型分目录组织src/diffusers/models/autoencoders各类 VAE 自动编码器例如AutoencoderKL定义于 autoencoder_kl.py负责图像与潜空间的编解码其关键超参数包括in_channels、latent_channels、scaling_factor用于对潜空间做方差归一化等src/diffusers/models/transformers以 Transformer 为骨干的扩散模型如transformer_flux.py、transformer_wan.py等src/diffusers/models/unetsU-Net 架构的去噪模型如UNet2DConditionModel以及embeddings.py、normalization.py等被各模型共享的标准模块。官方首页特别强调模型可作为构建模块与调度器结合创建你自己的端到端扩散系统。由于模型与调度器之间依赖极小、接口清晰你可以像搭积木一样把不同论文中的组件拼装起来做实验这也是 Diffusers 区别于一把梭式推理框架的核心价值。设计哲学为什么 Diffusers 长这样要正确使用和贡献 Diffusers理解其设计哲学比记忆 API 更重要。官方首页用三句话概括而 philosophy 文档 给出了完整论证可用性优先于高性能Usability over Performance模型默认以最高精度float32加载且默认不做任何激进优化确保在不同平台和加速器上开箱即用无需复杂安装库保持轻量必需依赖极少把accelerate、safetensors、onnx等作为可选的软依赖性能优化如半精度、量化、卸载按需开启代码追求自解释避免过度使用 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一个类管道/调度器/模型的几乎全部代码写在单个自包含文件中宁可复制粘贴也不急于抽象这与流行的 DRYDont 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_sdModelscopes 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_diffusion、stable_diffusion_3、stable_diffusion_xl、flux、flux2、pixart_alpha、pixart_sigma、sana、qwenimage、kolors、kandinsky、kandinsky2_2、kandinsky3、kandinsky5、lumina、lumina2、hunyuan_image、ideogram4、krea2、glm_image、helios、anyflow等视频生成类cogvideo、cogview3、cogview4、wan、ltx、ltx2、mochi、animatediff、stable_video_diffusion、hunyuan_video、hunyuan_video1_5、cosmos、latte、easyanimate等音频生成类audioldm2、stable_audio、stable_audio_3等条件控制与编辑类controlnet、controlnet_sd3、controlnet_hunyuandit、t2i_adapter、ip_adapters、pag、marigold、ledits_pp、chronoedit等经典研究类ddpm、ddim、latent_diffusion、pndm、vq_diffusion、kandinsky等。这种管道目录即功能清单的组织方式本身就是设计哲学的体现想了解某个管道直接打开对应目录下的pipeline_*.py文件即可通读全部逻辑。学习路径导航从快速上手到深度定制官方首页为不同需求的读者规划了四条学习路线对应仓库 docs 目录下的不同模块本文一并整理如下链接已转换为仓库根目录相对路径Tutorials入门教程掌握生成输出、搭建自定义扩散系统、训练扩散模型的基础技能推荐首次接触 Diffusers 的读者从这里开始。中文版教程位于 docs/source/zh/tutorials其中 autopipeline.md 讲解自动管道切换、basic_training.md 讲解基础训练、using_peft_for_inference.md 讲解用 PEFT/LoRA 做推理此外 quicktour.md 是快速上手的必读入口。How-to guides操作指南解决如何加载管道、模型、调度器如何针对特定任务使用管道如何控制输出如何优化推理速度如何训练等实战问题。中文版指南位于 docs/source/zh/using-diffusers其中 schedulers.md 详细讲解调度器的加载、访问、更换与比较。Conceptual guides概念指南理解库为什么这样设计以及使用库的伦理准则与安全实现核心文档即 docs/source/en/conceptual/philosophy.md。ReferenceAPI 参考逐类逐方法的技术说明见 docs/source/en/api注意首页表格中的api/pipelines/overview等路径在文档目录中对应的是各管道与调度器的 API 详解。安装与快速开始按照 docs/source/zh/quicktour.md 的说明运行 Diffusers 需要三个基础依赖pip install --upgrade diffusers accelerate transformersaccelerate加速推理与训练过程中的模型加载transformers运行 Stable Diffusion 等最流行扩散模型所必需的库提供文本编码器等。如果你使用中文版首页进行学习官方推荐从 quicktour.md 开始先体验DiffusionPipeline的一键推理再动手把UNet2DModel与DDPMScheduler组合起来手写去噪循环从而真正理解管道内部的每一个步骤。更进一步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),仅供参考
返回列表