netrans/test
gwg_xujiao 9c56c77b7c docs: fix broken links and API references 2026-07-20 19:06:01 +08:00
..
netrans_api refactor: rename preprocessing scale parameter to std 2026-07-20 18:19:32 +08:00
netrans_cli refactor: rename preprocessing scale parameter to std 2026-07-20 18:19:32 +08:00
regression refactor: rename preprocessing scale parameter to std 2026-07-20 18:19:32 +08:00
system_test docs: fix broken links and API references 2026-07-20 19:06:01 +08:00
README.md refactor: rename preprocessing scale parameter to std 2026-07-20 18:19:32 +08:00
conftest.py test: 补交测试目录重组后遗漏的 unit/ integration_test/ regression/ scripts/ 2026-06-22 15:23:51 +08:00
quick_test.sh test: 补交测试目录重组后遗漏的 unit/ integration_test/ regression/ scripts/ 2026-06-22 15:23:51 +08:00
run_tests.py test: 重组目录为 netrans_api/,清理历史遗留脚本,整理系统测试文档 2026-06-22 19:51:28 +08:00
run_tests.sh test: 补交测试目录重组后遗漏的 unit/ integration_test/ regression/ scripts/ 2026-06-22 15:23:51 +08:00

README.md

Netrans 测试

测试环境: Ubuntu 20.04+, Python 3.10 (conda netrans)


目录结构

test/
├── conftest.py
├── run_tests.py                     # 主测试运行器
├── run_tests.sh / quick_test.sh     # 快捷脚本
├── data/                            # 共享测试数据
│   ├── models/
│   └── datasets/
├── netrans_api/                     # Python API 测试
│   ├── unit/                        # 单元测试
│   │   ├── test_base.py             # 公共基类
│   │   ├── test_core_functions.py   # 核心流程: load/quantize/export
│   │   ├── test_error_handling.py   # 错误处理、边界条件、并发
│   │   ├── test_all_quantization_types.py  # ~30 种量化类型逐类测试
│   │   ├── test_new_features_v6334.py   # v6.33.4 新特性
│   │   ├── test_multicore.py        # 多核集成 + CLI
│   │   ├── test_multicore_env.py    # 多核环境变量纯单测
│   │   ├── test_measure.py          # measure 计算量统计
│   │   ├── test_check_opset.py      # ONNX opset 检查
│   │   ├── test_defensive.py        # 防御性编程
│   │   ├── test_quantize_types.py   # QuantizerType 枚举
│   │   ├── run_quantization_tests.py  # 全量化类型测试运行器
│   │   └── test_performance.py      # 性能基准
│   └── integration/                 # 集成测试
│       ├── test_onnx_conversion.py
│       ├── test_caffe_conversion.py
│       ├── test_darknet_conversion.py
│       ├── test_tensorflow_conversion.py
│       ├── test_pytorch_conversion.py
│       ├── test_quantize_hybrid.py
│       ├── test_integration.py      # 跨框架全流程、兼容性矩阵
│       ├── test_e2e_baseline.py     # 端到端基线 + 可复现性
│       ├── integration_test.sh      # 集成测试脚本
│       ├── quantize_hybrid/         # 混合量化测试
│       └── (NBG vs acuity 比对测试)
├── regression/                       # 回归测试(按版本+日期命名)
└── netrans_cli/                     # CLI 示例测试

运行测试

# 基础测试(核心功能)
python test/run_tests.py --level basic

# 完整测试
python test/run_tests.py --level all

# 全量化类型测试
python test/netrans_api/unit/run_quantization_tests.py

# 单个测试文件
python -m pytest test/netrans_api/unit/test_defensive.py -v

# 集成测试
bash test/netrans_api/integration/integration_test.sh

# Makefile 入口
make test-unit      # 单元测试
make test-int       # 集成测试
make test           # 全部

覆盖场景

模型导入

  • ONNX / TensorFlow / Darknet / Caffe 四框架加载
  • mean/std 单值广播、列表广播、默认值
  • channel_mean_value.txt 生成与格式验证
  • 路径不存在、空目录、模型文件缺失

量化

  • 常用类型asymu8, symi8, symi16, fp16, dfpi16
  • 全部约 30 种量化类型含混合精度、float8 变体)
  • KL散度(algorithm=1)、移动平均(2)、auto(3) 三种算法
  • 无效量化类型拒绝、产物完整性验证

混合精度量化

  • 基础 hybrid + dfpi16platform=78e/8016
  • dump / inference / export 全流程
  • cust_qnt_layers 配置校验

前后处理

  • FP16 支持 preprocess / postprocess
  • symi16 预处理限制(抛 ValueError、dfpi16 替代方案
  • 连续不同量化类型间参数清理
  • dataset 路径 fallback无效/缺失/空文件)

模型导出

  • pnna 平台导出、float32 浮点导出
  • symi16 导出preprocess=False
  • 前后处理集成导出、NBG 产物完整性

调试工具

  • ONNX opset 版本检查(范围 7-17、边界值
  • measure FLOPs / 参数量统计(单元测试 + 集成测试验证真实模型)
  • dump / inference待补充

NBG 一致性验证netrans vs acuityAPI + CLI 双路径)

所有 NBG 比对测试均:

  • 在隔离 subprocess 中各自运行 netrans 和 acuity 原生命令
  • 比较生成的 NBG 文件字节级一致性
  • 同时覆盖 Python API 路径和 CLI 命令路径
测试文件 场景 模型 量化类型
test_nbg_grayscale_vs_acuity 灰度图输入 caffe/lenet float32, asymu8, fp16, symi8
test_nbg_rgb_vs_acuity 三通道输入 onnx/yolov5s float32, asymu8, fp16, symi8
test_nbg_all_qtypes_vs_acuity 全部量化类型 onnx/yolov5s ~22 种QuantizerType.get_options()
test_nbg_prepost_vs_acuity 嵌入前后处理 onnx/yolov5s asymu8, symi8, dfpi16, fp16
test_nbg_platform_vs_acuity pnna vs pnna2 onnx/yolov5s asymu8, symi8, dfpi16, fp16
test_nbg_multicore_vs_acuity 多核 (2core/4core) onnx/yolov5s asymu8, symi8, dfpi16, fp16

错误处理

  • 未 load 直接操作 → RuntimeError
  • 无效路径、损坏模型、mean/std 异常值
  • dataset.txt fallback 机制

防御性编程 (v6.33.5)

  • sys.exit(1) → 异常抛出FileNotFoundError / NetransError
  • _check_file_exists() 文件存在性前置校验
  • YAML 空内容检测
  • get_modelfile_name 确定性优先级 + 多模型检测
  • os.system("mkdir") → os.makedirs(exist_ok=True)

性能

  • 量化时间对比、算法对比、迭代次数影响
  • 压缩比、吞吐量、内存剖析

多核

  • 1core/2core/3core/4core 环境变量设置
  • 无效配置拒绝

待补充

  • dump 功能测试
  • inference 推理验证测试
  • pnna2 多核实际导出测试
  • CLI 端到端测试
  • hybrid 量化 NBG vs acuity 比对
  • pnna2 多核实际导出测试
  • CLI 端到端测试