EdgeDitEngine
src/core/runtime/edge_dit_engine.cpp 约 1 文件(.cpp + .hpp) | 顶层调度器,持有 ModelRuntime/ModelLoader/DiTPipeline/ParallelContext,驱动 image/video 生成流程,管理 parallel rank/world_size、cancel、progress 入口:EdgeDitEngine::init(const ed_ctx_params_t*), EdgeDitEngine::generate_image(const ed_image_generation_params_t*, ed_image_batch_t*), EdgeDitEngine::generate_video(const ed_video_generation_params_t*, ed_video_t*) 依赖:ModelRuntime, ModelLoader, DiTPipeline, ParallelContext, GenerationControl 从环境变量 WORLD_SIZE/RANK/LOCAL_RANK 推断分布式配置;是 C API 和 CLI 的共同后端 |
ModelRuntime
src/core/runtime/model_runtime.cpp 约 1 文件(.cpp + .hpp) | 封装 ggml 后端初始化、设备选择(CUDA/CPU/Metal/Vulkan)、per-component backend 分配(RuntimeBackends)、GenerationControl 状态机 入口:ModelRuntime::init(const ed_context_params_t&, ModelLoader&, ParallelContext*), ModelRuntime::select_pipeline(SDVersion), RuntimeBackends 结构体 依赖:ggml-backend.h, ModelLoader, ParallelContext, edge-dit.h 通过 ED_BACKEND 环境变量选择后端;支持 auto-fit 和 per-component offload |
ModelLoader
src/core/runtime/model_loader.cpp 约 1 文件(.cpp + .h) | 从 Diffusers 目录、safetensors、GGUF 等格式读取权重,映射到 ggml tensor,维护 TensorMap 和 IgnoreTensorSet 入口:ModelLoader::load(const std::string&, ggml_backend_t, ...), ModelLoader::TensorMap, ModelLoader::IgnoreTensorSet 依赖:ggml.h, utils/model_io/* 支持 shard index、safetensors、GGUF、pickle/torch 遗留格式 |
DiTPipeline
src/dit_models/pipelines/dit_pipeline.cpp 约 1 文件(.cpp + .hpp) | pipeline 抽象基类,定义 prepare/generate_image/generate_video 接口;create_dit_pipeline() 根据 SDVersion 分发到具体 pipeline 入口:DiTPipeline::prepare(const ed_context_params_t&, ModelRuntime&, const ModelLoader&, PipelineTensorRegistry&, std::string*), create_dit_pipeline(SDVersion, std::string*) 依赖:edge-dit.h, ModelRuntime, ModelLoader, PipelineTensorRegistry VERSION_FLUX/VERSION_FLUX_KONTEXT/VERSION_SD3/VERSION_QWEN_IMAGE/VERSION_WAN/VERSION_MINIMAX_H3/VERSION_LTXAV 等分支 |
FluxPipeline
src/dit_models/pipelines/flux_pipeline.cpp 约 1 文件(.cpp + .hpp) | FLUX.1/FLUX.2 文本生成图像 pipeline,组合 FluxRunner、Conditioner、VAE,支持 auto-fit、layered offload、CUDA Graphs 入口:FluxPipeline::prepare(), FluxPipeline::generate_image(const ed_image_generation_params_t*, ed_image_batch_t*, std::string*) 依赖:DiTPipeline, Flux::FluxRunner, Conditioner, VAE, ggml.h, cfg_parallel.hpp FLUX.2 使用 LLM conditioner;支持 few-step distilled 自动检测 |
FluxKontextPipeline
src/dit_models/pipelines/flux_kontext_pipeline.cpp 约 1 文件(.cpp + .hpp) | FLUX.1-Kontext 图像编辑 pipeline,支持 reference-guided 生成,含 debug align 工具 入口:FluxKontextPipeline::prepare(), FluxKontextPipeline::generate_image() 依赖:DiTPipeline, Flux::FluxRunner, Conditioner, VAE 通过 ED_DEBUG_FLUX_KONTEXT_ALIGN 环境变量控制 debug dump |
SD3Pipeline
src/dit_models/pipelines/sd3_pipeline.cpp 约 1 文件(.cpp + .hpp) | SD3/SD3.5 文本生成图像 pipeline,支持 dual text encoder(CLIP + T5) 入口:SD3Pipeline::prepare(), SD3Pipeline::generate_image() 依赖:DiTPipeline, SD3 模型组件, Conditioner, VAE 支持 SageAttention(ED_ENABLE_CUDA_SAGE_ATTN) |
WanPipeline
src/dit_models/pipelines/wan_pipeline.cpp 约 1 文件(.cpp + .hpp) | Wan 2.1 视频生成 pipeline,支持 1.3B 和 14B 模型 入口:WanPipeline::prepare(), WanPipeline::generate_video() 依赖:DiTPipeline, Wan 模型组件, VAE, text encoder Vulkan 后端仍在优化中 |
LTX2Pipeline
src/dit_models/pipelines/ltx2_pipeline.cpp 约 1 文件(.cpp + .hpp) | LTX-2.3 视频和音频 pipeline,支持 FL2VA/Ref2VA 工作流 入口:LTX2Pipeline::prepare(), LTX2Pipeline::generate_video() 依赖:DiTPipeline, LTX VAE, audio VAE, text encoder 最近提交热点(feat(ltx): add LTX-2.3 video and audio pipeline) |
MiniMaxH3Pipeline
src/dit_models/pipelines/minimax_h3_pipeline.cpp 约 1 文件(.cpp + .hpp) | MiniMax-H3 FL2VA/Ref2VA 视频+音频 pipeline,支持 full/pruned BF16 DiT、Q8_0 持久化 入口:MiniMaxH3Pipeline::prepare(), MiniMaxH3Pipeline::generate_video() 依赖:DiTPipeline, MiniMaxH3 VAE, audio VAE, text encoder H200 benchmark 显示 51.396s FL2VA text-to-video |
CUDAGraphs
src/core/backend/ggml/cuda/ 约 15+ 文件(.cu/.h/.cuh) | CUDA 专用算子集合:norm、RoPE、modulation、attention prep、SageAttention、SP FLUX、async offload,以及 cuDNN SDPA/conv 入口:ed_cuda_norm.cu, ed_cuda_rope.cu, ed_cuda_modulation.cu, ed_cuda_attention_v_prep.cu, ed_cuda_sage_attn.cu, ed_cuda_sp_flux.cu, ed_async_offload.cu, ed_cudnn_sdpa.cu, ed_cudnn_conv2d.cu, ed_cudnn_conv3d.cu 依赖:ggml-cuda.h, cuDNN frontend 通过 CMake 选项 ED_ENABLE_CUDA_NORM/ROPE/MODULATION/GRAPHS/SAGE_ATTN/CUDNN_SDPA 控制 |
CacheEngine
src/core/optimization/cache/ 约 20+ 文件 | timestep/block 级别计算复用框架,支持 DiCache、EasyCache、MagCache、SageCache、TaylorSeer、UCache 等策略 入口:CacheEngine, CachePolicy, policy_factory.cpp, cache_engine.cpp, capability_negotiation.cpp 依赖:DiTPipeline, ModelRuntime 通过 runtime_decision 和 substep_plan 控制缓存策略 |
ParallelContext
src/core/parallel/ 约 10+ 文件 | 轻量级并行运行时,支持 CFG parallel、sequence parallel、tensor parallel,后端可选 NCCL/MPI/CPU 入口:ParallelContext, cfg_parallel.cpp, sp_parallel.cpp, process_group.cpp, nccl_process_group.cpp, cpu_process_group.cpp 依赖:ggml-backend.h, NCCL, MPI 通过 ED_ENABLE_PARALLEL/NCCL/MPI 控制 |
ModelIO
src/utils/model_io/ 约 10 文件 | 离线权重格式转换:safetensors、GGUF、pickle、torch legacy、torch zip,支持 imatrix 量化 入口:convert.cpp, gguf_io.cpp, safetensors_io.cpp, pickle_io.cpp, torch_legacy_io.cpp, torch_zip_io.cpp 依赖:ggml.h, safetensors, nlohmann/json ed-convert CLI 工具依赖此模块 |
CLIServer
examples/cli/, examples/server/ 约 10 文件 | CLI 入口(ed-cli、ed-sample、ed-convert)和 HTTP 服务器(ed-server),暴露 C API 功能 入口:examples/cli/main.cpp, examples/cli/sample_main.cpp, examples/cli/convert_main.cpp, examples/server/main.cpp, examples/server/routes.cpp, examples/server/runtime.cpp 依赖:EdgeDitEngine, edge-dit.h HTTP server 使用 third_party/httplib.h |
PythonBindings
bindings/python/ 约 20+ 文件 | Python 包 edge_dit,提供 engine.py、server.py、config.py、enums.py 等高级接口,以及前端控制台 入口:bindings/python/src/edge_dit/__init__.py, engine.py, server.py, _capi.py, config.py 依赖:EdgeDitEngine (via C API), pybind11/ctypes 前端控制台使用 Playwright + Vite + TypeScript |
Benchmark
benchmark/ 约 30+ 文件 | 跨系统性能评测框架,支持 edge-dit.cpp、Diffusers、stable-diffusion.cpp 对比,含 CLIP/SSIM/LPIPS/aesthetic 等指标 入口:benchmark/run.py, benchmark/engine/runners/edge_dit.py, benchmark/evaluation/text_to_image/eval.py, benchmark/evaluation/text_to_video/eval.py 依赖:EdgeDitEngine (Python), diffusers, opencv, PIL 通过 ED_BENCHMARK_MARKERS 控制 phase marker 输出 |
DiTComponents
src/dit_models/components/ 约 50+ 文件 | 模型组件库:diffusion transformer(models/)、text encoder(CLIP/T5/LLM)、VAE、conditioner、scheduler、adaptors(LoRA/ControlNet/PMID)、normalization、RoPE、modulation 入口:src/dit_models/models/flux.hpp, wan.hpp, qwen_image.hpp, etc.; src/dit_models/components/text_encoders/clip.hpp, t5.hpp, llm.hpp; src/dit_models/components/autoencoders/vae.hpp, auto_encoder_kl.hpp 依赖:ggml.h, ggml_extend.hpp 每个模型族有独立的 .hpp 定义;text encoders 支持多种 tokenizer(BPE、Gemma、Mistral、Qwen2、T5 Unigram) |