import os import onnxruntime def onnxSessionBuild(pathModel): option = onnxruntime.SessionOptions() option.log_severity_level = 3 option.graph_optimization_level = onnxruntime.GraphOptimizationLevel.ORT_ENABLE_ALL option.intra_op_num_threads = max(1, os.cpu_count()) option.inter_op_num_threads = 1 option.enable_cpu_mem_arena = True option.enable_mem_pattern = True option.enable_mem_reuse = True option.execution_mode = onnxruntime.ExecutionMode.ORT_SEQUENTIAL providerPreferredList = [ "CUDAExecutionProvider", "OpenVINOExecutionProvider", "CPUExecutionProvider" ] providerAvailableList = onnxruntime.get_available_providers() providerList = [provider for provider in providerPreferredList if provider in providerAvailableList] inference = onnxruntime.InferenceSession(pathModel, sess_options=option, providers=providerList) print(f"Provider available: {providerAvailableList}") print(f"Provider active: {inference.get_providers()}\n") return inference