diff options
author | Håvard Pettersen <havardpe@oath.com> | 2021-10-13 14:00:29 +0000 |
---|---|---|
committer | Håvard Pettersen <havardpe@oath.com> | 2021-10-13 14:04:02 +0000 |
commit | a915ba29f64c78524d407f32a3bce612f2257a2c (patch) | |
tree | 1aeacdbf0c1bb0263d76a6454086cbae2e1cc144 /searchlib | |
parent | 072c2f6cc908bbdcb6648d8cffdfa016894bb62c (diff) |
report onnx model evaluation as an issue
Diffstat (limited to 'searchlib')
-rw-r--r-- | searchlib/src/tests/features/onnx_feature/onnx_feature_test.cpp | 14 | ||||
-rw-r--r-- | searchlib/src/vespa/searchlib/features/onnx_feature.cpp | 4 |
2 files changed, 17 insertions, 1 deletions
diff --git a/searchlib/src/tests/features/onnx_feature/onnx_feature_test.cpp b/searchlib/src/tests/features/onnx_feature/onnx_feature_test.cpp index f2fd9ad52d6..348331665a0 100644 --- a/searchlib/src/tests/features/onnx_feature/onnx_feature_test.cpp +++ b/searchlib/src/tests/features/onnx_feature/onnx_feature_test.cpp @@ -2,6 +2,7 @@ #include <vespa/vespalib/stllike/string.h> #include <vespa/vespalib/util/stringfmt.h> +#include <vespa/vespalib/util/issue.h> #include <vespa/searchlib/features/rankingexpressionfeature.h> #include <vespa/searchlib/features/onnx_feature.h> #include <vespa/searchlib/fef/blueprintfactory.h> @@ -18,6 +19,7 @@ using namespace search::fef::test; using namespace search::features; using vespalib::make_string_short::fmt; using vespalib::eval::TensorSpec; +using vespalib::Issue; std::string get_source_dir() { const char *dir = getenv("SOURCE_DIRECTORY"); @@ -153,13 +155,25 @@ TEST_F(OnnxFeatureTest, fragile_model_can_be_evaluated) { EXPECT_EQ(get(3), TensorSpec::from_expr("tensor<float>(d0[2]):[6,15]")); } +struct MyIssues : Issue::Handler { + std::vector<vespalib::string> list; + Issue::Binding capture; + MyIssues() : list(), capture(Issue::listen(*this)) {} + void handle(const Issue &issue) override { list.push_back(issue.message()); } +}; + TEST_F(OnnxFeatureTest, broken_model_evaluates_to_all_zeros) { add_expr("in1", "tensor<float>(x[2]):[docid,5]"); add_expr("in2", "tensor<float>(x[3]):[docid,10,31515]"); add_onnx(OnnxModel("fragile", fragile_model).dry_run_on_setup(false)); EXPECT_TRUE(try_compile(onnx_feature("fragile"))); + MyIssues my_issues; + EXPECT_EQ(my_issues.list.size(), 0); EXPECT_EQ(get(1), TensorSpec::from_expr("tensor<float>(d0[2]):[0,0]")); + EXPECT_EQ(my_issues.list.size(), 1); EXPECT_EQ(get(3), TensorSpec::from_expr("tensor<float>(d0[2]):[0,0]")); + ASSERT_EQ(my_issues.list.size(), 2); + EXPECT_EQ(my_issues.list[0], my_issues.list[1]); } TEST_F(OnnxFeatureTest, broken_model_fails_with_dry_run) { diff --git a/searchlib/src/vespa/searchlib/features/onnx_feature.cpp b/searchlib/src/vespa/searchlib/features/onnx_feature.cpp index 291e3daf602..dd0215e1d53 100644 --- a/searchlib/src/vespa/searchlib/features/onnx_feature.cpp +++ b/searchlib/src/vespa/searchlib/features/onnx_feature.cpp @@ -10,6 +10,7 @@ #include <vespa/eval/eval/value_codec.h> #include <vespa/vespalib/util/stringfmt.h> #include <vespa/vespalib/util/stash.h> +#include <vespa/vespalib/util/issue.h> #include <vespa/log/log.h> LOG_SETUP(".features.onnx_feature"); @@ -28,6 +29,7 @@ using vespalib::eval::FastValueBuilderFactory; using vespalib::eval::value_from_spec; using vespalib::make_string_short::fmt; using vespalib::eval::Onnx; +using vespalib::Issue; namespace search::features { @@ -92,7 +94,7 @@ public: try { _eval_context.eval(); } catch (const Ort::Exception &ex) { - LOG(warning, "onnx model evaluation failed: %s", ex.what()); + Issue::report("onnx model evaluation failed: %s", ex.what()); _eval_context.clear_results(); } } |