diff --git a/csharp/test/Microsoft.ML.OnnxRuntime.EndToEndTests/runtest-docker.sh b/csharp/test/Microsoft.ML.OnnxRuntime.EndToEndTests/runtest-docker.sh index c37764b1ec..9454ffbeaf 100755 --- a/csharp/test/Microsoft.ML.OnnxRuntime.EndToEndTests/runtest-docker.sh +++ b/csharp/test/Microsoft.ML.OnnxRuntime.EndToEndTests/runtest-docker.sh @@ -32,6 +32,7 @@ docker run -h $HOSTNAME \ -e "OnnxRuntimeBuildDirectory=/home/onnxruntimedev" \ -e "IsReleaseBuild=$IsReleaseBuild" \ -e "PackageName=$PackageName" \ + -e "DisableContribOps=$DisableContribOps" \ "onnxruntime-$IMAGE" \ /bin/bash /onnxruntime_src/csharp/test/Microsoft.ML.OnnxRuntime.EndToEndTests/runtest.sh \ /home/onnxruntimedev/$NUGET_REPO_DIRNAME /onnxruntime_src /home/onnxruntimedev $TestDataUrl $TestDataChecksum & diff --git a/csharp/test/Microsoft.ML.OnnxRuntime.Tests/InferenceTest.cs b/csharp/test/Microsoft.ML.OnnxRuntime.Tests/InferenceTest.cs index 7299587abc..56ba8c78dc 100644 --- a/csharp/test/Microsoft.ML.OnnxRuntime.Tests/InferenceTest.cs +++ b/csharp/test/Microsoft.ML.OnnxRuntime.Tests/InferenceTest.cs @@ -212,11 +212,17 @@ namespace Microsoft.ML.OnnxRuntime.Tests private void TestPreTrainedModelsOpset7And8() { // 16-bit float not supported type in C#. - var skipModels = new[] { + var skipModels = new List() { "fp16_inception_v1", "fp16_shufflenet", "fp16_tiny_yolov2" }; + var disableContribOpsEnvVar = Environment.GetEnvironmentVariable("DisableContribOps"); + var isContribOpsDisabled = (disableContribOpsEnvVar != null) ? disableContribOpsEnvVar.Equals("ON") : false; + if (isContribOpsDisabled) { + skipModels.Add("test_tiny_yolov2"); + } + var opsets = new[] { "opset7", "opset8" }; var modelsDir = GetTestModelsDir(); foreach (var opset in opsets) @@ -225,7 +231,7 @@ namespace Microsoft.ML.OnnxRuntime.Tests foreach (var modelDir in modelRoot.EnumerateDirectories()) { String onnxModelFileName = null; - + if (skipModels.Contains(modelDir.Name)) continue; @@ -689,7 +695,7 @@ namespace Microsoft.ML.OnnxRuntime.Tests var x = GetProcAddress(hModule, ep); Assert.False(x == UIntPtr.Zero, $"Entrypoint {ep} not found in module {module}"); } - } + } static string GetTestModelsDir() { diff --git a/onnxruntime/core/optimizer/graph_transformer_utils.cc b/onnxruntime/core/optimizer/graph_transformer_utils.cc index 6ddbdde47d..1b46aea1da 100644 --- a/onnxruntime/core/optimizer/graph_transformer_utils.cc +++ b/onnxruntime/core/optimizer/graph_transformer_utils.cc @@ -88,9 +88,11 @@ std::vector> GenerateTransformers(TransformerL rule_transformer = GenerateRuleBasedGraphTransformer(level, transformers_and_rules_to_enable, l2_execution_providers); // create standalone transformers +#ifndef DISABLE_CONTRIB_OPS transformers.emplace_back(std::make_unique(l2_execution_providers)); transformers.emplace_back(std::make_unique(l2_execution_providers)); transformers.emplace_back(std::make_unique(l2_execution_providers)); +#endif transformers.emplace_back(std::make_unique()); transformers.emplace_back(std::make_unique()); transformers.emplace_back(std::make_unique()); diff --git a/onnxruntime/test/ir/onnx_model_test.cc b/onnxruntime/test/ir/onnx_model_test.cc index 4e832d6628..f989f46771 100644 --- a/onnxruntime/test/ir/onnx_model_test.cc +++ b/onnxruntime/test/ir/onnx_model_test.cc @@ -141,9 +141,15 @@ TEST_P(ONNXModelsTest, LoadFromProtobuf) { TestResolve(model->MainGraph()); } +#ifndef DISABLE_CONTRIB_OPS INSTANTIATE_TEST_CASE_P(ONNXModelsTests, ONNXModelsTest, ::testing::Values("bvlc_alexnet", "bvlc_googlenet", "bvlc_reference_caffenet", "bvlc_reference_rcnn_ilsvrc13", "densenet121", "emotion_ferplus", "inception_v1", "inception_v2", "mnist", "resnet50", "shufflenet", "squeezenet", "tiny_yolov2", "vgg19", "zfnet512")); +#else +INSTANTIATE_TEST_CASE_P(ONNXModelsTests, + ONNXModelsTest, + ::testing::Values("bvlc_alexnet", "bvlc_googlenet", "bvlc_reference_caffenet", "bvlc_reference_rcnn_ilsvrc13", "densenet121", "emotion_ferplus", "inception_v1", "inception_v2", "mnist", "resnet50", "shufflenet", "squeezenet", "vgg19", "zfnet512")); +#endif #endif diff --git a/onnxruntime/test/onnx/main.cc b/onnxruntime/test/onnx/main.cc index 250c72318c..dbf62cd127 100644 --- a/onnxruntime/test/onnx/main.cc +++ b/onnxruntime/test/onnx/main.cc @@ -368,6 +368,43 @@ int real_main(int argc, char* argv[], OrtEnv** p_env) { broken_tests["nonzero_example"] = "failed: type mismatch"; #endif +#ifdef DISABLE_CONTRIB_OPS + broken_tests["coreml_SqueezeNet_ImageNet"] = "This model uses contrib ops."; + broken_tests["keras2coreml_Permute_ImageNet"] = "This model uses contrib ops."; + broken_tests["keras2coreml_ReLU_ImageNet"] = "This model uses contrib ops."; + broken_tests["keras2coreml_Padding-Upsampling-Normalizer_ImageNet"] = "This model uses contrib ops."; + broken_tests["tiny_yolov2"] = "This model uses contrib ops."; + broken_tests["keras2coreml_Pooling_ImageNet"] = "This model uses contrib ops."; + broken_tests["keras2coreml_Padding_ImageNet"] = "This model uses contrib ops."; + broken_tests["keras2coreml_Normalizer_ImageNet"] = "This model uses contrib ops."; + broken_tests["keras2coreml_linear_sklearn_load_breast_cancer"] = "This model uses contrib ops."; + broken_tests["keras2coreml_linear_ImageNet_small"] = "This model uses contrib ops."; + broken_tests["keras2coreml_linear_ImageNet_large"] = "This model uses contrib ops."; + broken_tests["keras2coreml_linear_ImageNet"] = "This model uses contrib ops."; + broken_tests["keras2coreml_leakyrelu_ImageNet"] = "This model uses contrib ops."; + broken_tests["keras2coreml_hard_sigmoid_ImageNet"] = "This model uses contrib ops."; + broken_tests["keras2coreml_elu_ImageNet"] = "This model uses contrib ops."; + broken_tests["keras2coreml_Dense_ImageNet"] = "This model uses contrib ops."; + broken_tests["keras2coreml_Conv2D_ImageNet"] = "This model uses contrib ops."; + broken_tests["coreml_VGG16_ImageNet"] = "This model uses contrib ops."; + broken_tests["coreml_Resnet50_ImageNet"] = "This model uses contrib ops."; + broken_tests["coreml_Inceptionv3_ImageNet"] = "This model uses contrib ops."; + broken_tests["coreml_FNS-Candy_ImageNet"] = "This model uses contrib ops."; + broken_tests["coreml_AgeNet_ImageNet"] = "This model uses contrib ops."; + broken_tests["keras2coreml_thresholdedrelu_ImageNet_large"] = "This model uses contrib ops."; + broken_tests["keras2coreml_thresholdedrelu_ImageNet_small"] = "This model uses contrib ops."; + broken_tests["keras2coreml_thresholdedrelu_sklearn_load_breast_cancer"] = "This model uses contrib ops."; + broken_tests["thresholdedrelu"] = "This model uses contrib ops."; + broken_tests["thresholdedrelu_default"] = "This model uses contrib ops."; + broken_tests["dynamic_slice_default_axes"] = "This model uses contrib ops."; + broken_tests["thresholdedrelu_example"] = "This model uses contrib ops."; + broken_tests["dynamic_slice_neg failed"] = "This model uses contrib ops."; + broken_tests["dynamic_slice_start_out_of_bounds"] = "This model uses contrib ops."; + broken_tests["dynamic_slice"] = "This model uses contrib ops."; + broken_tests["dynamic_slice_end_out_of_bounds"] = "This model uses contrib ops."; + broken_tests["dynamic_slice_neg"] = "This model uses contrib ops."; +#endif + int result = 0; for (const std::string& s : stat.GetFailedTest()) { if (broken_tests.find(s) == broken_tests.end()) {