← 所有项目

Contribution Tasks

THU-MIG/edge-dit.cpp

高。项目处于 alpha 阶段,CPU/Metal 路径、Python 绑定、测试基建、文档一致性都是维护者明确需要但人手不足的方向;这些方向恰好可以在 Apple Silicon Mac 上独立完成,与候选人的 kernel/性能工程背景匹配。

当前方向:团队正快速扩展模型覆盖(LTX-2.3、MiniMax-H3、FLUX.2)和对外接口(Python bindings、HTTP server、benchmark),但 CPU 路径单测、Metal 验证、工具链测试、文档一致性等基础建设明显滞后,是新人安全切入的窗口。

★ 51Fork 101 个候选任务Gemini:LongCat-2.0

更新于 2026-10-08T07:37:23+00:00 · 打开仓库 ↗

一、项目定位

edge-dit.cpp 是清华大学 THU-MIG 团队发起的一个开源、DiT-first 的 C/C++ 原生推理引擎,专为在本地和资源受限设备上运行 Diffusion Transformer(DiT)而设计。它基于 ggml 张量/图运行时构建,目标是在没有 Python、没有 PyTorch 依赖的前提下,为 FLUX.1/FLUX.2、SD3/SD3.5、Qwen-Image、Wan 2.1、MiniMax-H3 等主流 DiT 模型族提供统一的 text-to-image、image editing、video generation 推理能力。项目通过 --auto-fit、layered offload、per-component offload、VAE tiling、离线 GGUF 量化(ed-convert + imatrix)以及 CUDA 专用算子(cuDNN SDPA、edge CUDA norm/RoPE/modulation、CUDA Graphs、SageAttention2 风格 INT8-QK 等)把 20GB+ 的大模型塞进 24GB 甚至更小的显存。 项目目前处于 alpha / public preview 阶段:README 顶部徽章明确标 status-alpha-orange,版本号 v0.1.0,README 声明 v0.x 的 API、ABI、CLI flags、HTTP schemas 公开但尚未稳定。从目录与提交热点看,src/dit_models(39 次提交)和 src/core(12 次)是最活跃区域,bindings/python(8 次)、examples/server(7 次)紧随其后,说明团队正在快速扩展模型覆盖与对外接口。最近提交集中在 LTX-2.3 视频/音频管线、MiniMax-H3 性能数据、FLUX latent channels 修复等,属于功能扩展与性能打磨并行期。 与同类项目的关系:它站在 ggml 之上,借鉴 stable-diffusion.cpp 的 DiT 实现思路,但把重心放在 DiT 原生支持、多后端(CUDA first-class,CPU/Metal/Vulkan 可选)以及面向边缘设备的显存-精度自动调度上,是「llama.cpp / sd.cpp 生态里专门做 DiT 的那一支」。

解决什么问题、给谁用

解决的核心问题是:主流 DiT 模型(FLUX、SD3、Qwen-Image、Wan、MiniMax-H3 等)在本地和资源受限设备上推理时面临的显存爆炸、加载慢、依赖重、跨模型/跨任务需要多套工具链的痛点。具体表现为——大模型无法常驻 24GB 以下显存;PyTorch/Diffusers 运行时对边缘部署不友好;不同 DiT 家族需要各自专用推理栈;few-step distilled 模型缺乏自动调度;端侧(CPU/Metal/Vulkan)缺少统一的 DiT 运行时。 目标用户与典型场景: - 端侧/边缘部署工程师:需要在笔记本、嵌入式设备、Mac(Metal)、非 NVIDIA GPU(Vulkan)上跑 FLUX/SD3/Qwen-Image,要求无 Python、显存可控、可离线量化。 - 扩散模型应用开发者:通过 C API、CLI、HTTP server、Python bindings 把 DiT 推理嵌入产品,覆盖 t2i、editing、video 三类任务。 - 推理性能/系统优化工程师:研究 offload 策略、算子融合、并行执行(CFG/sequence parallelism、NCCL/MPI 多 worker)、量化对质量的影响。 - 学术/工业研究员:复现、对比不同 DiT 模型在统一运行时下的速度、显存、图像质量(benchmark/ 目录提供了完整的评测框架)。

同类项目与差别

核心能力

能力在哪成熟度
DiT 多族模型推理(FLUX.1/FLUX.2、SD3/SD3.5、Qwen-Image、Wan 2.1、MiniMax-H3、LTX-2)src/dit_models/, docs/models.md, docs/ltx2.md, docs/minimax-h3.md成熟
多后端支持(CUDA first-class,CPU + oneDNN bf16 AMX,Metal experimental,Vulkan functional)CMakeLists.txt (ED_GGML_CUDA/METAL/VULKAN/OPENCL/SYCL/HIP), scripts/build_*.sh, third_party/ggmlCUDA 成熟,CPU 成熟,Metal 实验,Vulkan 成熟(部分模型优化中)
显存感知自动调度(--auto-fit、--max-vram、per-component offload、VAE tiling)src/core/, src/edge_dit.cpp, docs/optimization/memory-efficient-execution.md成熟
Layered offload(逐 block 流式加载,CUDA async double-buffered)src/core/, docs/optimization/memory-efficient-execution.md成熟
离线 GGUF 量化与 imatrix 校准(ed-convert)tools/imatrix/, scripts/diffusers/, docs/optimization/model-representation-and-precision.md成熟
CUDA 专用算子(cuDNN SDPA、edge CUDA norm/RoPE/modulation、CUDA Graphs、SageAttention2 INT8-QK)CMakeLists.txt (ED_ENABLE_CUDA_NORM/ROPE/MODULATION/GRAPHS/SAGE_ATTN/CUDNN_SDPA), third_party/ggmlnorm/RoPE/modulation/Graphs 成熟(默认 ON),cuDNN SDPA/SageAttention 实验(默认 OFF)
Few-step distilled 模型自动检测(Turbo/Lightning/schnell → 4-8 steps)src/dit_models/, docs/optimization/few-step-distilled-models.md成熟
并行执行(CFG parallelism、sequence parallelism、NCCL/MPI multi-worker)CMakeLists.txt (ED_ENABLE_NCCL/MPI/PARALLEL), docs/optimization/parallel-execution.md实验(默认 OFF)
对外接口(C API、CLI ed-cli/ed-sample、HTTP server ed-server、Python bindings、Python job server)include/edge-dit.h, examples/cli/, examples/server/, bindings/python/, docs/api.md成熟(但 v0.x 不稳定)
统一 benchmark 框架(跨系统速度/VRAM/图像质量评测)benchmark/ (123 文件,含 jobs/models/sites/reports/evaluation), docs/performance-4090.md, docs/performance-H200.md成熟
权重格式加载(Diffusers 目录、standalone 组件、safetensors + shard index、GGUF)src/core/, src/utils/成熟
Metal(macOS)支持scripts/build_metal.sh, CMakeLists.txt (ED_GGML_METAL)实验(README 明确标 Experimental)

