TensorRT 是NVIDIA公司发布的一个高性能的深度学习推理加速框架。
训练主要是获得层与层之间的权重参数,目的是为了获得一个性能优异的模型,关注点集中在模型的准确度、精度等指标。
推理(inference)则不一样,其没有了训练中的反向迭代过程,只是针对新的数据进行预测。相较于训练,推理的更关注的是部署简单、处理速度快、吞吐率高和资源消耗少。
作用:TensorRT优化深度学习模型结构,并提供高吞吐率和低延迟的推理部署。
应用:TensorRT可用于大规模数据中心、嵌入式平台或自动驾驶平台进行推理加速。
————————————————
版权声明:本文为CSDN博主「一颗小树x」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_41204464/article/details/123998448
TensorRT整个过程可以分三个步骤,即模型的解析(Parser),Engine优化和执行(Execution)。
首先输入是一个预先训练好的FP32的模型和网络,将模型通过parser等方式输入到TensorRT中,TensorRT可以生成一个Serialization,也就是说将输入串流到内存或文件中,形成一个优化好的engine,得到优化好的engine可以序列化到内存(buffer)或文件(file),读的时候需要反序列化,将其变成engine以供使用。然后在执行的时候创建context,主要是分配预先的资源,engine加context就可以做推断(Inference)。
TensorRT官方支持Caffe、Tensorflow、Pytorch、ONNX等模型的转换(不过Caffe和Tensorflow的转换器Caffe-Parser和UFF-Parser已经有些落后了),也提供了三种转换模型的方式:
TF-TRT
,将TensorRT集成在TensorFlow中ONNX2TensorRT
,即ONNX转换trt的工具不过目前TensorRT对ONNX的支持最好,TensorRT-8最新版ONNX转换器又支持了更多的op操作。而深度学习框架中,TensorRT对Pytorch的支持更为友好,除了Pytorch->ONNX->TensorRT这条路,还有:
总而言之,理论上95%的模型都可以转换为TensorRT,条条大路通罗马嘛。只不过有些模型可能转换的难度比较大。如果遇到一个无法转换的模型,先不要绝望,再想想,再想想,看看能不能通过其他方式绕过去。
部署TensorRT的方式,官方提供了三种:
支持FP32、FP16、INT8、TF32等,这几种类型都比较常用。
TensorRT不是没有“缺点”的,有一些小小的缺点需要吐槽一下:
Nvidia Triton使用教程
TensorRT详细入门指北,如果你还不了解TensorRT,过来看看吧! - OLDPAN的文章 - 知乎 https://zhuanlan.zhihu.com/p/371239130
NVIDIA官方文档
TRT安装包下载
【TensorRT系列】1.TensorRT安装教程 - Tramac的文章 - 知乎 https://zhuanlan.zhihu.com/p/379287312
官方安装文档中文翻译
b站教程
TensorRT (TF-TRT)
将 TensorRT 直接集成到 TensorFlow 中。它选择 TensorFlow 图的子图由 TensorRT 加速,同时让图的其余部分由 TensorFlow 本地执行。结果仍然可以照常执行的 TensorFlow 图。
【解决方案】TensorRT安装方法,及测试TensorRT中sample给出的mnist时,出现Could not find x.pgm错误解决方法
官方文档:https://www.tensorflow.org/tfx/serving/docker
亚马逊的中文文档:https://docs.aws.amazon.com/zh_cn/dlami/latest/devguide/tutorial-tfserving.html
官方中文文档
官方介绍
TensorFlow Serving使用指南
TensorFlow Serving入门
tensorflow serving docker
tensorflow serving + docker部署模型
TensorRT Inference Server 的简单教程 - 纳米酱的文章 - 知乎 https://zhuanlan.zhihu.com/p/103263351
GitHub - triton-inference-server/server: The Triton Inference Server provides an optimized cloud and edge inferencing solution.
NVIDIA Triton是什么? - OpenPPL的回答 - 知乎 https://www.zhihu.com/question/507633460/answer/2426145504
推理服务器是一个更高级别的库,可提供跨 CPU 和 GPU 的优化推理。它提供了启动和管理多个模型的功能,以及用于服务推理的 REST 和 gRPC 端点。
Tensorflow Serving官方Docker仓库
TensorFlow Serving 是一个用于机器学习模型 serving 的高性能开源库,可以将训练好的模型直接上线并提供服务。其一个重要特性是:它支持模型热更新与自动模型版本管理,这意味着一旦部署 TensorFlow Serving 后,你再也不需要为线上服务操心,只需要关心你的线下模型训练。
TF Serving采用客户端/服务端模式,其通信方式有两种 gRPC和REST API
————————————————
版权声明:本文为CSDN博主「I’m George」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_40922744/article/details/102872607
Your ONNX model has been generated with INT64 weights, while TensorRT does not natively support INT64. Attempting to cast down to INT32.
GitHub - onnx/tensorflow-onnx: Convert TensorFlow, Keras, Tensorflow.js and Tflite models to ONNX
解决bug
https://blog.csdn.net/wohenibdxt/article/details/124748731
https://aijishu.com/a/1060000000207612
https://www.yanxishe.com/columnDetail/10275
部署环境之:tf2onnx - Convert TensorFlow models to ONNX - 一坨小哥的文章 - 知乎 https://zhuanlan.zhihu.com/p/157477465
手动编译安装TF-TRT
pb_graph = tf.graph_util.convert_variables_to_constants(sess, sess.graph.as_graph_def(), [v.op.name for v in outputs])
with tf.gfile,FastGFile('./pbmodel_name.pb',model='wb') as f:
f.write(pb_graph.SerializeToString())\
https://blog.csdn.net/kunhe0512/article/details/124908238
Nvidia CUDA, cuDNN, TensorRT,驱动以及架构之间的相互兼容关系 - Devymex Wang的文章 - 知乎 https://zhuanlan.zhihu.com/p/438939299