summaryrefslogtreecommitdiffstats
path: root/searchlib
diff options
context:
space:
mode:
authorHåvard Pettersen <havardpe@oath.com>2021-10-13 14:00:29 +0000
committerHåvard Pettersen <havardpe@oath.com>2021-10-13 14:04:02 +0000
commita915ba29f64c78524d407f32a3bce612f2257a2c (patch)
tree1aeacdbf0c1bb0263d76a6454086cbae2e1cc144 /searchlib
parent072c2f6cc908bbdcb6648d8cffdfa016894bb62c (diff)
report onnx model evaluation as an issue
Diffstat (limited to 'searchlib')
-rw-r--r--searchlib/src/tests/features/onnx_feature/onnx_feature_test.cpp14
-rw-r--r--searchlib/src/vespa/searchlib/features/onnx_feature.cpp4
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();
}
}