首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >[python][onnxruntime]自动获取Provider

[python][onnxruntime]自动获取Provider

作者头像
云未归来
发布2025-07-16 13:48:04
发布2025-07-16 13:48:04
14400
代码可运行
举报
运行总次数:0
代码可运行
代码语言:javascript
代码运行次数:0
运行
复制
import onnxruntime as ort
all_providers = ort.get_all_providers()
print(all_providers)
available_providers = ort.get_available_providers()
print(available_providers)

运行结果:

['TensorrtExecutionProvider', 'CUDAExecutionProvider', 'MIGraphXExecutionProvider', 'ROCMExecutionProvider', 'OpenVINOExecutionProvider', 'DnnlExecutionProvider', 'TvmExecutionProvider', 'VitisAIExecutionProvider', 'QNNExecutionProvider', 'NnapiExecutionProvider', 'JsExecutionProvider', 'CoreMLExecutionProvider', 'ArmNNExecutionProvider', 'ACLExecutionProvider', 'DmlExecutionProvider', 'RknpuExecutionProvider', 'WebNNExecutionProvider', 'XnnpackExecutionProvider', 'CANNExecutionProvider', 'AzureExecutionProvider', 'CPUExecutionProvider']

['TensorrtExecutionProvider', 'CUDAExecutionProvider', 'CPUExecutionProvider']

onnx通过加载模型时指定provider来选择推理设备,可以通过get_available_providers来获取可用的providers,providers是一个列表,按照先后顺序进行选择,在前一个provider无法使用的情况下会向后选择。以下是一个示例:

代码语言:javascript
代码运行次数:0
运行
复制
import os  
import onnxruntime as ort  
  
def get_available_providers():  
    providers = []  
    # 检查 CUDA 是否可用  
    if os.path.exists("/usr/local/cuda/bin/nvcc"):  
        providers.append('CUDAExecutionProvider')  
    # CPU 总是可用的  
    providers.append('CPUExecutionProvider')  
    return providers  
  
def create_ort_session(model_path, providers):  
    # 使用指定的提供者列表创建会话  
    session_options = ort.SessionOptions()  
    session_options.enable_profiling = True  # 可选,开启性能分析  
    session_options.graph_optimization_level = ort.GraphOptimizationLevel.ORT_ENABLE_ALL  
    session = ort.InferenceSession(model_path, sess_options=session_options, providers=providers)  
    return session  
  
# 模型路径  
model_path = 'your_model.onnx'  
  
# 获取可用的执行提供者  
providers = get_available_providers()  
  
# 创建会话  
session = create_ort_session(model_path, providers)  
  
# 现在你可以使用 session 来运行模型了  
# 例如: results = session.run(None, {'input_name': input_data})
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-07-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档