容器下使用 Triton Server 和 TensorRT-LLM 进行大模型推理

💡 原文中文,约12000字,阅读约需29分钟。
📝

内容提要

TensorRT-LLM是一个用于将模型转换为TensorRT格式的工具,支持多种显卡。使用TensorRT-LLM编译模型后,模型的RougeLsum指标有所下降,但推理速度有较大提升。Triton Server是一个支持多种后端的推理框架,包括TensorRT-LLM,可以进行批量推理和流水线并行推理。可以通过Triton Server的GRPC接口进行推理测试,并通过监控指标评估推理质量。

🔎

延伸解读

精度与速度的权衡

文章通过对比实验显示,Baichuan2-7B-Chat 模型经 TensorRT-LLM 编译后,RougeLsum 指标从 24.09 下降至 22.04,表明模型生成质量有所降低。但推理总延迟从 31.27 秒减少到 28.36 秒,速度提升明显。这提示读者,在追求推理加速时,必须评估精度损失是否在可接受范围内,不能盲目优化。

硬件兼容性限制

TensorRT-LLM 仅支持特定 GPU 型号,如 H100、L40S、A100、A30、V100 等。这意味着并非所有 Nvidia 显卡都能受益于该优化。读者在部署前需确认自身硬件是否在支持列表中,否则可能无法使用 TensorRT-LLM 进行推理加速。

Triton Server 的流水线设计

文章中的 Triton Server 配置采用 ensemble 模型,将预处理、TensorRT-LLM 推理和后处理组合成端到端流程。这种设计解决了 TensorRT-LLM 本身不支持 text2text 的问题,通过预处理分词和后处理去分词,使客户端无需处理词与索引的映射,简化了调用逻辑。

监控与版本管理

Triton Server 提供 Metrics 接口(默认 8002 端口)用于监控推理请求成功与失败次数,并可导入 Grafana 面板可视化。同时,通过 config.pbtxt 中的 version_policy 可控制模型版本加载策略,如全部、最新 n 个或指定版本,便于模型迭代和回滚。

❓

Q&A

TensorRT-LLM 是什么?它主要解决什么问题?

TensorRT-LLM 是一个将模型转换为 TensorRT 格式的工具,目标是降低模型转换为 TensorRT 格式的复杂度,让大模型更容易跑在 TensorRT 引擎上。

TensorRT-LLM 支持哪些 GPU 型号?

TensorRT-LLM 仅支持 H100、L40S、A100、A30、V100 等显卡。

使用 TensorRT-LLM 编译模型后,推理速度和精度有什么变化?

编译后模型的 RougeLsum 指标有所下降(例如从 24 降到 22),说明能力会有退化,但推理速度有较大提升。只要精度损失在可接受范围内,仍然可以使用。

Triton Server 支持哪些后端?

Triton Server 支持多种后端,包括 tensorrt、onnxruntime、pytorch、python、vllm、tensorrtllm 等,还可以自定义后端,只需要相应的 shared library 即可。

在 Triton Server 中如何实现端到端的文本推理?

通过 ensemble 模型将 preprocessing、tensorrt_llm、postprocessing 三个模型融合,实现 text2text 的推理。preprocessing 对输入进行 Tokenizing,postprocessing 对输出进行 Detokenizing,从而提供端到端的推理能力。

Triton Server 的模型加载控制模式有哪些?

Triton Server 通过参数 --model-control-mode 控制模型加载方式,有三种模式:none(加载目录下的全部模型)、explicit(加载指定模型,通过 --load-model 指定)、poll(定时轮询加载全部模型,通过 --repository-poll-secs 配置轮询周期)。

如何通过 Triton Server 的 GRPC 接口进行推理测试?

安装 tritonclient[grpc] 后,可以使用示例客户端脚本 end_to_end_grpc_client.py,指定服务地址和端口(如 -u 127.0.0.1:38001)和输入文本进行推理测试。

Triton Server 提供了哪些监控指标?如何查看?

Triton Server 提供推理指标,监听在 8002 端口(示例中为 38002),可以通过 curl 访问 /metrics 接口查看,如 nv_inference_request_success 和 nv_inference_request_failure 等指标。

🏷️

标签

➡️

继续阅读