DiffSynth-Studio 全栈指南:开源 Diffusion 模型引擎的推理、显存管理、量化与训练实战
【免费下载链接】DiffSynth-StudioEnjoy the magic of Diffusion models!项目地址: https://gitcode.com/GitHub_Trending/dif/DiffSynth-Studio
欢迎阅读 DiffSynth-Studio 的技术全景指南。DiffSynth-Studio 是由 ModelScope(魔搭)社区团队开发维护的开源 Diffusion 模型引擎,覆盖图像生成、视频生成、音频生成与图像质量评估四大领域,同时内置显存管理、参数量化、任意训练与拆分训练等核心能力。读完本文,你将掌握该引擎的安装配置、模型加载范式、低显存推理方案、量化与训练工作流,并能借助仓库中的示例代码快速上手 FLUX、Wan、Qwen-Image、MiniMax-H3、ACE-Step 等主流模型。
项目概览与设计理念
DiffSynth-Studio 的核心定位是"以框架建设孵化技术创新":它不只提供一个模型调用库,而是把主流开源 Diffusion 模型(如 FLUX、Wan、Qwen-Image 等)的推理与训练 Pipeline 重新设计,实现高效的内存管理和灵活的训练方式。项目口号 "Enjoy the magic of Diffusion models!" 与仓库元信息一致,其 Python 包名为diffsynth(见 pyproject.toml,要求 Python >= 3.10.1,底层依赖 torch >= 2.0.0)。
从 diffsynth/init.py 可以看到,包入口通过from .core import *一次性导出核心能力,而这些能力被组织为几个相互独立的子模块(见 diffsynth/core/init.py):
attention:注意力机制实现;data:数据算子与统一数据集(unified_dataset.py);gradient:梯度检查点(gradient_checkpoint.py);quant:参数量化框架,含 bitsandbytes、torchao、comfy-kitchen 三个后端(diffsynth/core/quant/backends);loader:模型加载与配置解析(config.py、model.py);vram:显存管理(磁盘/内存/显存三级调度);device:设备抽象与 NPU 兼容(npu_compatible_device.py);offload_training:CPU Offload 训练(offloader.py、manager.py)。
这种模块化设计保证了"框架功能"与"具体模型"解耦:模型结构全部落在 diffsynth/models(100+ 个模型文件),每个模型的 Pipeline 则集中在 diffsynth/pipelines,二者的桥接由模型配置(ModelConfig)完成。
五大框架能力
README 中明确了框架的五大核心能力,下面逐一展开并结合源码说明其实现原理。
模型支持:图像 / 视频 / 音频 / 评估全覆盖
框架集成了主流开源 Diffusion 模型,按领域划分为:
- 图像生成:SenseNova-U1、Boogu-Image、Krea-2、Ideogram 4、HiDream-O1-Image、JoyAI-Image、ERNIE-Image、FLUX.2、Z-Image、Anima、Qwen-Image、FLUX.1、Stable Diffusion XL、Stable Diffusion(后两者仅提供学术科研支持);
- 视频生成:MiniMax-H3、LingBot-Video、LTX-2、Wan 系列(含 Wan 2.1/2.2、Animate、VACE、MOVA、LongCat 等生态模型);
- 音频生成:MiniMax-Music3、ACE-Step;
- 评估模型:FID、CLIP、Aesthetic、PickScore、ImageReward、HPSv2、HPSv3 等图像质量指标。
每个模型在 diffsynth/models/model_configs.py 中都有对应的注册条目,例如 Qwen-Image 系列包含 DiT、文本编码器、VAE、Blockwise ControlNet 等多个组件,每个组件通过model_hash、model_name、model_class(可选的state_dict_converter与extra_kwargs)唯一标识。这种"模型哈希 → 组件类 → 权重转换器"的注册机制,是框架能稳定加载 HuggingFace / ModelScope 上不同厂商权重格式的关键。
显存管理:让消费级 GPU 跑大模型
框架会在硬盘、内存、显存之间动态调度模型参数。2.0 版本后该模块进一步升级,支持 Layer 级别的 Disk Offload(逐层卸载),同时释放内存与显存——这意味着显存和内存都紧张时,可以把参数下沉到磁盘。其核心实现在 diffsynth/core/vram(含disk_map.py、initialization.py、layers.py),配合 Enabling VRAM management 文档使用。仓库大量示例均提供了model_inference与model_inference_low_vram两个版本目录,例如 MiniMax-H3 推理示例 与 低显存版本,两者代码几乎一致、仅显存配置不同,便于对照学习。
参数量化:NF4 / INT8 双路降显存
将模型参数转换为 NF4、INT8 等量化精度,可大幅降低模型推理和 LoRA 训练的显存需求。量化功能(2026 年 8 月发布)提供了统一的QuantizeConfig入口,支持bitsandbytes、torchao、comfy-kitchen三种后端,能力覆盖在线量化、加载预量化权重、混合量化、保存量化模型、量化 + LoRA 训练。其类型体系见 diffsynth/core/quant/init.py:QuantBackend/BackendConfig/QUANT_BACKENDS负责后端抽象,QuantizeConfig/MixedQuantizeConfig/QuantMethodSpec负责量化配置,三个具体后端分别位于 backends/bitsandbytes.py、backends/torchao.py、backends/comfy_kitchen.py。仓库也直接提供了预量化模型示例,如 MiniMax-H3-NF4、ideogram-4-fp8、ideogram-4-nf4。
任意训练:推理与训练能力对齐
"几乎所有支持推理的模型都支持训练"——无论是基础模型、LoRA,还是带额外输入的 Adapter 模型(如 ControlNet、EliGen、IP-Adapter)。仓库中每个模型目录都遵循统一的训练布局:
examples/<model>/model_training/ ├── full/ # 全量微调脚本(*.sh) ├── lora/ # LoRA 训练脚本(*.sh) ├── special/ # 特殊训练脚本(如 Direct Distill) ├── validate_full/ # 全量微调后的验证脚本(*.py) └── validate_lora/ # LoRA 训练后的验证脚本(*.py)以 examples/z_image/model_training 为例,完整覆盖 Z-Image 的 full/lora 训练与对应验证。训练入口统一为各模型目录下的 train.py。
拆分训练:两阶段训练范式
使用计算图推理引擎追踪 Pipeline 中每个变量,将训练过程自动拆分为数据处理与训练两个阶段:文本编码、VAE 编码等不需要梯度回传的计算放在数据处理阶段,其余计算放入训练阶段,从而"速度更快、显存需求更少"。即使训练 ControlNet 或任意 Adapter 模型也能自动拆分。该功能于 2.0 版本上线,文档见 Split_Training.md,相关示例为各模型的*-splited.sh训练脚本(如 LTX-2 拆分训练脚本)。
除上述能力外,2.0 之后还持续加入了CPU Offload Training(--enable_model_cpu_offload参数,逐层在 CPU/GPU 间搬运权重,当前仅支持单卡,见 Offload_Training.md)、Differential LoRA Training(差分 LoRA,曾用于 ArtAug)、FP8 Training(FP8 精度训练,可应用于任意非训练模型,见 FP8_Precision.md)等训练技术。
快速开始
安装
推荐从源码安装:
git clone https://github.com/modelscope/DiffSynth-Studio.git cd DiffSynth-Studio pip install -e .也可以从 PyPI 安装(注意版本更新可能存在延迟,最新特性请以源码安装为准):
pip install diffsynth为保持框架轻量,基础安装只包含必要依赖,其余能力通过可选依赖按需安装(详见 Setup.md):
| 可选依赖 | 用途 | |-|-| |[audio]| 音频模型支持(ACE-Step、MiniMax-Music3 等) | |[quant]| 参数量化(NF4、INT8、NVFP4 等精度) | |[training]| 分布式大规模预训练(deepspeed) | |[logger]| TensorBoard、SwanLab 等训练日志 | |[npu]/[npu_aarch64]| 昇腾 NPU(x86 / aarch64 架构) | |[controlnet]| ControlNet 预处理器(Canny、depth、OpenPose 等) | |[all]| 除上述特定模型依赖外的全部依赖 |
组合安装示例:pip install -e ".[audio,quant]"。这些可选依赖与 pyproject.toml 中[project.optional-dependencies]的定义一一对应。
模型下载源配置
项目默认从 ModelScope 下载模型。海外用户可切换到 ModelScope 国际站:
export MODELSCOPE_ENDPOINT=https://modelscope.ai如需从 HuggingFace 下载,修改环境变量即可(注意不同平台的模型 ID 可能不同):
export DIFFSYNTH_DOWNLOAD_SOURCE="huggingface"更多环境变量见 Environment_Variables.md。
多硬件支持
- NVIDIA GPU:按上述方式直接安装使用;
- AMD GPU:安装 ROCm 版 torch,例如
pip install torch torchvision --index-url https://download.pytorch.org/whl/rocm6.4; - Apple Silicon:无需改动安装步骤,代码中将
"cuda"替换为"mps"或"cpu"即可(显存与内存统一); - 昇腾 NPU:先按官方文档安装 CANN,再执行
pip install -e .[npu_aarch64](ARM)或pip install -e .[npu](x86),代码中将"cuda"替换为"npu"。
模型加载范式:ModelConfig 与 Pipeline
所有模型的推理入口都遵循同一范式:Pipeline.from_pretrained(...)组装模型 → 直接调用pipe(...)生成结果。以 Z-Image-Turbo 示例 为例:
from diffsynth.pipelines.z_image import ZImagePipeline, ModelConfig import torch pipe = ZImagePipeline.from_pretrained( torch_dtype=torch.bfloat16, device="cuda", model_configs=[ ModelConfig(model_id="Tongyi-MAI/Z-Image-Turbo", origin_file_pattern="transformer/*.safetensors"), ModelConfig(model_id="Tongyi-MAI/Z-Image-Turbo", origin_file_pattern="text_encoder/*.safetensors"), ModelConfig(model_id="Tongyi-MAI/Z-Image-Turbo", origin_file_pattern="vae/diffusion_pytorch_model.safetensors"), ], tokenizer_config=ModelConfig(model_id="Tongyi-MAI/Z-Image-Turbo", origin_file_pattern="tokenizer/"), ) prompt = "Young Chinese woman in red Hanfu, intricate embroidery. ..." image = pipe(prompt=prompt, seed=42, rand_device="cuda") image.save("image_Z-Image-Turbo.jpg")关键要素解读:
- ModelConfig:通过
model_id(模型仓库 ID)+origin_file_pattern(权重文件匹配模式)定位具体组件。一个 Pipeline 通常由多个 ModelConfig 组成,对应 DiT、文本编码器、VAE 等不同子网络,分别从模型仓库的不同子目录加载; vram_limit参数:from_pretrained均支持传入vram_limit(显存上限),用于启用显存管理;torch_dtype与device:常用torch.bfloat16+"cuda",NPU 场景替换为"npu"。
从源码结构看(diffsynth/pipelines),每个 Pipeline 内部被拆分为多个"阶段处理器"(如编码 prompt、准备 latent、去噪、VAE 解码),最终汇总到一个model_fn_*函数中完成单步去噪,例如 model_fn_flux2、model_fn_wan_video、model_fn_minimax_h3。这种设计使推理与训练(拆分训练依赖同一套计算图)能够共享同一模型前向逻辑。
各 Pipeline 的典型调用参数
以源码签名为准,几个代表性模型的默认参数如下:
| Pipeline | 默认采样步数 | 默认 CFG | 默认分辨率 | 其他亮点参数 | |-|-|-|-|-| | FluxImagePipeline | 30 | 1.0 | 1024×1024 |embedded_guidance=3.5、ControlNet / EliGen / IP-Adapter / Kontext / InfiniteYou / TeaCache | | QwenImagePipeline | 30 | 4.0 | 1328×1328 | Blockwise ControlNet、EliGen、图层拆分(Layered)、In-context control、Tile | | ZImagePipeline | 8(Turbo) | 1.0 | 1024×1024 | Image-to-LoRA、ControlNet、编辑 | | WanVideoPipeline | 50 | 5.0 | 480×832 | 首尾帧、VACE、Animate/Animate-2、S2V、相机控制、滑动窗口、TeaCache | | MiniMaxH3Pipeline | 50 | 1.0 | 768×1344 | 首尾帧引导、参考驱动(Ref2VA)、Retake、ControlNet、文生音视频 | | ACE-StepPipeline | 8 | 1.0 | — | 文生音乐、Cover 任务、Repaint、BPM/调性/拍号元数据 | | LTX2AudioVideoPipeline | 30 | 3.0 | 512×768 | 单阶段/两阶段/蒸馏管线、IC-LoRA 控制、音视频局部重绘 |
每个 Pipeline 的__call__还统一支持seed、rand_device、progress_bar_cmd等通用参数;支持梯度检查点(use_gradient_checkpointing)与 offload 版梯度检查点(use_gradient_checkpointing_offload)的模型,在model_fn_*中均有对应开关。
快速上手指南:从一条命令到完整工作流
README 的"Basic Framework"章节提供了最快捷的入手方式:挑一个热门模型,直接复用其四类示例脚本。以 MiniMax-H3 为例:
- 推理:examples/minimax_h3/model_inference/MiniMax-H3-FL2VA.py
- 低显存推理:examples/minimax_h3/model_inference_low_vram/MiniMax-H3-FL2VA.py
- 全量训练 + 验证:examples/minimax_h3/model_training/full/MiniMax-H3-FL2VA.sh → examples/minimax_h3/model_training/validate_full/MiniMax-H3-FL2VA.py
- LoRA 训练 + 验证:examples/minimax_h3/model_training/lora/MiniMax-H3-FL2VA.sh → examples/minimax_h3/model_training/validate_lora/MiniMax-H3-FL2VA.py
训练脚本通常通过--config指向 YAML 配置并传入--train_dataset_dir、--output_dir、--enable_model_cpu_offload等参数(具体以各脚本为准)。训练完整教程见 Model_Training.md,训练理论参考 Understanding_Diffusion_models.md。
此外,仓库还提供了 WebUI 与更多实用入口:
- 推理 / 训练 WebUI:examples/dev_tools/webui.py、examples/dev_tools/webui_train.py;
- 单元测试:examples/dev_tools/unit_test.py;
- 从零训练 0.1B 文生图模型的完整教程:docs/en/Research_Tutorial/train_from_scratch.md。
生态与衍生项目
围绕 DiffSynth-Studio 形成了一个完整生态:
- DiffSynth-WebUI:基于本框架构建的轻量级 LoRA 训练工具,支持在消费级 GPU 上一键私有化部署 LoRA 训练服务(与量化功能结合可训练超大模型);
- ModelScope AIGC 专区(面向中国用户)与ModelScope Civision(面向全球用户):以本框架为核心推理与训练引擎的产品化功能;
- Model Integration Skills:面向 AI 的 Agent Skills 合集,将外部扩散模型接入本框架的全流程自动化,提升模型接入标准化程度与效率。
创新成果一览
README 用一整章记录了基于本框架孵化出的创新技术(均附带论文与可复现代码),这里选取几个代表:
- Image-to-LoRA:把"数小时的图像风格 LoRA 训练"压缩到"一次模型推理",输入一组图片、输出一个 LoRA 模型,已发布 Z-Image / FLUX.2-klein-base-4B / HiDream-O1-Image 三个适配版本,示例见 ZImage-i2L-v2;
- Diffusion-Templates:将可控生成能力插件化的框架,支持局部编辑、风格迁移、清晰度增强等能力组合,示例见 Template 系列;
- Nexus-Gen:将 LLM 语言推理能力与扩散模型图像生成能力统一的框架,支持无缝的图像理解、生成与编辑,示例见 Nexus-Gen-Editing.py;
- EliGen:实体级可控文生图框架,基于区域注意力实现精确实体控制,并可扩展至图像修复,示例见 FLUX.1-dev-EliGen.py;
- AttriCtrl:用数值属性(如亮度)精确控制图像生成模型,示例见 FLUX.1-dev-AttriCtrl.py;
- AutoLoRA:LoRA 自动检索与细粒度门控融合,示例见 FLUX.1-dev-LoRA-Fusion.py;
- TreeAdapter:由结构化 LoRA 构建的细粒度物种图像生成模型系统(10,000+ LoRA);
- Spectral Evolution Search(SES):用推理时间换取生成质量的推理时缩放方法,教程见 inference_time_scaling.md;
- VIRAL:基于类比推理的视觉上下文推理能力(由图 A→图 B 的变化推导图 C→图 D),示例见 Qwen-Image-Edit-2511-ICEdit.py;
- ArtAug:通过合成-理解交互提升文生图美学质量(LoRA 形式);
- ExVideo、Diffutoon、DiffSynth、FastBlend、FastSDXL:更早期的视频合成、卡通渲染、视频去闪烁等成果,其示例位于 2.0 大版本更新前的历史版本代码树中。
更新历史与版本演进
DiffSynth-Studio 经历了 2.0 大版本更新,部分旧功能已停止维护;如需使用旧版功能,请切换到 2.0 之前的最后一个历史版本。以下是近一年来最重要的演进节点:
- 2026 年 9 月:接入 SenseNova-U1.5 统一多模态模型(文生图、图像编辑、低显存推理与训练),示例见 examples/sensenova_u1;
- 2026 年 8 月:接入 Qwen-Video-Edit 视频编辑模型;开源 DiffSynth-WebUI;发布模型量化功能(
QuantizeConfig统一入口);接入 MiniMax-Music3(文生音乐)与 MiniMax-H3(文生音视频、NF4 量化推理); - 2026 年 7 月:接入 LingBot-Video(Dense-1.3B 与 MoE-30B-A3B 两版本);发布 Model Integration Skills;
- 2026 年 6 月:接入 Boogu-Image、Krea-2;发布 Image-to-LoRA V2 三个适配模型;
- 2026 年 5 月:新增图像质量评估模型支持(FID/CLIP/Aesthetic/PickScore/ImageReward/HPSv2/HPSv3);新增 CPU Offload Training(
--enable_model_cpu_offload); - 2026 年 4 月:接入 HiDream-O1-Image、ACE-Step-1.5;发布 Diffusion Templates 插件框架;重新支持 SD v1.5 与 SDXL(仅学术科研);
- 2026 年 3 月:接入 MOVA-720p/360p、LTX-2.3、Anima;
- 2026 年 1 月:接入 FLUX.2-klein-4B/9B、Z-Image;
- 2025 年 12 月:发布 2.0 版本——文档体系上线、显存管理升级(Layer 级 Disk Offload)、接入 Z-Image Turbo 与 FLUX.2-dev、推出拆分训练 / 差分 LoRA / FP8 训练;
- 2025 年 8-9 月:Qwen-Image 生态爆发(EliGen、Blockwise ControlNet、In-Context Control Union、Distill 加速、EliGen-Poster 电商海报);
- 更早:Wan 系列(2025 年 2 月起)、FLUX.1 全面支持(2024 年 8 月起)、Diffutoon(2024 年 1 月)等。
关于旧功能与历史版本,README 明确提示部分旧特性不再维护,相关示例(如 ExVideo、Diffutoon、DiffSynth)需切换到旧版本代码树使用。
总结与进一步阅读
DiffSynth-Studio 的核心价值在于"一个框架同时解决推理成本(显存管理 + 量化)、训练灵活性(任意训练 + 拆分训练)与生态扩展性(Agent Skills 自动接入新模型)"。对开发者而言,最实用的入手路径是:先跑通某个模型的四类示例脚本,再依据 Model_Inference.md 深入参数细节,最后通过 Integrating_Your_Model.md 将自有模型接入框架。
值得进一步阅读的仓库资源:
- 各模型技术细节:docs/en/Model_Details(FLUX、Wan、Qwen-Image、ACE-Step 等均有独立文档);
- 显存管理实战:docs/en/Pipeline_Usage/VRAM_management.md;
- 量化实战:docs/en/Pipeline_Usage/Quantization.md;
- 训练专题:docs/en/Training(DeepSpeed、Differential LoRA、Direct Distill、FP8、Offload、Split Training);
- 研究教程:docs/en/Research_Tutorial(从零训练文生图模型、推理时缩放)。
【免费下载链接】DiffSynth-StudioEnjoy the magic of Diffusion models!项目地址: https://gitcode.com/GitHub_Trending/dif/DiffSynth-Studio
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考