ModelInspector¶
ONNX model introspection and metadata extraction.
Overview¶
ModelInspector extracts comprehensive information from ONNX models including inputs, outputs, shapes, and metadata.
from gpux.core.models import ModelInspector
inspector = ModelInspector()
info = inspector.inspect("model.onnx")
Robust Metadata Extraction¶
ModelInspector uses safe attribute access when extracting metadata from ONNX models, ensuring compatibility across different ONNX Runtime versions. If metadata attributes are missing (such as producer_version), the inspector will use sensible default values instead of raising errors.
Default values for missing metadata:
- producer_name: "unknown"
- producer_version: "unknown"
- domain: "unknown"
- model_version: "unknown"
- doc_string: ""
- execution_providers: []
This robust behavior ensures that model inspection continues to work even when models have incomplete metadata or when using different versions of ONNX Runtime that may have varying API attributes.
Dataclasses¶
InputSpec¶
Input specification.
@dataclass
class InputSpec:
name: str
type: str
shape: list[int]
required: bool = True
description: str | None = None
OutputSpec¶
Output specification.
@dataclass
class OutputSpec:
name: str
type: str
shape: list[int]
labels: list[str] | None = None
description: str | None = None
ModelInfo¶
Complete model information.
@dataclass
class ModelInfo:
name: str
version: str
format: str
path: Path
size_bytes: int
inputs: list[InputSpec]
outputs: list[OutputSpec]
metadata: dict[str, Any]
Class: ModelInspector¶
Constructor¶
Example:
Methods¶
inspect()¶
Inspect an ONNX model.
Parameters:
model_path(str | Path): Path to ONNX model
Returns:
ModelInfo: Model information
Raises:
FileNotFoundError: If model not foundValueError: If invalid model
Example:
info = inspector.inspect("sentiment.onnx")
print(f"Model: {info.name}")
print(f"Size: {info.size_mb:.1f} MB")
print(f"Inputs: {len(info.inputs)}")
print(f"Outputs: {len(info.outputs)}")
ModelInfo Methods¶
to_dict()¶
Convert to dictionary.
Returns:
dict: Model information as dictionary
Example:
save()¶
Save model info to JSON file.
Parameters:
path(str | Path): Output file path
Example:
from_dict()¶
Create from dictionary.
Parameters:
data(dict): Dictionary data
Returns:
ModelInfo: Model information
Example:
Complete Example¶
from gpux.core.models import ModelInspector
# Create inspector
inspector = ModelInspector()
# Inspect model
info = inspector.inspect("sentiment.onnx")
# Model information
print(f"Name: {info.name}")
print(f"Version: {info.version}")
print(f"Format: {info.format}")
print(f"Size: {info.size_mb:.1f} MB")
# Inputs
print("\nInputs:")
for inp in info.inputs:
print(f" - {inp.name}: {inp.type} {inp.shape}")
# Outputs
print("\nOutputs:")
for out in info.outputs:
print(f" - {out.name}: {out.type} {out.shape}")
if out.labels:
print(f" Labels: {out.labels}")
# Metadata
print(f"\nMetadata: {info.metadata}")
# Metadata includes producer_name, producer_version, domain, etc.
# Missing attributes will use default values (e.g., "unknown")
# Save to file
info.save("model_info.json")