阶段:alpha / public preview(v0.1.0,2026-07-11 公开预览;README 徽章 status-alpha-orange;v0.x API/ABI/CLI/HTTP 公开但不稳定;Metal 标 Experimental,Vulkan 标 Functional 但部分模型仍在优化)

技术栈:C11 / C++17;ggml(third_party/ggml,作为底层张量/图运行时,通过 git submodule 引入);CMake >= 3.20 构建系统;CUDA/cuDNN/NCCL(可选,用于 CUDA 后端与分布式);oneDNN(third_party/onednn,可选,CPU bf16 AMX matmul 加速);Vulkan / Metal / OpenCL / SYCL / HIP(通过 ggml 后端可选);nlohmann/json、cpp-httplib、stb_image_resize/write(third_party/);Python bindings(bindings/python/);GitHub Actions CI(.github/workflows)

规模:版本 v0.1.0-alpha(2026-07-11 公开预览);最近推送 2026-09-01;根目录含 17 个顶级目录;benchmark/ 123 文件;bindings/ 110 文件;docs/ 22 文件;src/ 220 文件;third_party 含 ggml、onednn、httplib.h、json.hpp、stb 等;提交热点集中在 src/dit_models(39)、src/core(12)、bindings/python(8)、examples/server(7);无 Release 记录(releases 为空数组);README 显示 4090/H200 多模型 benchmark 数据;star 数未提供(需验证)。

二、架构与代码地图

edge-dit.cpp 的代码组织可以清晰地划分为五层,自顶向下分别是: 1. 接入层(Access Layer) 负责对外暴露统一接口,包括 CLI(examples/cli/main.cpp、examples/cli/sample_main.cpp、examples/cli/convert_main.cpp)、原生 HTTP 服务器(examples/server/main.cpp、examples/server/routes.cpp、examples/server/runtime.cpp)、C API(include/edge-dit.h)以及 Python 绑定(bindings/python/src/edge_dit/ 下的 engine.py、server.py、_capi.py、config.py 等)。这一层把用户请求翻译成内部参数结构 ed_ctx_params_t / ed_image_generation_params_t / ed_video_generation_params_t,然后交给调度层。 2. 调度层(Scheduling Layer) 核心是 src/core/runtime/edge_dit_engine.cpp 中的 EdgeDitEngine 类,它持有 ModelRuntime、ModelLoader、DiTPipeline 和 ParallelContext,负责初始化后端、加载模型、选择 pipeline、驱动生成循环。ModelRuntime(src/core/runtime/model_runtime.cpp)封装 ggml 后端初始化、设备选择(CUDA/CPU/Metal/Vulkan)、per-component backend 分配(RuntimeBackends)以及 GenerationControl 状态机。ModelLoader(src/core/runtime/model_loader.cpp)负责从 Diffusers 目录、safetensors、GGUF 等格式读取权重并映射到 ggml tensor。 3. 执行层(Execution Layer) 以 src/dit_models/pipelines/ 下的各 pipeline 实现为中心:FluxPipeline、FluxKontextPipeline、SD3Pipeline、QwenImagePipeline、QwenImageEditPipeline、WanPipeline、LTX2Pipeline、MiniMaxH3Pipeline,它们都继承自 DiTPipeline 基类(src/dit_models/pipelines/dit_pipeline.hpp)。每个 pipeline 内部组合了 diffusion transformer(src/dit_models/models/)、text encoder(CLIP/T5/LLM)、VAE、conditioner、scheduler 等组件,并通过 ggml 计算图执行去噪循环。src/core/optimization/cache/ 提供了 timestep/block 级别的计算复用(DiCache、EasyCache、MagCache、SageCache、TaylorSeer、UCache 等策略)。 4. Kernel 层(Kernel Layer) 包含 ggml 后端的扩展算子:src/core/backend/ggml/cuda/ 下的 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,以及 src/core/backend/cuDNN/ 下的 ed_cudnn_sdpa.cu、ed_cudnn_conv2d.cu、ed_cudnn_conv3d.cu、ed_cudnn_conv_transpose_1d.cu。这些是 CUDA 性能的关键路径,通过 CMake 选项 ED_ENABLE_CUDA_NORM、ED_ENABLE_CUDA_ROPE、ED_ENABLE_CUDA_MODULATION、ED_ENABLE_CUDA_GRAPHS、ED_ENABLE_CUDA_SAGE_ATTN、ED_ENABLE_CUDNN_SDPA 控制。src/core/backend/ggml/ggml_graph_cut.cpp 实现了 layered offload 所需的图切割。 5. 工具层(Tooling Layer) 包括离线量化工具 src/utils/model_io/(convert.cpp、gguf_io.cpp、safetensors_io.cpp、pickle_io.cpp、torch_legacy_io.cpp、torch_zip_io.cpp)、imatrix 校准(tools/imatrix/calibrate.py、tools/imatrix/ggml_quant.py)、benchmark 框架(benchmark/ 目录,含 run.py、engine/runners/edge_dit.py、evaluation/ 下的 CLIP/SSIM/LPIPS/aesthetic 等指标)、Python 前端控制台(bindings/python/frontend/server-console/)。

