sasaffcxzc 2023-09-13 10:04 采纳率: 63.3%
浏览 14

ONNX最快的推理代码

请问一下最快的onnx是如何实现的。

我最近看见,有人的ONNX推理二十毫秒左右,还是没开gpu,而我使用python构建的opencv 显卡加速,才四五十毫秒。

这太强了,也不知道怎么做到的。我记得ONNX推理有两个库一个opencv 一个onnxruntime 可是这两个我都试了 onnxruntime略快,cpu可以达到四十左右,但还是没有二十毫秒左右速度。

不过我是用的python推理,c++不会调用。请问会的老哥c++ cpu推理onnx快多少,还是说有其他更高效的办法

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-09-13 12:28
    关注

    【以下回答由 GPT 生成】

    首先,为了优化ONNX的推理性能,你可以考虑以下几个方面:

    1. 使用ONNX Runtime进行推理: ONNX Runtime是一个针对ONNX模型进行推理的高性能引擎,可以在CPU和GPU上同时进行推理。相比于OpenCV,ONNX Runtime具有更高的推理速度。你可以通过使用ONNX Runtime来加速你的推理过程。以下是一个使用ONNX Runtime进行推理的示例代码:
    import onnxruntime as rt
    
    # 加载ONNX模型
    sess = rt.InferenceSession('model.onnx')
    
    # 准备输入数据
    input_data = np.random.randn(1, 3, 224, 224).astype(np.float32)
    
    # 进行推理
    output = sess.run(None, {'input': input_data})
    
    # 处理输出结果
    # ...
    
    1. 使用GPU加速: 如果你有可用的GPU,可以考虑将推理过程迁移到GPU上,以获得更高的性能。ONNX Runtime支持在CUDA和OpenCL上进行GPU推理。以下是一个使用GPU进行推理的示例代码:
    import onnxruntime as rt
    
    # 创建ONNX Runtime的配置
    options = rt.SessionOptions()
    options.graph_optimization_level = rt.GraphOptimizationLevel.ORT_ENABLE_ALL
    options.execution_mode = rt.ExecutionMode.ORT_SEQUENTIAL
    
    # 指定使用GPU进行推理
    options.disable_cpu_memory_arena = True
    options.enable_cuda = True
    
    # 加载ONNX模型
    sess = rt.InferenceSession('model.onnx', options)
    
    # 准备输入数据
    input_data = np.random.randn(1, 3, 224, 224).astype(np.float32)
    
    # 进行推理
    output = sess.run(None, {'input': input_data})
    
    # 处理输出结果
    # ...
    
    1. 模型优化: 有时候,对模型进行一些优化可以提高推理性能。你可以尝试使用ONNX模型优化工具进行模型优化,以减少模型的计算量和推理时间。以下是一个使用ONNX模型优化工具的示例代码:
    import onnx
    from onnxruntime.transformers import optimizer
    
    # 加载原始模型
    model = onnx.load('model.onnx')
    
    # 进行模型优化
    optimized_model = optimizer.optimize_model(model)
    
    # 保存优化后的模型
    onnx.save(optimized_model, 'optimized_model.onnx')
    

    以上是一些常用的优化方法,可以帮助你提高ONNX的推理性能。希望对你有帮助!如果以上方法还不能满足你的需求,你可以考虑使用其他高性能的推理引擎,如TensorRT或NVIDIA Triton Inference Server,它们提供了更高级别的优化和加速功能。


    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 创建了问题 9月13日

悬赏问题

  • ¥15 关于#微信#的问题:微信实名不绑卡 可以实现吗 有没有专家 可以解决
  • ¥15 (标签-考研|关键词-set)
  • ¥15 求修改代码,图书管理系统
  • ¥15 请问有没求偏多标签数据集yeast,reference,recreation,scene,health数据集。
  • ¥15 传感网应用开发单片机实训
  • ¥15 Delphi 关于sAlphaImageList使用问题
  • ¥15 寻找将CAJ格式文档转txt文本的方案
  • ¥15 shein测试开发会问些啥我是写java的
  • ¥15 关于#单片机#的问题:我有个课程项目设计,我想在STM32F103veTX单片机,M3主控模块上设计一个程序,在Keil uVision5(C语言)上代码该怎么编译?(嫌钱少我可以加钱,急急急)
  • ¥15 opnet仿真网络协议遇到问题