From 0b8ac5c6ee8130f0aa3773bf2bee7f94064c1171 Mon Sep 17 00:00:00 2001 From: Nicolas Mowen Date: Sat, 13 Sep 2025 20:13:41 -0600 Subject: [PATCH] Add support for non-complex models for CudaExecutionProvider --- frigate/detectors/base_runner.py | 6 +++++- frigate/embeddings/onnx/face_embedding.py | 1 + 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/frigate/detectors/base_runner.py b/frigate/detectors/base_runner.py index 3886e1b44..c9ffeb573 100644 --- a/frigate/detectors/base_runner.py +++ b/frigate/detectors/base_runner.py @@ -3,6 +3,7 @@ from abc import ABC, abstractmethod from typing import Any +from frigate.detectors.plugins.onnx import CudaGraphRunner import onnxruntime as ort from frigate.detectors.plugins.openvino import OpenVINOModelRunner @@ -51,7 +52,7 @@ class ONNXModelRunner(BaseModelRunner): return self.ort.run(None, input) -def get_optimized_runner(model_path: str, device: str, **kwargs) -> BaseModelRunner: +def get_optimized_runner(model_path: str, device: str, complex_model: bool = True, **kwargs) -> BaseModelRunner: """Get an optimized runner for the hardware.""" if device == "CPU": return ONNXModelRunner(model_path, device, **kwargs) @@ -73,4 +74,7 @@ def get_optimized_runner(model_path: str, device: str, **kwargs) -> BaseModelRun provider_options=options, ) + if not complex_model and providers[0] == "CUDAExecutionProvider": + return CudaGraphRunner(ort, options[0]["device_id"]) + return ONNXModelRunner(model_path, device, **kwargs) diff --git a/frigate/embeddings/onnx/face_embedding.py b/frigate/embeddings/onnx/face_embedding.py index da3f468d4..b829f8d36 100644 --- a/frigate/embeddings/onnx/face_embedding.py +++ b/frigate/embeddings/onnx/face_embedding.py @@ -151,6 +151,7 @@ class ArcfaceEmbedding(BaseEmbedding): self.runner = get_optimized_runner( os.path.join(self.download_path, self.model_file), device=self.config.device or "GPU", + complex_model=False, ) def _preprocess_inputs(self, raw_inputs):