接入层调度层执行层Kernel 层工具层CLIServer → EdgeDitEngine:请求请求PythonBindings → EdgeDitEngine:请求请求EdgeDitEngine → ModelRuntime:初始化EdgeDitEngine → ModelLoader:加载权重加载权重EdgeDitEngine → DiTPipeline:调度调度ModelRuntime → CUDAGraphs:后端后端DiTPipeline → FluxPipeline:分发DiTPipeline → WanPipeline:分发DiTPipeline → LTX2Pipeline:分发分发DiTPipeline → MiniMaxH3Pipeline:分发分发FluxPipeline → DiTComponents:组件组件WanPipeline → DiTComponents:组件组件DiTPipeline → CacheEngine:缓存缓存DiTPipeline → ParallelContext:并行并行DiTComponents → CUDAGraphs:算子算子ModelLoader → ModelIO:格式解析格式解析Benchmark → EdgeDitEngine:评测评测CLIServerCLIServerPythonBindingsPythonBindingsBenchmarkBenchmarkEdgeDitEngineEdgeDitEngineModelRuntimeModelRuntimeModelLoaderModelLoaderDiTPipelineDiTPipelineFluxPipelineFluxPipelineFluxKontextPipelineFluxKontextPipelineSD3PipelineSD3PipelineWanPipelineWanPipelineLTX2PipelineLTX2PipelineMiniMaxH3PipelineMiniMaxH3PipelineCacheEngineCacheEngineParallelContextParallelContextDiTComponentsDiTComponentsCUDAGraphsCUDAGraphsModelIOModelIO
edge-dit.cpp 五层架构图:接入层(CLI/Python/Benchmark)→ 调度层(EdgeDitEngine/ModelRuntime/ModelLoader)→ 执行层(Pipelines/Cache/Parallel/Components)→ Kernel 层(CUDA 算子)→ 工具层(ModelIO)
模块 / 路径职责 · 入口 · 依赖
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)
目录树(按文件数)
  • src/ 220 个文件
    core, dit_models, edge_dit.cpp, utils
  • benchmark/ 123 个文件
    CAPABILITIES.md, README.md, __init__.py, assets, engine, evaluation, jobs, methods, models, prompts, reports, requirements, requirements.txt, run.py
  • bindings/ 110 个文件
    python
  • docs/ 22 个文件
    api.md, assets, build.md, cli.md, development.md, ltx2.md, minimax-h3.md, models.md, optimization, performance-4090.md, performance-H200.md
  • website/ 17 个文件
    assets, favicon.svg, index.html, robots.txt, sitemap.xml, styles.css
  • scripts/ 12 个文件
    bootstrap.sh, build_cpu.sh, build_cuda.sh, build_metal.sh, build_vulkan.sh, create_source_release.sh, diffusers, merge_qwen_lora.py
  • examples/ 10 个文件
    cli, server
  • .github/ 5 个文件
    ISSUE_TEMPLATE, pull_request_template.md, workflows
  • third_party/ 4 个文件
    ggml, httplib.h, json.hpp, onednn, stb_image_resize.h, stb_image_write.h
  • tools/ 2 个文件
    imatrix
  • .gitignore/ 1 个文件
  • .gitmodules/ 1 个文件
  • CMakeLists.txt/ 1 个文件
  • CONTRIBUTING.md/ 1 个文件
  • LICENSE/ 1 个文件
  • NOTICE/ 1 个文件

一次调用怎么流过这些模块

一次典型推理请求(以 text-to-image 为例)的数据流如下: 1. 请求入口:用户通过 CLI(examples/cli/main.cpp)或 HTTP server(examples/server/routes.cpp)或 Python(bindings/python/src/edge_dit/engine.py)发起请求。请求参数被填充到 ed_image_generation_params_t(含 prompt、width、height、steps、cfg_scale、seed 等),而上下文参数填充到 ed_ctx_params_t(含 model path、backend、offload 策略、quantization、parallel 配置等)。 2. 引擎初始化:EdgeDitEngine::init()(src/core/runtime/edge_dit_engine.cpp)被调用。它首先通过环境变量(WORLD_SIZE、RANK、LOCAL_RANK)推断分布式配置,创建 ParallelContext。然后 ModelRuntime::init() 根据 ED_BACKEND 或 params.backend 初始化 ggml 后端(CUDA/CPU/Metal/Vulkan),并为每个组件分配独立 backend(RuntimeBackends:backend、clip_backend、vae_backend、control_net_backend),支持 per-component offload。接着 ModelLoader::load() 从指定路径读取权重文件(safetensors/GGUF/Diffusers 目录),通过 utils/model_io/ 下的格式解析器映射到 ggml tensor,返回 TensorMap。最后 create_dit_pipeline() 根据模型版本(SDVersion)创建对应 pipeline(如 FluxPipeline)。 3. Pipeline 准备:DiTPipeline::prepare() 被调用(如 FluxPipeline::prepare())。它从 TensorMap 中提取 diffusion transformer、text encoder、VAE 的权重,构建 ggml 计算图节点,注册到 PipelineTensorRegistry。同时初始化 scheduler(discrete/karras/exponential/ays/gits/sgm_uniform/simple/smoothstep/kl_optimal/lcm/bong_tangent/ltx2)、denoiser、conditioner。如果启用 auto-fit,会根据 VRAM 预算自动选择量化精度(q8_0 → q4_K)和 per-component placement。 4. 文本编码:EdgeDitEngine::generate_image() 调用 pipeline 的 generate_image()。首先通过 text encoder(CLIP/T5/LLM,位于 src/dit_models/components/text_encoders/)将 prompt 编码为 condition tensor。Tokenizer(BPE/Gemma/Mistral/Qwen2/T5 Unigram)将文本转为 token ID,然后 encoder 模型前向计算得到 embedding。 5. 去噪循环:pipeline 进入 timestep 循环(由 scheduler 控制)。每个 step: - 准备 latent noise(通过 rng_philox.hpp 或 rng_mt19937.hpp 生成) - 通过 diffusion transformer(src/dit_models/models/flux.hpp 等)前向计算,内部调用 ggml 图执行 - CUDA 后端会使用自定义算子(ed_cuda_norm.cu、ed_cuda_rope.cu、ed_cuda_modulation.cu、ed_cudnn_sdpa.cu 等)加速 - 如果启用 layered offload,ggml_graph_cut.cpp 会将图切割,逐 block 在 GPU/CPU 间流转(ed_async_offload.cu 提供双缓冲) - 如果启用 cache(CacheEngine),会复用之前 timestep/block 的中间结果 - CFG parallel(cfg_parallel.cpp)会将 conditional/unconditional 分支并行执行 - Scheduler 更新 latent 6. 解码输出:去噪完成后,latent 通过 VAE decoder(src/dit_models/components/autoencoders/vae.hpp 或 auto_encoder_kl.hpp)解码为图像像素。VAE tiling 支持大图像分块解码以避免 OOM。最终图像通过 stb_image_write.h 或 Python 接口返回给用户。 关键调度点: - EdgeDitEngine::init():后端选择、模型加载、pipeline 创建 - ModelRuntime::select_pipeline():根据 SDVersion 分发 - DiTPipeline::prepare():权重映射、图构建、scheduler 初始化 - ggml_graph_compute():ggml 图执行(含 CUDA Graphs 捕获) - CacheEngine::decide():缓存策略决策 - ParallelContext::all_reduce():分布式通信点

