标签: onnxruntime

如何在 GPU 上运行 ONNX 模型?

我正在尝试运行 ONNX 模型

import onnxruntime as ort
import onnxruntime.backend
model_path = "model.onnx"

#https://microsoft.github.io/onnxruntime/
ort_sess = ort.InferenceSession(model_path)


print( ort.get_device()  )
Run Code Online (Sandbox Code Playgroud)

这打印出来

cpu
Run Code Online (Sandbox Code Playgroud)

我怎样才能让它在我的 GPU 上运行?我如何确认它正在工作?

deep-learning onnx onnx-coreml onnxruntime

16
推荐指数
2
解决办法
6万
查看次数

如何在 ONNX Runtime 中实现多线程?

使用 ONNX Runtime 对深度学习模型运行推理。假设我有 4 个不同的模型,每个模型都有自己的输入图像,我可以在 4 个线程中并行运行它们吗?是否会有 1 个“环境”,然后 4 个会话(使用相同的环境)?

onnxruntime

7
推荐指数
1
解决办法
9318
查看次数

我无法使用 pip3 安装 onnxruntime。请解决它

错误:找不到满足 onnxruntime 要求的版本(来自版本:无)错误:找不到 onnxruntime 的匹配发行版

python onnxruntime

7
推荐指数
1
解决办法
1万
查看次数

从 Python 中的 ONNX 模型获取预测

我找不到任何人向外行解释如何将 onnx 模型加载到 python 脚本中,然后在输入图像时使用该模型进行预测。我能找到的只是这些代码行:

sess = rt.InferenceSession("onnx_model.onnx")
input_name = sess.get_inputs()[0].name
label_name = sess.get_outputs()[0].name
pred = sess.run([label_name], {input_name: X.astype(np.float32)})[0]
Run Code Online (Sandbox Code Playgroud)

但我不知道这意味着什么。无论我看到哪里,每个人似乎都已经知道它们的意思,所以没有人解释它。如果我可以运行这段代码,那将是一回事,但我不能。它给了我这个错误:

onnxruntime.capi.onnxruntime_pybind11_state.InvalidArgument: [ONNXRuntimeError] : 2 : INVALID_ARGUMENT : Invalid rank for input: Input3 Got: 2 Expected: 4 Please fix either the inputs or the model.
Run Code Online (Sandbox Code Playgroud)

所以我需要真正知道这些事情的含义,这样我才能弄清楚如何修复错误。有懂行的请解释一下吗?

python machine-learning onnx onnxruntime

6
推荐指数
1
解决办法
6269
查看次数

在 Ubuntu 20.04 上设置 ONNX 运行时(C++ API)

我目前正在尝试让我的图像处理程序在 Ubuntu(来自 Windows)上运行。

我已经成功构建并链接了 OpenCV 和 Boost 库以与我的 cpp 程序一起使用,但除了针对特定 Visual Studio 使用以下命令和 NuGet 包管理器之外,我还没有找到任何有关在 Ubuntu 20.04 上设置 Onnx Runtime C++ 的说明项目:

Install-Package Microsoft.ML.OnnxRuntime -Version 1.4.0
Run Code Online (Sandbox Code Playgroud)

在 Windows 上,我只需要使用 NuGet 包管理器来下载给定 Visual Studio 项目的库。似乎可以使用 NuGet 在 Ubuntu 上执行此操作,但我想知道是否可以更“手动”执行此操作,例如 boost 和 OpenCV 构建和安装。谢谢!

c++ onnx onnxruntime

5
推荐指数
1
解决办法
1万
查看次数

如何知道 Pytorch 模型的输入/输出层名称和大小?

我有 Pytorch model.pth 使用Detectron2 的COCO 对象检测基线预训练模型 R50-FPN。我正在尝试转换.pth model to onnx.

我的代码如下。

import io
import numpy as np

from torch import nn
import torch.utils.model_zoo as model_zoo
import torch.onnx
from torchvision import models

