我已经训练活在当下-v3微小在我的自定义数据集使用PyTorch。为了比较推论时间,我在CPU上尝试了onnxruntime以及PyTorch GPU和PyTorch CPU。平均运行时间约为:
onnxruntime cpu:110毫秒-cpu使用率:60%Pytorch GPU:50毫秒Pytorch cpu:165毫秒-cpu使用率:40%,所有型号都使用批量大小为1的产品。
然而,我不明白onnxruntime与PyTorch CPU相比如何更快,因为我没有使用onnxruntime的任何优化选项。我只是用了这个:
onnx_model = onnxruntime.InferenceSession('model.onnx')
onnx_model.run(None,{onnx_model.get_inputs()[0].name: input_imgs })
有人能给我解释一下为什么没有任何优化它会更快吗?以及为什么在使用onnxruntime时CPU使用率更高。有什么办法可以控制住它吗?
提前谢谢。
ONNX运行时使用静态的ONNX图形,因此它具有图形的完整视图,并且可以执行许多Pyrotch不可能/更难执行的优化。在某种意义上,它类似于编译的编程语言实现与解释的编程语言实现。