1CLI 解析参数main.cpp · examples/cli/main.cpp2引擎初始化EdgeDitEngine::init() · src/core/runtime/edge_dit_engine.cpp3后端与设备选择ModelRuntime::init() · src/core/runtime/model_runtime.cpp4加载模型权重ModelLoader::load() · src/core/runtime/model_loader.cpp5创建 Pipelinecreate_dit_pipeline() · src/dit_models/pipelines/dit_pipeline.cpp6准备计算图FluxPipeline::prepare() · src/dit_models/pipelines/flux_pipeline.cpp7文本编码Conditioner · src/dit_models/components/text_encoders/conditioner.hpp8去噪循环FluxPipeline::generate_image() · src/dit_models/pipelines/flux_pipeline.cpp9VAE 解码VAE · src/dit_models/components/autoencoders/vae.hpp10输出图像stb_image_write · third_party/stb_image_write.h

关键类型与函数

名称路径用途
EdgeDitEnginesrc/core/runtime/edge_dit_engine.hpp顶层调度器类,持有 ModelRuntime/ModelLoader/DiTPipeline/ParallelContext,驱动 image/video 生成流程
ModelRuntimesrc/core/runtime/model_runtime.hpp封装 ggml 后端初始化、设备选择、per-component backend 分配(RuntimeBackends)、GenerationControl 状态机
ModelLoadersrc/core/runtime/model_loader.h从多种格式(safetensors/GGUF/Diffusers)读取权重,映射到 ggml tensor,维护 TensorMap 和 IgnoreTensorSet
DiTPipelinesrc/dit_models/pipelines/dit_pipeline.hpppipeline 抽象基类,定义 prepare/generate_image/generate_video 接口;create_dit_pipeline() 工厂函数
FluxPipelinesrc/dit_models/pipelines/flux_pipeline.hppFLUX.1/FLUX.2 文本生成图像 pipeline,组合 FluxRunner、Conditioner、VAE
FluxKontextPipelinesrc/dit_models/pipelines/flux_kontext_pipeline.hppFLUX.1-Kontext 图像编辑 pipeline,支持 reference-guided 生成
SD3Pipelinesrc/dit_models/pipelines/sd3_pipeline.hppSD3/SD3.5 文本生成图像 pipeline,支持 dual text encoder(CLIP + T5)
WanPipelinesrc/dit_models/pipelines/wan_pipeline.hppWan 2.1 视频生成 pipeline,支持 1.3B 和 14B 模型
LTX2Pipelinesrc/dit_models/pipelines/ltx2_pipeline.hppLTX-2.3 视频和音频 pipeline,支持 FL2VA/Ref2VA 工作流
MiniMaxH3Pipelinesrc/dit_models/pipelines/minimax_h3_pipeline.hppMiniMax-H3 FL2VA/Ref2VA 视频+音频 pipeline
CacheEnginesrc/core/optimization/cache/runtime/cache_engine.hpptimestep/block 级别计算复用框架,支持多种缓存策略(DiCache/EasyCache/MagCache/SageCache/TaylorSeer/UCache)
ParallelContextsrc/core/parallel/parallel_context.hpp轻量级并行运行时,支持 CFG parallel、sequence parallel、tensor parallel,后端可选 NCCL/MPI/CPU
RuntimeBackendssrc/core/runtime/model_runtime.hppper-component backend 分配结构体(backend、clip_backend、vae_backend、control_net_backend)
GenerationControlsrc/core/runtime/model_runtime.hpp生成状态机,管理 active/cancel_requested/cancelled/current_step/total_steps
PipelineTensorRegistrysrc/dit_models/pipelines/dit_pipeline.hpppipeline 权重注册表,维护 TensorMap 和 IgnoreTensorSet
ed_ctx_params_tinclude/edge-dit.h上下文参数结构体,包含 model path、backend、offload 策略、quantization、parallel 配置等
ed_image_generation_params_tinclude/edge-dit.h图像生成参数结构体,包含 prompt、width、height、steps、cfg_scale、seed 等

扩展点

最近在动的地方

建议阅读顺序

  1. README.md — 项目概览、功能列表、性能数据、支持模型
  2. include/edge-dit.h — C API 和核心类型定义(ed_ctx_params_t、ed_image_generation_params_t、SDVersion 等)
  3. src/core/runtime/edge_dit_engine.hpp + edge_dit_engine.cpp — 顶层调度器,理解 init/generate_image/generate_video 流程
  4. src/core/runtime/model_runtime.hpp + model_runtime.cpp — 后端初始化、设备选择、per-component backend 分配
  5. src/dit_models/pipelines/dit_pipeline.hpp + dit_pipeline.cpp — pipeline 抽象基类和工厂函数
  6. src/dit_models/pipelines/flux_pipeline.hpp + flux_pipeline.cpp — 最成熟的 pipeline 实现,理解 FLUX 执行流程
  7. src/dit_models/models/flux.hpp — FLUX 模型定义,理解 diffusion transformer 组件
  8. src/core/backend/ggml/cuda/ — CUDA 专用算子,理解性能关键路径
  9. src/core/optimization/cache/ — 计算复用框架,理解缓存策略
  10. src/core/parallel/ — 并行运行时,理解 CFG/sequence/tensor parallel