model = torch.load('output_object_detection/model_final.pth')
x = torch.randn(1, 3, 1080, 1920, requires_grad=True)#0, in_cha, in_h, in_w
torch_out = torch_model(x)
print(model)
torch.onnx.export(torch_model,               # model being run
                  x,                         # model input (or a tuple for multiple inputs)
                  "super_resolution.onnx",   # where to save the model (can be a file or file-like …
Run Code Online (Sandbox Code Playgroud)

python pytorch onnx onnxruntime

5
推荐指数
1
解决办法
8949
查看次数

在 Python 中并行运行多个 ONNX 模型进行推理

有没有办法并行运行多个 ONNX 模型并使用多个可用内核?

\n

目前,我已经训练了两个 ONNX 模型,并想使用它们进行推断。我已经使用了 Python 的线程,但这并没有\xe2\x80\x99 真正使用多核。

\n

之后我尝试了多重处理,但这给了我以下错误:

\n
\n

无法pickle onnxruntime.capi.onnxruntime_pybind11_state.SessionOptions对象

\n
\n

请告诉我是否有任何解决方法?

\n

python parallel-processing multithreading multiprocessing onnxruntime

5
推荐指数
1
解决办法
2622
查看次数

onnxruntime 推理在 GPU 上比 pytorch 慢得多

我正在比较使用 pytorch 和 onnxruntime 的输入的推理时间,我发现 onnxruntime 在 GPU 上实际上较慢,而在 CPU 上则明显更快

我在 Windows 10 上尝试过这个。

  • 从源安装的 ONNX 运行时 - ONNX 运行时版本:1.11.0(onnx 版本 1.10.1)
  • Python 版本 - 3.8.12
  • CUDA/cuDNN 版本 - cuda 版本 11.5、cudnn 版本 8.2
  • GPU 型号和内存 - Quadro M2000M,4 GB

相关代码-

import torch
from torchvision import models
import onnxruntime    # to inference ONNX models, we use the ONNX Runtime
import onnx
import os
import time

batch_size = 1
total_samples = 1000
device = torch.device('cuda:0' if torch.cuda.is_available() else 'cpu')
    
def …
Run Code Online (Sandbox Code Playgroud)

gpu machine-learning pytorch onnx onnxruntime

5
推荐指数
1
解决办法
1万
查看次数

为什么 onnxruntime 在 Linux(Ubuntu 20) 中创建 CUDAExecutionProvider 失败?

import onnxruntime as rt
ort_session = rt.InferenceSession(
            "my_model.onnx",
            providers=["CUDAExecutionProvider"],
)
Run Code Online (Sandbox Code Playgroud)

当提供程序为.onnxruntime (onnxruntime-gpu 1.13.1) 时(在 Jupyter VsCode env - Python 3.8.15 中)效果["CPUExecutionProvider"]很好 但["CUDAExecutionProvider"]有时(并非总是)会抛出错误:

[W:onnxruntime:Default, onnxruntime_pybind_state.cc:578 CreateExecutionProviderInstance] Failed to create CUDAExecutionProvider. Please reference https://onnxruntime.ai/docs/reference/execution-providers/CUDA-ExecutionProvider.html#requirements to ensure all dependencies are met.
Run Code Online (Sandbox Code Playgroud)

我尝试按照错误中提供的链接进行操作,并在 conda 环境中尝试不同的设置来测试具有各种版本组合的代码。

python onnxruntime

5
推荐指数
1
解决办法
9965
查看次数

Onnxruntime:仅当首先导入 pytorch 时,才能在 GPU 上使用 CUDNN 进行推理

我正在尝试使用 onnxruntime-gpu 进行推理。因此,我在我的系统上安装了 CUDA、CUDNN 和 onnxruntime-gpu,并检查我的 GPU 是否兼容(下面列出的版本)。

当我尝试启动推理会话时,我收到以下警告:

>>> import onnxruntime as rt
>>> rt.get_available_providers()
['TensorrtExecutionProvider', 'CUDAExecutionProvider', 'CPUExecutionProvider']
>>> rt.InferenceSession("[ PATH TO MODEL .onnx]", providers= ['CUDAExecutionProvider'])
2023-01-31 09:07:03.289984495 [W:onnxruntime:Default, onnxruntime_pybind_state.cc:578 CreateExecutionProviderInstance] Failed to create CUDAExecutionProvider. Please reference https://onnxruntime.ai/docs/reference/execution-providers/CUDA-ExecutionProvider.html#requirements to ensure all dependencies are met.
<onnxruntime.capi.onnxruntime_inference_collection.InferenceSession object at 0x7f740b4af100>
Run Code Online (Sandbox Code Playgroud)

但是,如果我先导入 torch,推理就会在我的 GPU 上运行,并且一旦开始推理会话,我就会看到我的 python 程序列在 nvidia-smi 下:

$ python
Python 3.8.16 (default, Dec  7 2022, 01:12:06)
[GCC 11.3.0] on linux
Type "help", "copyright", "credits" or "license" for more …
Run Code Online (Sandbox Code Playgroud)

python pytorch onnxruntime

5
推荐指数
0
解决办法
3121
查看次数