[CANN] Add dump_om_model flag (#20075)

### Description
New flag of `dump_om_model` for **CANN EP**, which defaults to "True".

### Motivation and Context
When building an onnx model with CANN EP, the intermediate **OM(offline
model for Ascend NPU)** is automatically saved. There are some users
don't want to dump OM when resources are limited.
This PR will resovle this situation with `dump_om_model=False`
This commit is contained in:
wangshuai09 2024-04-02 12:35:29 +08:00 committed by GitHub
parent 742d413586
commit 3e2b659fce
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
6 changed files with 12 additions and 1 deletions

View file

@ -16,6 +16,7 @@ struct OrtCANNProviderOptions {
int enable_cann_graph; // Flag indicating if prioritizing the use of
// CANN's graph-running capabilities
int dump_graphs; // Flag indicating if dumping graphs
int dump_om_model; // Flag indicating if dumping om model
std::string precision_mode; // Operator Precision Mode
std::string op_select_impl_mode; // Operator-level model compilation options:
// Mode selection

View file

@ -21,6 +21,7 @@ constexpr const char* kMemLimit = "npu_mem_limit";
constexpr const char* kArenaExtendStrategy = "arena_extend_strategy";
constexpr const char* kEnableCannGraph = "enable_cann_graph";
constexpr const char* kDumpGraphs = "dump_graphs";
constexpr const char* kDumpOmModel = "dump_om_model";
constexpr const char* kPrecisionMode = "precision_mode";
constexpr const char* kOpSelectImplMode = "op_select_impl_mode";
constexpr const char* kOpTypeListForImplMode = "optypelist_for_implmode";
@ -58,6 +59,7 @@ CANNExecutionProviderInfo CANNExecutionProviderInfo::FromProviderOptions(const P
arena_extend_strategy_mapping, info.arena_extend_strategy)
.AddAssignmentToReference(cann::provider_option_names::kEnableCannGraph, info.enable_cann_graph)
.AddAssignmentToReference(cann::provider_option_names::kDumpGraphs, info.dump_graphs)
.AddAssignmentToReference(cann::provider_option_names::kDumpOmModel, info.dump_om_model)
.AddAssignmentToReference(cann::provider_option_names::kPrecisionMode, info.precision_mode)
.AddAssignmentToReference(cann::provider_option_names::kOpSelectImplMode, info.op_select_impl_mode)
.AddAssignmentToReference(cann::provider_option_names::kOpTypeListForImplMode, info.optypelist_for_implmode)
@ -73,6 +75,7 @@ ProviderOptions CANNExecutionProviderInfo::ToProviderOptions(const CANNExecution
EnumToName(arena_extend_strategy_mapping, info.arena_extend_strategy)},
{cann::provider_option_names::kEnableCannGraph, MakeStringWithClassicLocale(info.enable_cann_graph)},
{cann::provider_option_names::kDumpGraphs, MakeStringWithClassicLocale(info.dump_graphs)},
{cann::provider_option_names::kDumpOmModel, MakeStringWithClassicLocale(info.dump_om_model)},
{cann::provider_option_names::kPrecisionMode, MakeStringWithClassicLocale(info.precision_mode)},
{cann::provider_option_names::kOpSelectImplMode, MakeStringWithClassicLocale(info.op_select_impl_mode)},
{cann::provider_option_names::kOpTypeListForImplMode, MakeStringWithClassicLocale(info.optypelist_for_implmode)}};
@ -87,6 +90,7 @@ ProviderOptions CANNExecutionProviderInfo::ToProviderOptions(const OrtCANNProvid
EnumToName(arena_extend_strategy_mapping, ArenaExtendStrategy(info.arena_extend_strategy))},
{cann::provider_option_names::kEnableCannGraph, MakeStringWithClassicLocale(info.enable_cann_graph)},
{cann::provider_option_names::kDumpGraphs, MakeStringWithClassicLocale(info.dump_graphs)},
{cann::provider_option_names::kDumpOmModel, MakeStringWithClassicLocale(info.dump_om_model)},
{cann::provider_option_names::kPrecisionMode, MakeStringWithClassicLocale(info.precision_mode)},
{cann::provider_option_names::kOpSelectImplMode, MakeStringWithClassicLocale(info.op_select_impl_mode)},
{cann::provider_option_names::kOpTypeListForImplMode, MakeStringWithClassicLocale(info.optypelist_for_implmode)}};

View file

@ -19,6 +19,7 @@ struct CANNExecutionProviderInfo {
ArenaExtendStrategy arena_extend_strategy{ArenaExtendStrategy::kNextPowerOfTwo};
bool enable_cann_graph{true};
bool dump_graphs{false};
bool dump_om_model{true};
std::string precision_mode;
std::string op_select_impl_mode;
std::string optypelist_for_implmode;

View file

@ -115,7 +115,9 @@ Status BuildONNXModel(ge::Graph& graph, std::string input_shape, const char* soc
options.emplace(ge::ir_option::INPUT_SHAPE, input_shape.c_str());
CANN_GRAPH_RETURN_IF_ERROR(ge::aclgrphBuildModel(graph, options, model));
CANN_GRAPH_RETURN_IF_ERROR(ge::aclgrphSaveModel(file_name.c_str(), model));
if (info.dump_om_model) {
CANN_GRAPH_RETURN_IF_ERROR(ge::aclgrphSaveModel(file_name.c_str(), model));
}
return Status::OK();
}

View file

@ -77,6 +77,7 @@ struct CANN_Provider : Provider {
info.arena_extend_strategy = params->arena_extend_strategy;
info.enable_cann_graph = params->enable_cann_graph != 0;
info.dump_graphs = params->dump_graphs != 0;
info.dump_om_model = params->dump_om_model != 0;
info.precision_mode = params->precision_mode;
info.op_select_impl_mode = params->op_select_impl_mode;
info.optypelist_for_implmode = params->optypelist_for_implmode;
@ -94,6 +95,7 @@ struct CANN_Provider : Provider {
cann_options.arena_extend_strategy = internal_options.arena_extend_strategy;
cann_options.enable_cann_graph = internal_options.enable_cann_graph;
cann_options.dump_graphs = internal_options.dump_graphs;
cann_options.dump_om_model = internal_options.dump_om_model;
cann_options.precision_mode = internal_options.precision_mode;
cann_options.op_select_impl_mode = internal_options.op_select_impl_mode;
cann_options.optypelist_for_implmode = internal_options.optypelist_for_implmode;

View file

@ -2403,6 +2403,7 @@ ORT_API_STATUS_IMPL(OrtApis::CreateCANNProviderOptions, _Outptr_ OrtCANNProvider
options->arena_extend_strategy = static_cast<onnxruntime::ArenaExtendStrategy>(0);
options->enable_cann_graph = 1;
options->dump_graphs = 0;
options->dump_om_model = 1;
options->default_memory_arena_cfg = nullptr;
*out = options.release();
return nullptr;