当前位置:   article > 正文

TensorRT模型推理内存泄露问题解决_inferencesession 内存泄漏

inferencesession 内存泄漏

问题描述:

在部署AI云服务后端时,使用tensorRT来进行模型推理,发现随着客户端不断地请求服务,显存会持续的增长,当累积到一定程度时就会出现申请不到显存而报错的情况。

经过分析是在tensorrt模型前向推理是造成的问题,在代码里:

  1. trt_engine_path = './model/resnet50.trt'
  2. trt_runtime = trt.Runtime(TRT_LOGGER)
  3. engine = load_engine(trt_runtime, trt_engine_path)
  4. context = engine.create_execution_context()
  5. trt_outputs = do_inference(context, bindings=bindings, inputs=inputs, outputs=outputs, stream=stream)

 

解决办法:

使用with语句来加载engine和context,推理结束时会自动释放显卡内存,写法如下:

  1. trt_engine_path = './model/resnet50.trt'
  2. trt_runtime = trt.Runtime(TRT_LOGGER)
  3. with load_engine(trt_runtime, trt_engine_path) as engine:
  4. inputs, outputs, bindings, stream = allocate_buffers(engine)
  5. with engine.create_execution_context() as context:
  6. trt_outputs = do_inference(context, bindings=bindings, inputs=inputs, outputs=outputs, stream=stream)
  7. ......

 

除此之外,大家可以多看看tensorrt里面自带的samples,里面有关于不同模型的tensorRT推理的写法。

 

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/351402
推荐阅读
  

闽ICP备14008679号