欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > 名人名企 > [machine learning] Triton Server TensorRT

[machine learning] Triton Server TensorRT

2025/3/25 20:39:47 来源:https://blog.csdn.net/zqxf123456789/article/details/146403110  浏览:    关键词:[machine learning] Triton Server TensorRT

一、Triton Server

1.1 架构介绍

Triton是一个高性能的推理软件框架,它既支持GPU推理,又支持CPU推理,既能部署在server上,也能部署在端侧设备上。同时,它还支持多种机器学习框架的推理引擎作为backend以及它们对应的模型格式,比如:

backend(inference engine)model format
TensorRT.plan
ONNX Runtime.onnx
TensorFlow.graphdef / .savedmodel
PyTorch.pt
OpenVINO.xml & .bin
Python.py

Triton的整个架构如下图所示:

client通过HTTP/RESTGRPC请求把输入量发送给Triton server,Triton server收到请求后调用对应的backend进行推理,然后把推理结果返回给client。


1.2 Triton Server的主要特性:

  • Dynamic Batching: 一般地讲,batch size越大,GPU利用率越高。Triton可以在限定的延迟要求范围内,把来自不同client的多路请求整合成一个batch,然后一起推理,从而提高整体的吞吐量。
  • Concurrent Execution: Triton可以在一个GPU上同时运行多个不同模型或者同一个模型的多个副本,只要这些模型的大小总和没有超过GPU的显存容量。通过运行同一个模型的多个副本,可以有效降低对该模型请求的响应延迟。
  • Model Analyzer: 对于当前运行的所有模型,Triton会自动地找到运行这些模型的最佳配置,比如:batch size、延迟、吞吐量以及显存使用。通过这样,使得运行的所有模型一直处于最高效的状态。

1.3 Ensemble Models

一个请求可以让Triton推理一个模型,也可以让Triton推理几个模型组成的pipeline,也就是Ensemble Models。用户可以定义一个配置文件,把多个模型或者多个处理组装成一个pipeline,比如:pre-processing > inference > post-processing,这样一个请求就能得到跑完所有模型和处理的响应结果。在pipeline中,模型和模型之间的数据传输完全是由Triton负责,所以让Triton去跑完pipeline中的所有模型和处理肯定是要比单独一个模型一个请求来的快速高效。

1.4 配置文件

Triton中一个模型或者一个处理对应一个文件目录:

  <model-repository-path>/<model-name>/config.pbtxt1/model.plan

config.pbtxt就是配置文件,1/是模型文件子目录,model.plan是模型文件。模型文件子目录必须是数字而且不能是0开头,所以会看到很多项目里都是1/。模型文件子目录存放的就是模型文件,比如model.onnxmodel.pt等。

单个模型的配置文件一般是下面的格式:

name: "decoder"
backend: "onnxruntime"
default_model_filename: "decoder.onnx"max_batch_size: 640
input [
...
]output [
...
]dynamic_batching {preferred_batch_size: [ 16, 32 ]}instance_group [{count: 2kind: KIND_GPU}
]

backend: "onnxruntime"就是指定backend,如果是其他的模型格式,比如PyTorch,TensorRT和TensorFlow,对应的就是pytorchtensorrttensorflow

Ensemble Models的配置文件一般是下面的格式:

name: "attention_rescoring"
platform: "ensemble"
max_batch_size: 64 #MAX_BATCHinput [...
]output [...
]ensemble_scheduling {step [{model_name: "feature_extractor"...},{model_name: "encoder"...},{model_name: "scoring"...}]
}

这里就没有指定backend,因为pipeline里面不同的模型可能用的是不同的backend,需要指定的是platform: "ensemble"。另外有些backend也需要指定platform来区分模型的类别,比如TensorFlow backend,根据模型的类别platform需要设置为tensorflow_savedmodel或者tensorflow_graphdef

1.5 client请求

client请求调用可以参考WeNet项目:https://github.com/wenet-e2e/wenet/blob/main/runtime/gpu/client/client.py。WeNet里用的GRPC client。

1.6 Triton Server的启动

Triton Server的启动可以参考WeNet项目:https://github.com/wenet-e2e/wenet/blob/main/runtime/gpu/tensorrt/run_streaming_small_model.sh#L118


二、TensorRT

TensorRT是专门适用于NVIDIA GPU推理加速的SDK。它包括两部分,一个是模型优化器optimizer,另一个是推理引擎runtime。
在这里插入图片描述

optimizer就是通过一些优化手段把.onnx文件转成.plan文件。转换过程可以参考K2项目:https://github.com/k2-fsa/sherpa/blob/master/triton/scripts/build_trt.sh

从导出ONNX文件到转成.plan文件,再到启动Triton Server,一整套流程可以参考K2项目:https://github.com/k2-fsa/sherpa/blob/master/triton/scripts/build_wenetspeech_zipformer_offline_trt.sh



参考资料:

1.https://www.supermicro.com/en/glossary/triton-inference-server
2.https://qiita.com/Getty708/items/b802a54f1f2e9926dfa6
3.https://docs.nvidia.com/deeplearning/triton-inference-server/user-guide/docs/backend/README.html#where-can-i-find-all-the-backends-that-are-available-for-triton
4.https://docs.nvidia.com/deeplearning/triton-inference-server/user-guide/docs/backend/docs/backend_platform_support_matrix.html
5.https://docs.nvidia.com/deeplearning/triton-inference-server/user-guide/docs/backend/README.html#backends
6.https://docs.nvidia.com/deeplearning/triton-inference-server/user-guide/docs/user_guide/model_repository.html#model-versions
7.https://vilsonrodrigues.medium.com/a-friendly-introduction-to-tensorrt-building-engines-de8ae0b74038

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词