From aaeab7350587100b990f766aef08f40a98da850d Mon Sep 17 00:00:00 2001 From: Nicolas Mowen Date: Sat, 27 Sep 2025 06:51:29 -0600 Subject: [PATCH] Handle complex migraphx models --- frigate/detectors/detection_runners.py | 24 ++++++++++++++++++++++++ frigate/util/model.py | 6 +----- 2 files changed, 25 insertions(+), 5 deletions(-) diff --git a/frigate/detectors/detection_runners.py b/frigate/detectors/detection_runners.py index b0f43708d..b1403afe6 100644 --- a/frigate/detectors/detection_runners.py +++ b/frigate/detectors/detection_runners.py @@ -78,6 +78,21 @@ class BaseModelRunner(ABC): class ONNXModelRunner(BaseModelRunner): """Run ONNX models using ONNX Runtime.""" + @staticmethod + def is_migraphx_complex_model(model_type: str) -> bool: + # Import here to avoid circular imports + from frigate.detectors.detector_config import ModelTypeEnum + from frigate.embeddings.types import EnrichmentModelTypeEnum + + return model_type in [ + EnrichmentModelTypeEnum.paddleocr.value, + EnrichmentModelTypeEnum.jina_v1.value, + EnrichmentModelTypeEnum.jina_v2.value, + EnrichmentModelTypeEnum.facenet.value, + ModelTypeEnum.rfdetr.value, + ModelTypeEnum.dfine.value, + ] + def __init__(self, ort: ort.InferenceSession): self.ort = ort @@ -443,6 +458,15 @@ def get_optimized_runner( options[0]["device_id"], ) + if providers[ + 0 + ] == "MIGraphXExecutionProvider" and ONNXModelRunner.is_migraphx_complex_model( + model_type + ): + # Don't use MIGraphX for models that are not supported + providers.pop(0) + options.pop(0) + return ONNXModelRunner( ort.InferenceSession( model_path, diff --git a/frigate/util/model.py b/frigate/util/model.py index 76c89071d..f5e5f3df9 100644 --- a/frigate/util/model.py +++ b/frigate/util/model.py @@ -373,11 +373,7 @@ def get_ort_providers( os.environ["ORT_MIGRAPHX_SAVE_COMPILED_PATH"] = compiled_model_path providers.append(provider) - options.append( - { - "migraphx_fp16_enable": 0, - } - ) + options.append({}) else: providers.append(provider) options.append({})