容器下在 Triton Server 中使用 TensorRT-LLM 进行推理
内容提要
TensorRT-LLM是一个简化模型转换为TensorRT格式的工具,支持特定的GPU模型,旨在更轻松地在TensorRT上运行大型模型。文章提供了配置编译环境和生成TensorRT格式模型的说明。它还解释了如何使用Rouge指标测试推理和评估模型的性能。文章还介绍了Triton Server,一个可扩展的推理框架,支持多个后端,包括TensorRT-LLM。它解释了如何使用Triton Server与TensorRT-LLM进行配置和使用,包括模型加载和版本控制。最后,它演示了如何启动推理服务,进行客户端调用,并使用Grafana监控性能指标。
延伸解读
硬件绑定与模型通用性的权衡
TensorRT 引擎针对具体 GPU 型号编译,不同显卡需重新编译,这与 ONNX 的跨平台通用性形成对比。TensorRT-LLM 仅支持 H100、L40S、A100、A30、V100 等型号,部署前需确认硬件兼容性,否则无法使用。
精度退化评估:Rouge 指标的实际应用
文章使用 Rouge 指标对比优化前后模型输出质量。示例中 Baichuan2-7B 经 TensorRT-LLM 编译后,rougeLsum 从 24 降至 22,表明存在精度损失。作者强调只要退化在可接受范围内,且推理速度提升显著,优化仍有价值。这为评估推理优化提供了量化参考。
Triton Server 的 ensemble 设计:实现端到端推理
TensorRT-LLM 本身不处理文本到文本的转换,Triton Server 通过 ensemble 组合 preprocessing、tensorrt_llm 和 postprocessing 三个模型,分别完成分词、推理和反分词,从而提供端到端的推理服务。这种设计避免了客户端自行处理词与索引映射的复杂性。
模型加载与版本控制策略
Triton Server 通过 --model-control-mode 控制模型加载方式,支持 none、explicit、poll 三种模式。版本策略可在 config.pbtxt 中配置,如 all、latest 或 specific,便于多版本共存和灰度发布。这些机制提升了推理服务的灵活性和可维护性。
Q&A
TensorRT-LLM 是什么?它主要解决什么问题?
TensorRT-LLM 是一个简化模型转换为 TensorRT 格式的工具,旨在降低模型转换的复杂度,让大模型更容易跑在 TensorRT 引擎上。
TensorRT-LLM 支持哪些 GPU 型号?
TensorRT-LLM 支持的 GPU 型号包括 H100、L40S、A100、A30、V100 等。
如何配置 TensorRT-LLM 的编译环境?
可以使用 Docker 镜像来运行 TensorRT-LLM,例如:docker run --gpus device=0 -v $PWD:/app/tensorrt_llm/models -it --rm hubimage/nvidia-tensorrt-llm:v0.7.1 bash。
编译生成 TensorRT 格式模型的命令是什么?
在容器环境下执行:python examples/baichuan/build.py --model_version v2_7b --model_dir ./models/Baichuan2-7B-Chat --dtype float16 --parallel_build --use_inflight_batching --enable_context_fmha --use_gemm_plugin float16 --use_gpt_attention_plugin float16 --output_dir ./models/Baichuan2-7B-trt-engines。
如何评估 TensorRT-LLM 编译后模型的性能退化?
可以使用 Rouge 指标评估模型性能,通过运行 summarize.py 脚本分别获取原格式模型和 TensorRT 格式模型的 Rouge 分数,比较精度损失是否在可接受范围内。
Triton Server 是什么?它有哪些主要功能?
Triton Server 是一个可扩展的推理框架,支持多种后端(如 TensorRT、ONNX Runtime、PyTorch 等),提供 HTTP/GRPC 接口、批量推理、流水线编排和实时监控指标等功能。
在 Triton Server 中如何组织模型目录?
通常需要四个目录:preprocessing(预处理)、tensorrt_llm(推理)、postprocessing(后处理)和 ensemble(组合模型),每个目录下包含版本子目录(如 1)和 config.pbtxt 配置文件。
Triton Server 的模型加载控制模式有哪些?
有三种加载模式:none(加载全部模型)、explicit(加载指定模型,通过 --load-model 指定)、poll(定时轮询加载全部模型,通过 --repository-poll-secs 配置周期)。
如何启动 Triton Server 推理服务?
使用 Docker 命令启动,例如:docker run --gpus device=0 --rm -p 38000:8000 -p 38001:8001 -p 38002:8002 -v $PWD/modelops/triton-tensorrtllm:/models hubimage/nvidia-triton-trt-llm:v0.7.1 tritonserver --model-repository=/models/Baichuan2-7B-Chat --disable-auto-complete-config --backend-config=python,shm-region-prefix-name=prefix0_:。
如何通过客户端调用 Triton Server 进行推理?
可以使用 GRPC 接口进行客户端调用,安装 tritonclient[grpc] 后,运行示例脚本 end_to_end_grpc_client.py,指定服务器地址和输入文本即可。