我正在尝试运行 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 上运行?我如何确认它正在工作?
使用 ONNX Runtime 对深度学习模型运行推理。假设我有 4 个不同的模型,每个模型都有自己的输入图像,我可以在 4 个线程中并行运行它们吗?是否会有 1 个“环境”,然后 4 个会话(使用相同的环境)?
错误:找不到满足 onnxruntime 要求的版本(来自版本:无)错误:找不到 onnxruntime 的匹配发行版
我找不到任何人向外行解释如何将 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)
所以我需要真正知道这些事情的含义,这样我才能弄清楚如何修复错误。有懂行的请解释一下吗?
我目前正在尝试让我的图像处理程序在 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 构建和安装。谢谢!
我有 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) 有没有办法并行运行多个 ONNX 模型并使用多个可用内核?
\n目前,我已经训练了两个 ONNX 模型,并想使用它们进行推断。我已经使用了 Python 的线程,但这并没有\xe2\x80\x99 真正使用多核。
\n之后我尝试了多重处理,但这给了我以下错误:
\n\n\n无法pickle onnxruntime.capi.onnxruntime_pybind11_state.SessionOptions对象
\n
请告诉我是否有任何解决方法?
\npython parallel-processing multithreading multiprocessing onnxruntime
我正在比较使用 pytorch 和 onnxruntime 的输入的推理时间,我发现 onnxruntime 在 GPU 上实际上较慢,而在 CPU 上则明显更快
我在 Windows 10 上尝试过这个。
相关代码-
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) 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 环境中尝试不同的设置来测试具有各种版本组合的代码。
我正在尝试使用 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)