三、本地跑起来(没有 GPU 的 Mac)

安装

  1. git clone --recursive https://github.com/THU-MIG/edge-dit.cpp && cd edge-dit.cpp
  2. # 若忘记 --recursive,补拉子模块:
  3. # git submodule update --init --recursive
  4. # 或 bash scripts/bootstrap.sh
  5. # 在 Apple Silicon Mac 上只走 CPU 路径,不启用 CUDA/Metal/Vulkan:
  6. bash scripts/build_cpu.sh
  7. # 产物默认在 build-cpu/bin/ 下;验证 CLI 能跑:
  8. ./build-cpu/bin/ed-cli --help
  9. # 可选:安装 Python 绑定做 smoke test(需要 Python 环境):
  10. cd bindings/python && python -m pip install -e '.[dev]'

哪些路径能真跑

['可本地执行:src/core/runtime/model_runtime.cpp 中 init_explicit_backend() 的 request=="cpu" 分支、RuntimeBackends 的 per-component CPU 分配;src/core/parallel/backends/cpu/ 的 cpu_process_group.cpp 与 file_store.cpp;src/core/optimization/cache/ 的 DiCache/TaylorSeer/UCache 等缓存策略(timestep/block 级 cache reuse 在 CPU 上可跑但极慢);src/dit_models/components/text_encoders/tokenizers/ 下 BPE/CLIP/T5/Qwen2/Mistral/Gemma tokenizer 全部可单测;src/utils/model_io/ 的 safetensors/gguf/pickle/torch_zip 读写与 convert.cpp 权重转换;tools/imatrix/ 的量化校准脚本(CPU 可跑但很慢);bindings/python/ 下 test_capi_layout.py、test_config_validation.py、test_enum_mapping.py、test_image_conversion.py、test_library_loading.py 等纯 CPU 测试。', '只能读代码或上 Colab T4 验证:src/core/backend/cuDNN/ 全部(ed_cudnn_sdpa.cu、ed_cudnn_conv2d.cu、ed_cudnn_conv3d.cu、ed_cudnn_conv_transpose_1d.cu);src/core/backend/ggml/cuda/ 全部(ed_cuda_norm.cu、ed_cuda_rope.cu、ed_cuda_modulation.cu、ed_cuda_sage_attn.cu、ed_cuda_sp_flux.cu、ed_async_offload.cu、ed_cuda_attention_v_prep.cu 及 sage/ 下 .cuh);src/core/backend/ggml/parallel/ 的 NCCL/MPI 多卡通信(ggml_comm.cpp);src/core/parallel/backends/nccl/;CMakeLists.txt 中 ED_GGML_CUDA/METAL/VULKAN 对应的后端;ED_ENABLE_CUDA_GRAPHS、ED_ENABLE_CUDA_SAGE_ATTN、ED_ENABLE_CUDNN_SDPA 等宏保护的代码;benchmark/ 下依赖真实 GPU 的 engine/measurement/gpu_monitor.py 与 engine/runners/ 的端到端跑分;examples/server/ 的 HTTP 服务(可编译但推理需 GPU 才有意义)。']

最小可运行

  1. # 1) CLI 帮助与版本(验证构建产物存在):
  2. ./build-cpu/bin/ed-cli --help
  3. # 2) 权重转换冒烟(把 Diffusers/safetensors 转 GGUF,CPU 可跑,需准备一个小模型如 FLUX.1-dev 或 SD3):
  4. ./build-cpu/bin/ed-convert --help
  5. # 3) Python 绑定加载与配置校验(无 GPU 也能跑单元测试子集):
  6. cd bindings/python && pytest tests/test_capi_layout.py tests/test_config_validation.py tests/test_enum_mapping.py tests/test_image_conversion.py tests/test_library_loading.py -v
  7. # 4) Tokenizer 单测(纯 CPU,验证 text encoder 前端):
  8. # 在 CMake 中若有 tokenizer 测试 target 则直接跑;否则通过 Python bindings 调用 tokenizer 接口做冒烟。
  9. # 5) 真实推理冒烟(需下载 GGUF 或原始权重,CPU 极慢但能跑通端到端,建议在 Colab T4 上做最终确认):
  10. ./build-cpu/bin/ed-cli --backend cpu --model /path/to/flux-dev --prompt "a glass teapot on a wooden table" --width 128 --height 128 --steps 1 --output smoke.png

测试

['C++ 测试框架:项目主仓库未显式引入 gtest/gmock(CMakeLists.txt 与 src/ 下未见 test target),C++ 侧验证主要靠 ed-cli --help 与 ed-convert --help 冒烟;Python 侧使用 pytest,入口在 bindings/python/tests/。', '只跑 CPU 子集的命令:cd bindings/python && pytest tests/test_capi_layout.py tests/test_config_validation.py tests/test_enum_mapping.py tests/test_image_conversion.py tests/test_library_loading.py -v。', '真实模型集成测试需显式开启环境变量 EDGE_DIT_RUN_INTEGRATION=1、EDGE_DIT_LIBRARY=<path> 和模型路径,默认不会在普通开发或 CI 中运行(见 CONTRIBUTING.md)。', '耗时:纯 CPU 单元测试(无真实模型)通常 < 1 分钟;带真实权重的集成测试在 CPU 上可能数十分钟到小时级,建议只在 Colab T4 上做。']

调试

CI

['CI 配置位于 .github/workflows/(目录下共 5 个文件,具体文件名未在证据中列出,需验证是否为 lint/build/test 矩阵)。', "从 CONTRIBUTING.md 推断 CI 至少包含:CPU 构建验证(bash scripts/build_cpu.sh + ./build-cpu/bin/ed-cli --help)和 Python 绑定测试(cd bindings/python && pip install -e '.[dev]' && pytest)。", 'PR 会被以下卡住:未通过 Python 单元测试;引入生成产物/本地 benchmark 图像/视频/日志/机器特定路径(CONTRIBUTING.md 明确禁止);包含模型权重或私有数据集;公开行为变更未同步 README 或 docs;性能工作缺少 before/after 延迟或显存数据、硬件/CUDA 版本信息。', '真实模型集成测试(EDGE_DIT_RUN_INTEGRATION=1)默认不在 CI 中运行,需显式开启。']

