[IE][VPU]: Config key to disable weights analysis pass (#2714)
authorMonica-elena Burger <monica-elena.burger@intel.com>
Tue, 27 Oct 2020 08:52:18 +0000 (10:52 +0200)
committerGitHub <noreply@github.com>
Tue, 27 Oct 2020 08:52:18 +0000 (11:52 +0300)
* Add config key to disable weights analysis pass in graph transformer

inference-engine/src/vpu/graph_transformer/include/vpu/graph_transformer.hpp
inference-engine/src/vpu/graph_transformer/include/vpu/private_plugin_config.hpp
inference-engine/src/vpu/graph_transformer/src/middleend/pass_manager.cpp
inference-engine/src/vpu/graph_transformer/src/parsed_config.cpp
inference-engine/tests/functional/plugin/myriad/shared_tests_instances/behavior/config.cpp
inference-engine/tests/functional/plugin/myriad/shared_tests_instances/behavior/infer_request_config.cpp

index 96c48f5..40c4b47 100644 (file)
@@ -110,6 +110,7 @@ struct CompilationConfig final {
     bool enableTensorIteratorUnrolling = false;
     bool forcePureTensorIterator = false;
     bool enableMemoryTypesAnnotation = false;
+    bool enableWeightsAnalysis = true;
 
     //
     // Deprecated options
index a9c9dd6..5c35418 100644 (file)
@@ -36,6 +36,13 @@ DECLARE_VPU_CONFIG(MYRIAD_PER_LAYER);
 DECLARE_VPU_CONFIG(MYRIAD_PER_STAGE);
 
 DECLARE_VPU_CONFIG(MYRIAD_ENABLE_MEMORY_TYPES_ANNOTATION);
+
+/**
+ * @brief Used to disable analyzeWeightableLayers pass in cases where
+ * weights scaling leads to poor accuracy. Default = "YES"
+ */
+DECLARE_VPU_CONFIG(MYRIAD_ENABLE_WEIGHTS_ANALYSIS);
+
 //
 // Debug options
 //
index ce0a645..fb29af0 100644 (file)
@@ -131,7 +131,7 @@ PassSet::Ptr PassManager::buildMiddleEnd() {
     // To overcome fp16 limitations
     //
 
-    if (env.config.hwOptimization) {
+    if (env.config.hwOptimization && env.config.enableWeightsAnalysis) {
         ADD_PASS(analyzeWeightableLayers);
         ADD_DUMP_PASS("analyzeWeightableLayers");
     }
index 9f4de30..2c97b3a 100644 (file)
@@ -67,6 +67,7 @@ IE_SUPPRESS_DEPRECATED_START
         ie::MYRIAD_ENABLE_TENSOR_ITERATOR_UNROLLING,
         ie::MYRIAD_FORCE_PURE_TENSOR_ITERATOR,
         ie::MYRIAD_DISABLE_CONVERT_STAGES,
+        ie::MYRIAD_ENABLE_WEIGHTS_ANALYSIS,
 
         //
         // Debug options
@@ -182,6 +183,7 @@ void ParsedConfig::parse(const std::map<std::string, std::string>& config) {
     setOption(_compileConfig.enableTensorIteratorUnrolling,  switches, config, ie::MYRIAD_ENABLE_TENSOR_ITERATOR_UNROLLING);
     setOption(_compileConfig.forcePureTensorIterator,        switches, config, ie::MYRIAD_FORCE_PURE_TENSOR_ITERATOR);
     setOption(_compileConfig.disableConvertStages,           switches, config, ie::MYRIAD_DISABLE_CONVERT_STAGES);
+    setOption(_compileConfig.enableWeightsAnalysis,         switches, config, ie::MYRIAD_ENABLE_WEIGHTS_ANALYSIS);
 
     setOption(_compileConfig.irWithVpuScalesDir,                       config, ie::MYRIAD_IR_WITH_SCALES_DIRECTORY);
     setOption(_compileConfig.noneLayers,                               config, ie::MYRIAD_NONE_LAYERS, parseStringSet);
index 9065562..ef70cc9 100644 (file)
@@ -40,6 +40,9 @@ namespace {
             {{InferenceEngine::MYRIAD_THROUGHPUT_STREAMS, "2"}},
             {{InferenceEngine::MYRIAD_THROUGHPUT_STREAMS, "3"}},
 
+            {{InferenceEngine::MYRIAD_ENABLE_WEIGHTS_ANALYSIS, CONFIG_VALUE(YES)}},
+            {{InferenceEngine::MYRIAD_ENABLE_WEIGHTS_ANALYSIS, CONFIG_VALUE(NO)}},
+
             // Deprecated
             {{VPU_MYRIAD_CONFIG_KEY(FORCE_RESET), CONFIG_VALUE(YES)}},
             {{VPU_MYRIAD_CONFIG_KEY(FORCE_RESET), CONFIG_VALUE(NO)}},
@@ -102,6 +105,9 @@ namespace {
             {{InferenceEngine::MYRIAD_THROUGHPUT_STREAMS, "Two"}},
             {{InferenceEngine::MYRIAD_THROUGHPUT_STREAMS, "SINGLE"}},
 
+            {{InferenceEngine::MYRIAD_ENABLE_WEIGHTS_ANALYSIS, "ON"}},
+            {{InferenceEngine::MYRIAD_ENABLE_WEIGHTS_ANALYSIS, "OFF"}},
+
             // Deprecated
             {{VPU_MYRIAD_CONFIG_KEY(PROTOCOL), "BLUETOOTH"}},
             {{VPU_MYRIAD_CONFIG_KEY(PROTOCOL), "LAN"}},
index 589fb9e..036e52c 100644 (file)
@@ -47,6 +47,8 @@ namespace {
             {{InferenceEngine::MYRIAD_THROUGHPUT_STREAMS, "2"}},
             {{InferenceEngine::MYRIAD_THROUGHPUT_STREAMS, "3"}},
 
+            {{InferenceEngine::MYRIAD_ENABLE_WEIGHTS_ANALYSIS, CONFIG_VALUE(YES)}},
+            {{InferenceEngine::MYRIAD_ENABLE_WEIGHTS_ANALYSIS, CONFIG_VALUE(NO)}},
 
             // Deprecated
             {{VPU_MYRIAD_CONFIG_KEY(FORCE_RESET), CONFIG_VALUE(YES)}},