【问题标题】:Converted ONNX model runs on CPU but not on GPU转换后的 ONNX 模型在 CPU 上运行,但不在 GPU 上
【发布时间】:2020-08-10 10:26:19
【问题描述】:

我使用以下命令将 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

我尝试了不同的 opset。 有人知道为什么我在 GPU 上运行时会出错

【问题讨论】:

    标签: python tensorflow onnx onnxruntime


    【解决方案1】:

    这不是错误。这是一个警告,它基本上告诉您该特定 Conv 节点将在 CPU(而不是 GPU)上运行。这很可能是因为 GPU 后端尚不支持非对称填充,并且正在进行 PR 以缓解此问题 - https://github.com/microsoft/onnxruntime/pull/4627。合并此 PR 后,这些警告应该会消失,并且此类 Conv 节点将在 GPU 后端运行。

    【讨论】:

    • 另外 - 为了将来参考,在 onnxruntime github repo 上发布问题以获得响应可能会稍微快一些。谢谢!
    • 感谢您的回答。这是否意味着所有模型都在 CPU 上运行或仅在特定层上运行?
    • 当然。它仅意味着那些具有不对称填充的特定 Conv 节点会下降到 CPU。在您的情况下,这是特定节点:“StatefulPartitionedCall/mobilenetv2_1.00_224/Conv1/Conv2D”。您会为每个已停止使用的节点找到一条这样的消息。此外,在 PR 合并后,这应该会消失。
    猜你喜欢
    • 2021-02-03
    • 2021-07-27
    • 2019-08-18
    • 1970-01-01
    • 1970-01-01
    • 2019-12-11
    • 1970-01-01
    • 2013-09-17
    • 2018-04-02
    相关资源
    最近更新 更多