坑

四、维护者与社区

项目处于 alpha 快速迭代期(v0.1.0,2026-07-11 进入 public preview)。最近 30 天(2026-08 至 2026-09-01)至少有 11 个非合并提交,平均约每 2–3 天一次提交,节奏偏快。提交热点集中在 src/dit_models(39 次)、src/core(12 次)、bindings/python(8 次)、examples/server(7 次)、examples/cli(6 次),说明团队在并行扩展模型覆盖、核心运行时与对外接口。Release 方面,仓库目前 releases 为空数组,没有正式 GitHub Release,仅以 README 顶部徽章 status-alpha-orange 与 v0.1.0 版本号标记阶段。

谁角色依据
THU-MIG 团队(清华大学 THU-MIG)项目发起方与整体维护者,仓库 org 为 THU-MIG,README 致谢与 citation 均指向该团队仓库 URL https://github.com/THU-MIG/edge-dit.cpp;README 顶部徽章、## Contributors 节、## Acknowledgements 节均指向 THU-MIG;README 引用 docs/performance-4090.md、docs/performance-H200.md、docs/minimax-h3.md 等团队产出文档
核心提交者(从 commit message 前缀推断的多人协作)负责 LTX-2.3 管线、MiniMax-H3 性能、FLUX latent channels、offload 路径、benchmark manifests 等具体模块的开发与修复最近提交中出现 feat(ltx)、perf(ltx)、fix(ltx)、fix(flux)、docs(minimax-h3)、feat(benchmark)、docs(bindings)、docs(models)、docs(cli) 等多种 conventional-commits 前缀,且主题分散在 LTX、FLUX、MiniMax-H3、benchmark、bindings、docs 多个模块,明显不止一人;具体提交如 feat(ltx): add LTX-2.3 video and audio pipeline、fix(flux): derive latent channels for auto-fit、docs(minimax-h3): publish RTX 4090 comparison
社区贡献者(外部)通过 PR 参与,但当前 pulls 为空数组,说明公开 PR 极少或仍在团队内部消化仓库 pulls 字段为空数组 [];issues 中 Issue #82 [Feature]: LTX2.3 有 enhancement 标签但 assignees 为空、comments 为 0,说明外部参与度目前较低

流程与 Review 风格

贡献流程相对轻量,没有 CLA/DCO 或 pre-commit 的强制证据。CONTRIBUTING.md 要求:先 git submodule update --init --recursive,用 bash scripts/build_cpu.sh 或 bash scripts/build_cuda.sh 验证;Python 绑定用 cd bindings/python && pip install -e '.[dev]' && pytest;集成测试需显式环境变量 EDGE_DIT_RUN_INTEGRATION=1、EDGE_DIT_LIBRARY 与模型路径,默认不跑。PR 要求「keep changes focused」,性能工作需附上:model family 与命令行、硬件/CUDA/cuDNN/NCCL 版本、before/after 延迟或显存数据、正确性或图像质量验证。对外行为变更需在同一 PR 更新 README 或 docs。代码风格要求:优先复用既有模式、模型特定优化隔离、不提交生成产物/本地 benchmark 图像/视频/日志/机器路径、不提交模型权重或私有数据集。许可证方面,CONTRIBUTING.md 明确「By contributing, you agree that your contributions are licensed under the Apache License, Version 2.0, unless explicitly stated otherwise」,即默认 Apache-2.0,无需额外 CLA。

由于 pulls 为空数组、Issue #82 的 comments 为 0,无法从公开 PR/Issue 评论中推断具体 review 用语或响应时间。但从 commit 历史看,团队对 main 分支有直接提交(如 Merge remote-tracking branch 'origin.main' 与多个非合并提交),说明维护者可能直接在 main 上迭代或通过内部流程合入,公开 review 样本不足,响应速度与风格「需验证」。

渠道

这里的规矩

维护者现在最想要的帮助

五、切入方案

建议长期负责:CPU / Metal 验证与工具链质量(覆盖 src/core/runtime CPU 路径、src/core/parallel/backends/cpu、src/utils/model_io 转换/量化、bindings/python 测试、benchmark CPU profile)
这个方向天然不依赖 NVIDIA GPU,Apple Silicon MacBook Air 就是主战场;它横跨 runtime、parallel、model_io、bindings、benchmark 五条线,够核心且能让你在不碰 CUDA 的情况下深入理解整个加载-调度-执行链路;从补测试、写基线、修文档切入,逐步成为 CPU/Metal 路径的默认 reviewer,是通向维护者身份的最稳路径。

它现在缺什么(你无 GPU 也能补)

