Skip to content

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

ModelInspector()

Example:

inspector = ModelInspector()


Methods

inspect()

Inspect an ONNX model.

inspect(model_path: str | Path) -> ModelInfo

Parameters:

  • model_path (str | Path): Path to ONNX model

Returns:

  • ModelInfo: Model information

Raises:

  • FileNotFoundError: If model not found
  • ValueError: 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.

to_dict() -> dict[str, Any]

Returns:

  • dict: Model information as dictionary

Example:

info_dict = info.to_dict()
print(info_dict["size_mb"])

save()

Save model info to JSON file.

save(path: str | Path) -> None

Parameters:

  • path (str | Path): Output file path

Example:

info.save("model_info.json")

from_dict()

Create from dictionary.

@classmethod
from_dict(data: dict[str, Any]) -> ModelInfo

Parameters:

  • data (dict): Dictionary data

Returns:

  • ModelInfo: Model information

Example:

info = ModelInfo.from_dict(data)


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")

See Also