ONNX后端测试¶
什么是ONNX后端测试¶
ONNX后端测试是一个测试套件,每个ONNX后端都应该运行它以验证其是否满足ONNX的标准。它既可以作为后端实现的验证工具,也是定义每个算子预期行为的两种方式之一(另一种方式是将其添加到文档中)。
此套件中有两种类型的测试 - 节点测试和模型测试
节点测试验证后端是否正在执行正确的计算,并具有每个单独算子的各种属性的预期行为。在每个测试用例中,后端将获得一个具有某些输入的节点,并且返回的输出将与预期输出进行比较。
模型测试在模型级别验证后端。测试用例类似于节点测试的测试用例,但不是节点,后端将获得一个ONNX模型。
贡献¶
由于ONNX旨在成为深度学习模型格式的规范,因此确保每个ONNX算子的定义没有歧义非常重要;添加更多测试用例是执行此操作的唯一方法。
节点测试作为Python/Numpy代码创建于onnx/backend/test/case/node,然后导出到protobuf文件到onnx/backend/test/data/node作为真相来源,通过调用shell命令backend-test-tools generate-data
。每个算子的测试用例都位于一个独立的文件中,例如,对于算子Add,其测试用例位于add.py,并且代码中的每个expect(...)
语句都对应一个测试用例。所有export.*
函数的源代码也将作为示例代码片段嵌入到算子文档页面中。您既为测试也为文档做出了贡献!
对于模型测试,由于每个模型protobuf文件都可能很大,因此我们不会将文件直接放在存储库中。相反,我们将其上传到云端,并在运行测试时按需下载它们。每个测试用例都包含一个模型定义protobuf文件和几对输入和输出文件。添加新的测试用例需要管理员进行一些手动操作(例如将文件上传到云端),因此,如果您有要贡献的ONNX模型,请联系我们。