缺口依据为什么是你
CPU 路径缺少系统性单测与数值对齐证据CONTRIBUTING.md 只要求 bash ./scripts/build_cpu.sh && ./build-cpu/bin/ed-cli --help 作为 CPU 验证,没有要求任何数值对齐测试;bindings/python/tests/ 下列出了 test_capi_layout.py、test_config_validation.py、test_enum_mapping.py、test_image_conversion.py、test_library_loading.py 等纯 CPU 测试,但 src/core、src/dit_models/components、src/utils/model_io 下没有对应的 C++ 单元测试目录;src/core/runtime/model_runtime.cpp 中 init_explicit_backend() 的 request=="cpu" 分支、RuntimeBackends 的 per-component CPU 分配都只能靠读代码验证。这是纯 CPU / Apple Silicon 可独立完成的工作;你有 CUDA/Triton 内核经验,能一眼看出 CPU 路径里哪些地方需要数值对齐(算子边界、量化反量化、RoPE/modulation 的 CPU 实现),补测试既安全又能快速建立对代码库的信任。
Python 绑定测试覆盖薄、缺少真实 C API 行为测试目录 bindings/python/tests/ 下 11 个测试文件,但多数是配置/枚举/加载类测试(test_config_validation.py、test_enum_mapping.py、test_library_loading.py、test_capi_layout.py),test_engine_lifecycle.py、test_server.py、test_managed_profiles.py 也偏 smoke;test_optional_real_smoke.py、test_optional_real_server_smoke.py 明确标注 optional 且需要真实模型。bindings/python/src/edge_dit/engine.py、_capi.py、config.py 下的参数校验、错误路径、profile 切换几乎没有被单测覆盖。Python 绑定是外部用户入口,测试不依赖 GPU;你可以用 mock lib 的方式在 Apple Silicon 上跑,把 config validation、enum mapping、engine lifecycle 的边界全部测一遍,贡献几乎零风险。
benchmark 框架缺少 CPU / Apple Silicon runner 与可重复基线benchmark/engine/runners/ 下有 edge_dit.py、diffusers.py、stable_diffusion_cpp.py、base.py,benchmark/engine/measurement/ 下有 environment.py、gpu_monitor.py、process_monitor.py、timer.py;benchmark/run.py 和 benchmark/scripts/ 围绕 GPU 设计,gpu_monitor.py 明显依赖 NVIDIA;benchmark/CAPABILITIES.md、benchmark/README.md 没有提到 CPU 基线或 Apple Silicon。你有性能工程背景,可以在 benchmark 框架里补一个 cpu measurement profile 和 apple_silicon environment detector,让团队在 CPU 路径回归上有可重复数字;这是纯 Python / 配置层面工作,不需要 GPU。
模型转换 / 量化工具链(ed-convert、imatrix)缺少端到端测试与错误路径文档src/utils/model_io/ 下有 convert.cpp、gguf_io.cpp、safetensors_io.cpp、pickle_io.cpp、torch_zip_io.cpp、torch_legacy_io.cpp,tools/imatrix/ 下有 calibrate.py、ggml_quant.py;docs/optimization/model-representation-and-precision.md 描述了功能,但没有端到端测试覆盖 safetensors→GGUF、pickle→GGUF、imatrix 校准的失败场景;examples/cli/convert_main.cpp 的错误路径也缺少回归测试。这是纯 CPU 可跑的工具链,你有 PyTorch/量化经验,能构造小模型(甚至随机 tensor)跑 convert + imatrix 并验证数值;补测试与文档既安全又能直接提升工具链可靠性。
Metal 后端仍处于实验状态且缺少系统验证README 表格里 Metal 标 Experimental;scripts/build_metal.sh 存在但 src/core/runtime/model_runtime.cpp 中 device_name_matches() 对 Metal 的匹配逻辑(contains(name, "metal") || contains(name, "mtl"))和 ED_GGML_METAL 选项鲜有证据表明被系统验证;CMakeLists.txt 里 ED_GGML_METAL 默认 OFF。你手边就是 Apple Silicon MacBook Air,这是项目里唯一能系统性帮你验证 Metal 路径的人;从 build_metal.sh 跑起,记录哪些模型/算子在 Metal 上通不通,就是高价值贡献。
分布式并行路径(NCCL/MPI/SP/CP)几乎没有 CPU 验证src/core/parallel/ 下有 cfg_parallel.cpp、sp_parallel.cpp、parallel_context.cpp、backends/nccl/nccl_process_group.cpp、backends/cpu/cpu_process_group.cpp、backends/cpu/file_store.cpp;CMakeLists.txt 里 ED_ENABLE_PARALLEL、ED_ENABLE_NCCL、ED_ENABLE_MPI 都默认 OFF;src/core/parallel/backends/cpu/ 的 cpu_process_group.cpp 与 file_store.cpp 是纯 CPU 实现但缺少测试。CPU process group 和 file_store 是纯 CPU 可测的分布式原语;你有分布式训练经验,可以补单测 + 文档,帮团队在没 GPU 的 CI 上也能回归并行路径。
Issue 模板与 PR 模板存在但缺少标签/triage 流程与 good first issue 池.github/ISSUE_TEMPLATE 存在、.github/pull_request_template.md 存在,但 community 字段返回空数组,仓库 releases 为空,没有可见的 good first issue 标签或 triage 流程文档;CONTRIBUTING.md 只说“keep changes focused”,没说明如何认领任务。作为新人,你可以从整理标签、补 CONTRIBUTING.md 的认领流程、关闭/合并重复 issue 入手;这是纯 GitHub 操作,不需要 GPU,也能让你快速进入维护者视野。
docs 与 README 之间存在信息漂移,缺少自动化校验docs/models.md、docs/cli.md、docs/api.md、docs/build.md、docs/development.md 与 README 的 Features/Supported Models/Backend Support 表格并列;最近提交里出现 docs(models): clarify supported pipelines and precision workflows、docs(cli): document conversion, sampling, and server workflows、docs(bindings): add Python and web console usage guides,说明文档仍在快速变化;没有证据表明有 CI 校验 README 与 docs 的一致性。你可以写一个轻量脚本(Python)在 CI 里校验 README 的模型支持表与 docs/models.md 一致、CLI flags 与 docs/cli.md 一致;这是纯文本/脚本工作,无 GPU 依赖。

第 1–30 天:看懂并露面

第 31–60 天:稳定产出

第 61–90 天:接管一块

第一批 PR

