pipelines
diffsynth_engine/pipelines 约 15 个文件 | 推理管线入口层,提供面向用户的统一推理接口,管理模型加载、LoRA 绑定、offload 调度、推理执行的全生命周期 入口:BasePipeline, FluxImagePipeline, WanVideoPipeline, QwenImagePipeline, WanSpeech2VideoPipeline, SDImagePipeline, SDXLImagePipeline, Flux2KleinPipeline, ZImagePipeline, ZImageOmniBasePipeline, Hunyuan3DShapePipeline 依赖:configs, models, algorithm, utils, tokenizers commit 热点第 3 位(6 次),是主线工作。BasePipeline 定义公共接口,各管线继承实现特定逻辑。from_pretrained 是主要工厂方法。 |
configs
diffsynth_engine/configs 约 5 个文件 | 配置管理层,通过 dataclass 定义所有管线的配置结构,包括模型路径、数据类型、设备、offload 策略、并行策略、注意力实现等 入口:BaseConfig, FluxPipelineConfig, WanPipelineConfig, QwenImagePipelineConfig, WanSpeech2VideoPipelineConfig, SDPipelineConfig, SDXLPipelineConfig, Flux2KleinPipelineConfig, ZImagePipelineConfig, HunyuanPipelineConfig, AttentionConfig, OptimizationConfig, ParallelConfig, AttnImpl, SpargeAttentionParams, VideoSparseAttentionParams, LoraConfig, ControlNetParams, QwenImageControlNetParams 依赖:utils/flag.py(间接) commit 热点第 6 位(3 次)。AttnImpl 枚举定义了所有支持的注意力后端。ParallelConfig 包含 ulysses、ring、tp、fsdp、cfg_parallel 等并行参数。 |
algorithm
diffsynth_engine/algorithm 约 25 个文件 | 采样算法层,实现噪声调度器和采样器,支持 Flow Match(flux 系列)和 Stable Diffusion(SD 系列)两套体系 入口:base_scheduler.py, flow_beta.py, flow_ddim.py, recifited_flow.py, beta.py, ddim.py, karras.py, linear.py, exponential.py, sgm_uniform.py, flow_match_euler.py, euler.py, dpmpp_2m.py, dpmpp_2m_sde.py, dpmpp_3m_sde.py, deis.py, brownian_tree.py, ddpm.py, epsilon.py, euler_ancestral.py 依赖:torch README 明确指出「carefully re-implemented key components such as sampler and scheduler, without introducing external dependencies on libraries like k-diffusion, ldm, or sgm」。这是项目的核心竞争力之一。 |
models
diffsynth_engine/models 约 60+ 个文件 | 模型实现层,包含所有 DiT、VAE、TextEncoder、ControlNet 等模型组件的实现 入口:PreTrainedModel, StateDictConverter, FluxDiT, FluxVAE, FluxTextEncoder, FluxControlNet, FluxIPAdapter, FluxRedux, WanDiT, WanS2VDit, WanVAE, WanTextEncoder, WanImageEncoder, WanAudioEncoder, QwenImageDiT, QwenImageVAE, SDUNet, SDVAE, SDTextEncoder, SDControlNet, SDXLUNet, SDXLVAE, SDXLTextEncoder, SDXLControlNet, SD3DiT, SD3VAE, SD3TextEncoder, Flux2DiT, Flux2VAE, ZImageDiT, ZImageDiTOmniBase, Hunyuan3DDiT, Hunyuan3DVAE, CLIPEncoderLayer, T5 编码器, Attention, LoRA 依赖:models/basic, utils, configs commit 热点第 1 位(10 次),是代码变更最频繁的区域。每个模型家族一个子目录(flux/, wan/, qwen_image/, sd/, sdxl/, sd3/, flux2/, z_image/, hunyuan3d/)。 |
models/basic
diffsynth_engine/models/basic 约 10 个文件 | 基础组件层,提供所有模型共享的基础模块,包括注意力、LoRA、时间步嵌入、位置编码、Transformer 辅助函数等 入口:Attention, LoRA, Timestep, RelativePositionEmb, TransformerHelper, UNetHelper, VideoSparseAttention 依赖:utils/flag.py, utils/platform.py attention.py 是核心,实现了统一的 Attention 接口,支持 FA2/FA3/FA4、SDPA、xFormers、Sage、Sparge、Aiter、VideoSparseAttention 等多种后端。 |
kernels
diffsynth_engine/kernels 约 1-3 个文件 | 自定义 kernel 层,预留用于 CUDA/Triton kernel 的扩展 入口:需验证(目录存在但文件极少) 依赖:torch 当前目录内容极少,可能是预留扩展位置或 kernel 逻辑分散在 models/basic/attention.py 中。 |
utils
diffsynth_engine/utils 约 20 个文件 | 通用工具层,提供模型加载、量化、offload、并行、内存预测、缓存、平台检测、环境管理等基础功能 入口:loader.py, fp8_linear.py, gguf.py, offload.py, parallel.py, process_group.py, cache.py, memory/, platform.py, env.py, flag.py, image.py, video.py, prompt.py, logging.py, lock.py, onnx.py, download.py 依赖:torch, modelscope commit 热点第 5 位(4 次)。flag.py 动态检测各注意力后端可用性。memory/ 包含线性回归和预测模型,用于显存估算。 |
tokenizers
diffsynth_engine/tokenizers 约 10 个文件 | 分词器层,提供 CLIP、T5、Qwen2、Wan 等模型的分词器实现 入口:CLIPTokenizer, T5Tokenizer, Qwen2Tokenizer, WanTokenizer, Qwen2VLProcessor, Qwen2VLImageProcessor 依赖:torch, tokenizers 库 每个分词器继承自 tokenizers/base.py 中的基类。 |
processor
diffsynth_engine/processor 约 3 个文件 | 图像预处理层,提供 ControlNet 等所需的图像预处理功能 入口:CannyProcessor, DepthProcessor 依赖:torch, opencv 规模较小,主要服务于 ControlNet 工作流。 |
tools
diffsynth_engine/tools 约 6 个文件 | 高级工具层,封装复杂推理工作流,如 inpainting、outpainting、IP-Adapter、Redux、ControlNet 替换、超分等 入口:FluxInpaintingTool, FluxOutpaintingTool, FluxIPAdapterRefTool, FluxReduxRefTool, FluxReplaceByControlTool, QwenImageUpscalerTool 依赖:pipelines, models, processor commit 热点第 8 位(2 次)。QwenImageUpscalerTool 对应 ODTSR 超分模型,是 v0.7.0 新增功能。 |
examples
examples 约 30 个文件 | 示例代码层,提供各模型的使用示例,包括基础推理、LoRA、并行推理、性能基准测试等 入口:flux_text_to_image.py, flux_lora.py, flux_parallel.py, wan_text_to_video.py, wan_image_to_video.py, wan_lora.py, wan_speech_to_video.py, wan_dmd_text_to_video.py, wan_flf_to_video.py, qwen_image_edit.py, qwen_image_eligen.py, qwen_image_parallel.py, sdxl_text_to_image.py, flux2_klein_image.py, odtsr_upscale_tool_example.py, model_perf_benchmark.py 依赖:pipelines, configs, utils examples 是理解管线使用方式的最佳入口。flux_parallel.py、qwen_image_parallel.py、wan 系列展示了并行推理用法。 |
tests
tests 约 156 个文件 | 测试层,提供模型、管线、算法、分词器、工具的单元测试 入口:test_flux_dit.py, test_flux_text_encoder.py, test_flux_vae.py, test_wan_vae.py, test_qwen_image_dit.py, test_sd_unet.py, test_sdxl_unet.py, test_z_image_dit.py, test_flux_image.py, test_wan_video.py, test_qwen_image.py, test_sd_image.py, test_sdxl_image.py, test_sampler.py, test_scheduler.py, test_clip.py, test_t5.py, test_qwen2.py, test_flux_tools.py 依赖:所有其他模块 commit 热点第 2 位(tests/data 10 次),测试覆盖较全面。test_pipelines 是管线测试的核心。 |