问题:当我在同一个进程同时调用tensorrt和onnxruntime-gpu时 出现了tensorrt推理结果全为0的情况
解决方式:
将onnxruntime-gpu放到cpu上,但是cpu的推理速度明显会不如gpu
如果在python中 请一定先加载tensorrt模型,最后再加载onnx模型,比如在demo中import时,先调用tensorrt推理,最后再调用onnxruntime-gpu,但是只能保证第一次调用输出正确。
如果有多张显卡,可以将onnxruntime-gpu放到另一张卡上。
device_name = 'cuda:0'
if device_name == 'cpu':
providers = ['CPUExecutionProvider']
elif device_name == 'cuda:0':
providers = ['CUDAExecutionProvider', 'CPUExecutionProvider']
else:
providers = ['CPUExecutionProvider']
character = " &#(),+-./0123456789:<ABCDEFGHIJKLMNOPQRSTUVWXYZabceghilmnoprstuvy?"
# ort_session = onnxruntime.InferenceSession("./detect/detect_1.onnx", providers=providers)
ort_session = onnxruntime.InferenceSession("identify/model.onnx", providers=providers)
d.因为是同进程同流导致的数据问题,所以可以在流输入时更换掉onnxruntime-gpu的输入流,是需要放在调用函数。
import pycuda.driver as cuda
import pycuda.autoinit
new_stream = cuda.Stream()