为 FlowMatchEuler sampler 添加与 diffusers 的数值对齐测试(CPU)
Issue #199 · Pytorch version problem ↗
无人认领6 条评论更新 2026-02-03
用到的专长:利用算子数值正确性验证的专长,在 CPU 上建立 sampler 的参考实现对照。
目标:在 tests/test_algorithm/test_sampler_numerical.py(新增)中实现 FlowMatchEuler sampler 与 diffusers 0.31.0 的逐步数值对比,确保 MSE < 1e-5,纯 CPU 运行。
为什么值得长期做:README 明示 sampler/scheduler 是刻意重新实现的核心组件,缺少与参考实现的数值对齐验证;补上这条防线是长期维护 algorithm 层的前提,也是后续性能优化的可信基线。
第一个 PR 的边界:仅新增 tests/test_algorithm/test_sampler_numerical.py 与可能的 conftest 调整,不修改任何 sampler 实现代码。
pip install -e '.[dev]' 安装,阅读 diffsynth_engine/algorithm/flow_match/flow_match_euler.py 与 diffusers 0.31.0 的 FlowMatchEulerDiscreteScheduler.step() 实现,梳理输入参数映射。pip install -e '.[dev]' 后运行 pytest tests/test_algorithm/test_sampler.py -v 确认现有测试结构,然后用 python -c "from diffusers import FlowMatchEulerDiscreteScheduler; print(diffusers.__version__)" 确认参考实现可用。认领留言(英文,可直接贴到 Issue)
I'd like to add numerical alignment tests for the FlowMatchEuler sampler against diffusers 0.31.0. The plan: create tests/test_algorithm/test_sampler_numerical.py that runs both implementations step-by-step on CPU and verifies MSE < 1e-5. This would catch regressions when updating torch/diffusers versions (related to the compatibility issues in this thread). Before I start: should I pin diffusers==0.31.0 in dev dependencies, and would you prefer a single PR covering all samplers or start with just FlowMatchEuler? ETA: 2 evenings.
大致实施方案
可能涉及的目录或文件
- diffsynth_engine/algorithm/flow_match/flow_match_euler.py
- diffsynth_engine/algorithm/noise_scheduler/
- tests/test_algorithm/test_sampler.py(参考现有测试结构)
- 新增 tests/test_algorithm/test_sampler_numerical.py
验收方式
pytest tests/test_algorithm/test_sampler_numerical.py -v在 Mac CPU 上通过- 测试应覆盖多组 timestep 与 sigma 组合,报告 MSE
- CI 中新增的测试可在无 GPU 环境下运行
开工前问题与风险
向维护者确认
- 维护者希望对齐的 diffusers 版本是否固定为 0.31.0(当前 dev dependencies 中已有)?
- 是否接受在 CI 中新增 diffusers 作为测试依赖?
- 对齐测试应覆盖哪些 sampler(仅 FlowMatchEuler 还是扩展到 DPMSolver/DEIS)?
风险
- diffusers 版本升级可能导致数值漂移,需在测试中固定版本或设置合理容差
- FlowMatchEuler 实现细节(如 scaling 方式)可能与 diffusers 存在设计差异,需提前确认