测试

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.log
  • final.xml
  • coverage.xml
  • htmlcov/

仓库中的 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 算子的精度自测方式。

  1. 如需切换已安装版本,可先卸载当前 MindIE SD:

    python -m pip uninstall mindiesd
    
  2. 修改 tests/plugin/la_acc_prof.py 文件,选择 Option 1 或 Option 2,通过加载 test_la.csvenumerated_cases.csv 文件,测试 LA 算子在所设置 shape 下的精度。

    • ./tests/plugin/test_la.csv:设置了常用 SD 模型的输入 shape。
    • enumerated_cases.csv:枚举的各种 shape。
  3. 完成修改后执行以下命令:

    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 验证