转换后的 ONNX 模型在 CPU 上运行但不在 GPU 上运行
Converted ONNX model runs on CPU but not on GPU
我使用以下命令将 TensorFlow 模型转换为 ONNX:
python -m tf2onnx.convert --saved-model tensorflow-model-path --opset 10 --output model.onnx
转换成功,我可以在安装 onnxruntime
.
后推断 CPU
但是当我创建一个新环境,在其上安装 onnxruntime-gpu
并使用 GPU 进行推理时,我会根据模型收到不同的错误消息。例如。对于 MobileNet,我收到 W:onnxruntime:Default, cuda_execution_provider.cc:1498 GetCapability] CUDA kernel not supported. Fallback to CPU execution provider for Op type: Conv node name: StatefulPartitionedCall/mobilenetv2_1.00_224/Conv1/Conv2D
我尝试了不同的选项。
有人知道为什么我在 GPU
上 运行 时出错吗
这不是错误。这是一个警告,它基本上是在告诉你那个特定的 Conv 节点将 运行 on CPU(而不是 GPU)。这很可能是因为 GPU 后端尚不支持非对称填充,并且正在进行 PR 以缓解此问题 - https://github.com/microsoft/onnxruntime/pull/4627。合并此 PR 后,这些警告应该消失,并且此类 Conv 节点将 运行 在 GPU 后端。
我使用以下命令将 TensorFlow 模型转换为 ONNX:
python -m tf2onnx.convert --saved-model tensorflow-model-path --opset 10 --output model.onnx
转换成功,我可以在安装 onnxruntime
.
但是当我创建一个新环境,在其上安装 onnxruntime-gpu
并使用 GPU 进行推理时,我会根据模型收到不同的错误消息。例如。对于 MobileNet,我收到 W:onnxruntime:Default, cuda_execution_provider.cc:1498 GetCapability] CUDA kernel not supported. Fallback to CPU execution provider for Op type: Conv node name: StatefulPartitionedCall/mobilenetv2_1.00_224/Conv1/Conv2D
我尝试了不同的选项。 有人知道为什么我在 GPU
上 运行 时出错吗这不是错误。这是一个警告,它基本上是在告诉你那个特定的 Conv 节点将 运行 on CPU(而不是 GPU)。这很可能是因为 GPU 后端尚不支持非对称填充,并且正在进行 PR 以缓解此问题 - https://github.com/microsoft/onnxruntime/pull/4627。合并此 PR 后,这些警告应该消失,并且此类 Conv 节点将 运行 在 GPU 后端。