测试
MindIE SD 的测试套件支持在有或无昇腾 NPU 硬件的环境下运行。无 NPU 硬件时也可执行 CPU 兼容的测试。
测试环境说明
测试分为两类:
| 类型 | 说明 | 是否需要 NPU |
|---|---|---|
| CPU 兼容测试 | 配置解析、工具函数、量化参数校验、编译逻辑等 | 否 |
| NPU 依赖测试 | 自定义算子精度、Flash Attention、模型张量运算等 | 是 |
测试入口
入口一:CPU 友好单元测试(推荐无 NPU 用户使用)
run_UT_test.sh 始终以 CPU 模式运行,适合无 NPU 硬件的开发环境。
python -m pip install -r requirements.txt
python -m pip install -r requirements-test.txt
bash tests/run_UT_test.sh
默认生成的产物位于 tests/UT/ 目录,包括:
run_UT.logfinal.xmlcoverage.xmlhtmlcov/
仓库中的 tests/scripts/check_coverage.py 用于在 CI 中校验新增 Python 文件的覆盖率门禁。
入口二:全量测试(支持三种模式)
run_test.sh 通过参数控制测试范围,支持以下三种模式:
1. 全量测试(默认)
执行所有 CPU 兼容测试和 NPU 依赖测试:
cd tests/
bash run_test.sh --all
不传参数时默认执行全量测试:
cd tests/
bash run_test.sh
2. 仅执行 CPU 兼容测试(无需 NPU 硬件)
cd tests/
bash run_test.sh --cpu_only
3. 仅执行 NPU 依赖测试(需要 NPU 硬件)
cd tests/
bash run_test.sh --npu_only
LA 单算子精度测试
本章节介绍 MindIE SD 仓中 LA 算子的精度自测方式。
-
如需切换已安装版本,可先卸载当前 MindIE SD:
python -m pip uninstall mindiesd -
修改
tests/plugin/la_acc_prof.py文件,选择 Option 1 或 Option 2,通过加载test_la.csv或enumerated_cases.csv文件,测试 LA 算子在所设置 shape 下的精度。./tests/plugin/test_la.csv:设置了常用 SD 模型的输入 shape。enumerated_cases.csv:枚举的各种 shape。
-
完成修改后执行以下命令:
cd tests python plugin/la_acc_prof.py
运行成功后会在仓库目录下生成结果文件,记录 LA 和 FAScore 的相似度,可据此查看算子在目标 shape 下的精度表现。
测试编写规范
测试组织原则
tests/ 下的测试目录与 mindiesd/ 模块层次对应:
| 源码模块 | 对应测试目录 |
|---|---|
mindiesd/layers/ |
tests/layers/ |
mindiesd/cache/ |
tests/cache/ |
mindiesd/compilation/ |
tests/compilation/ |
mindiesd/quantization/ |
tests/quantization/ |
新增代码时,检查对应测试目录是否已有测试文件,并在其中追加或新建测试覆盖新功能。
测试性能规范
- 单个测试文件运行超过 500 秒时,应拆分为多个文件
- 优先复用已有的设备/模型加载,减少重复初始化开销
- CPU 友好的测试应优先使用
bash tests/run_UT_test.sh验证