题目范围为什么安全
docs: align README supported models table with docs/models.md and add CI check在 .github/workflows/ 下加一个轻量 Python 脚本,校验 README 的模型支持表与 docs/models.md 一致;同步修正 README 与 docs 之间已发现的漂移纯文本/脚本工作,不碰任何 C++ 运行路径;失败只影响 CI 检查,不影响用户;能快速建立对文档体系的信任
test(python): add config validation and error path tests for edge_dit.config and engine在 bindings/python/tests/ 下新增 test_config_error_paths.py、test_engine_error_paths.py,覆盖 config.py 的非法参数、缺失必填项、engine.py 的重复 init/shutdown 等边界只增加测试,不改库代码;在 Apple Silicon 上即可跑;即使测试写错也只会本地失败,不会影响其他用户
test(model_io): add negative-path tests for ed-convert / safetensors reader在 src/utils/model_io/ 或 tools/imatrix/ 下补测试,构造损坏的 safetensors、缺失 key、shape 不匹配的输入,验证 convert.cpp 的错误处理路径只测失败场景,不改成功路径逻辑;纯 CPU 可跑;能直接提升工具链可靠性
benchmark: add Apple Silicon environment detection and CPU measurement profile在 benchmark/engine/measurement/environment.py 里补 is_apple_silicon(),在 benchmark/engine/runners/ 里补 cpu_profile.py,输出可重复的 CPU 基线只新增 profile,不改现有 runner;默认不启用,不影响现有 benchmark;纯 Python 工作
docs(contributing): add task-claim workflow and good-first-issue labeling guide在 CONTRIBUTING.md 里补「如何认领任务」「如何标记 good first issue」「triage 流程」章节;在 .github/ISSUE_TEMPLATE 里补一个 question template纯文档工作,不涉及代码;能降低后续新人进入门槛,维护者容易接受

怎么知道自己站住了

风险与对策
  • Apple Silicon 上 CPU 路径极慢,跑完整模型推理不现实:只跑小模型(随机 tensor 构造的 tiny model)或单组件(tokenizer、convert、config validation),避免全模型推理;用 ED_BACKEND=cpu 限制在 CPU 路径
  • Metal 后端实验性强,可能频繁 break:把 Metal 验证做成 nightly 或手动触发,不阻塞 main CI;每次验证只记录 pass/fail,不追求修复所有问题
  • 项目处于 alpha,API/ABI 不稳定,测试容易因接口变化而失效:
  • 维护者响应慢或社区冷清,贡献难以被 review:从文档/测试这类低风险 PR 入手,降低 review 门槛;在 PR 里附上详细上下文(代码路径、截图、本地结果),减少维护者理解成本;同时在 discussions 主动露面
  • CPU 路径与 CUDA 路径行为不一致,测试暴露 bug 但你不方便修:先记录 bug 并开 issue,附上最小复现步骤;不要自己碰 CUDA 代码;等维护者或社区确认后再决定是否深入
  • benchmark 框架依赖 NVIDIA 工具(gpu_monitor.py),Apple Silicon 上跑不起来:只补 environment detection 和 cpu_profile,不碰现有 GPU runner;在 PR 里明确标注新 profile 只在 CPU/Apple Silicon 上启用
  • 分布式并行路径(NCCL/MPI)在 Mac 上完全不可用:只测 src/core/parallel/backends/cpu/ 的 cpu_process_group.cpp 与 file_store.cpp,不碰 NCCL/MPI;在文档里标注 CPU process group 的适用范围
  • 项目可能长期没有正式 release,贡献难以被外部引用:把贡献聚焦在测试、文档、工具链这类「即使没有 release 也有价值」的工作;在个人博客或 GitHub profile 记录贡献路径,建立个人品牌

六、怎么介入这个项目

建议顺序

成为长期维护者的路径
  • README.md
  • CONTRIBUTING.md
  • docs/development.md
  • .github/pull_request_template.md

七、任务卡

任务 1优先 · medium · Mac · 3-4 个晚上

proposal: 为 LTX-2.3 补 CPU 路径回归测试与文档对齐(基于 #82 上线后)

无人认领0 条评论enhancement更新 2026-08-20

用到的专长:DiT pipeline 测试与文档维护。

目标:在 LTX-2.3 上线后,补 CPU 路径回归测试(至少覆盖 pipeline 初始化、权重加载、错误路径),并同步更新 README 与 docs/models.md。

为什么值得长期做:LTX-2.3 是最近提交热点(feat(ltx): add LTX-2.3 video and audio pipeline),但 README 与 docs/models.md 尚未更新,且缺少 CPU 路径回归测试;这是维护者当前最关心的新功能,补测试与文档对齐能直接建立信任。

怎么介入:Issue #82 是 LTX2.3 feature 请求,但当前已有提交(feat(ltx): add LTX-2.3 video and audio pipeline)表明团队正在实现;建议先在 #82 下留言询问是否已合并、是否需要补测试,得到确认后再动。
第一个 PR 的边界:第一个 PR 只包含测试与文档,不改 pipeline 逻辑。
第一步:等待 LTX-2.3 PR 合并后,阅读 src/dit_models/pipelines/ltx2_pipeline.cpp,列出 CPU 路径关键分支。
本机怎么复现 / 验证:在 Mac 上执行 bash ./scripts/build_cpu.sh,然后跑新增的 LTX-2.3 pipeline 测试(如 ./build-cpu/bin/test_ltx2_pipeline,新增)。
认领留言(英文,可直接贴到 Issue)
I see #82 requests LTX support and recent commits show feat(ltx): add LTX-2.3 video and audio pipeline is merged. I'd like to: (1) add CPU-path regression tests for the LTX2 pipeline (init, weight load failures, missing components), (2) update README and docs/models.md to reflect LTX-2.3 support. Should I wait for the feature to stabilize, or is now a good time to add tests? PR in 3-4 days after confirmation.
大致实施方案
  • 在 src/dit_models/pipelines/ 下新增 test_ltx2_pipeline.cpp(或 Python 等价测试),覆盖初始化、权重加载失败、缺少组件等场景。
  • 更新 README.md 的 Supported Models 表,添加 LTX-2.3 行。
  • 更新 docs/models.md,添加 LTX-2.3 的 HuggingFace repo、格式、run command、backend coverage。
  • 本地跑 bash ./scripts/build_cpu.sh && ./build-cpu/bin/ed-cli --help 确认编译通过。
可能涉及的目录或文件
  • src/dit_models/pipelines/
  • README.md
  • docs/models.md
验收方式
  • 新增 test_ltx2_pipeline.cpp 或 Python 等价测试。
  • README 与 docs/models.md 同步更新。
开工前问题与风险

向维护者确认

  • LTX-2.3 是否已完全合并?还是需要等维护者确认?
  • CPU 路径测试是否需要真实模型权重?还是可以用 mock?

风险

  • LTX-2.3 可能仍在活跃开发中,测试可能频繁失效。