sol9x-sagar's picture
initial setup
2979822
"""ONNX model loader with provider auto-detection."""
import onnxruntime as ort
from typing import Tuple, Optional
from pathlib import Path
def load_model(model_path: str) -> Tuple[Optional[ort.InferenceSession], Optional[str]]:
"""Load ONNX model. Return (session, input_name) or (None, None) on failure."""
if not Path(model_path).exists():
return None, None
try:
sess_options = ort.SessionOptions()
sess_options.graph_optimization_level = (
ort.GraphOptimizationLevel.ORT_ENABLE_ALL
)
sess_options.execution_mode = ort.ExecutionMode.ORT_SEQUENTIAL
available_providers = ort.get_available_providers()
preferred_providers = ["CUDAExecutionProvider", "CPUExecutionProvider"]
providers = [p for p in preferred_providers if p in available_providers]
if not providers:
providers = available_providers
ort_session = ort.InferenceSession(
model_path, sess_options=sess_options, providers=providers
)
input_name = ort_session.get_inputs()[0].name
return ort_session, input_name
except Exception:
return None, None