use std::collections::HashMap;
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum OptLevel {
None,
Basic,
Extended,
All,
}
#[derive(Debug, Clone)]
pub struct NodeProfile {
pub node_name: String,
pub op_type: String,
pub duration: std::time::Duration,
pub output_shapes: Vec<Vec<usize>>,
}
#[derive(Debug, Clone, Default)]
pub struct ModelMetadata {
pub producer_name: String,
pub producer_version: String,
pub domain: String,
pub graph_name: String,
pub ir_version: i64,
pub opset_imports: Vec<(String, i64)>,
pub custom_metadata: HashMap<String, String>,
}
#[derive(Debug, Clone)]
pub struct ModelInfo {
pub node_count: usize,
pub parameter_count: usize,
pub weight_bytes: usize,
pub op_histogram: HashMap<String, usize>,
}
pub(crate) fn raw_meta_to_model_metadata(raw: oxionnx_proto::model::RawModelMeta) -> ModelMetadata {
ModelMetadata {
producer_name: raw.producer_name,
producer_version: raw.producer_version,
domain: raw.domain,
graph_name: raw.graph_name,
ir_version: raw.ir_version,
opset_imports: raw.opset_imports,
custom_metadata: raw.metadata_props.into_iter().collect(),
}
}