LLM推理吞吐上不去?TensorRT-LLM 推理加速实战
【免费下载链接】TensorRT-LLMTensorRT LLM provides users with an easy-to-use Python API to define Large Language Models (LLMs) and supports state-of-the-art optimizations to perform inference efficiently on NVIDIA GPUs. TensorRT LLM also contains components to create Python and C++ runtimes that orchestrate the inference execution in a performant way.项目地址: https://gitcode.com/GitHub_Trending/te/TensorRT-LLM
你在 NVIDIA GPU 上跑 LLM 在线服务,大概率遇到过这种体验:prefill(一次处理完全部输入的阶段)很快,decode(逐 token 生成的阶段)很慢,批大小加上去吞吐也不涨。TensorRT-LLM 推理加速就是冲着这个卡点来的:一套手写 CUDA 内核库、一层 KV cache 管理、一个开箱即用的 trtllm-serve 服务工具,让你不改自己的代码也能把 decode 阶段拉起来。
第一刀砍在 decode:XQA 内核怎么干
给任何 LLM 服务做个 profile,decode 几乎都是内存带宽受限的负载:每步只产出一个 token,矩阵乘太小喂不饱 GPU,注意力还得反复去 HBM 里捞 KV cache(存放已生成 token 中间结果的缓存)。
仓库在 cpp/kernels/xqa/ 下写了个专门的内核 XQA(eXtended Quality Attention),目标就是生成阶段的 MQA(多头查询注意力,多个头共享同一份 K/V)和 GQA(分组查询注意力,一组头共享 K/V)结构。思路很直白:用 tensor core 算,用 TMA(张量内存加速器,硬件 DMA 通道)搬数据,顺路砍掉数据搬运和格式转换。
效果不是营销话术。仓库里 XQA 内核博客 附了实测表:H200 上跑 Llama-70B、FP8(8 位浮点量化)格式,在同样的单 token 延迟预算内,启用 XQA 吞吐最高提升2.4x。
TensorRT-LLM 推理加速 XQA 内核吞吐与延迟对比曲线
换成正确路径后,这张图里 Y 轴是 TPOT(单 token 输出时间,越低越好):启用 XQA 之后曲线明显走平,意思是批量加大时单 token 耗时不再陡涨——这才是"同等体验下多服务用户"的实际含义。
KV cache 与 MoE:后台的两个重量级
内核只是一半。decode 阶段每个请求都要反复读 KV cache,怎么组织它决定显存占用和调度余地。
看 tensorrt_llm/runtime/kv_cache_manager_v2/ 目录:_block_radix_tree.py 把 KV 页组织成基数树(压缩前缀树),共享同一段 system prompt 的请求直接复用同一批页;_eviction_controller/ 管池子满了怎么淘汰;整层用 mypyc 编译,因为它每个调度步都会被调用,吃不起解释器开销。
如果你的模型是 MoE(混合专家,路由把每个 token 分给少数专家网络),专家调度和跨 GPU 通信就是新的瓶颈。
cpp 层的 mixtureOfExperts 模块、examples/wide_ep/ 目录专门做专家并行(EP,把专家摊到多卡),README 的技术博客清单里还有 alltoall(专家间换 token 的集合通信原语)优化的持续记录。这种按模型结构做的针对性调优,是它区别于通用 serving 框架的地方。
在 NVIDIA GPU 上部署 LLM 服务:两步到第一条响应
不需要自己编译内核库,官方容器里全装好了,关键点只有一个:把 GPU 和内存限制交给容器。
docker run --rm -it --ipc host --gpus all --ulimit memlock=-1 -p 8000:8000 nvcr.io/nvidia/tensorrt-llm/release:x.y.z容器里执行trtllm-serve "TinyLlama/TinyLlama-1.1B-Chat-v1.0"就能起一个 OpenAI 兼容的服务,有预量化好的 checkpoint 直接换上去,省掉运行时量化。发一条请求验证:
curl -X POST http://localhost:8000/v1/chat/completions \ -H "Content-Type: application/json" \ -d '{"model": "TinyLlama/TinyLlama-1.1B-Chat-v1.0", "max_tokens": 32}'拿到返回,说明从内核到服务链路全通了。
上生产前容易踩的三个坑
- 量化 checkpoint 优先。仓库 tensorrt_llm/quantization/ 下有量化工具和配置模板,离线量化好的模型直接部署,比运行时转换稳。
- 先用官方工具跑基线。trtllm-bench 是仓库内置的基准命令,developer-guide 里单独写了 benchmark 方法论,先复现出数字,再判断问题出在内核还是配置。
- 📌遥测要表态。trtllm-serve 等命令默认收集匿名遥测,接受不了就用
--no-telemetry关掉,收集字段在 README 里逐条列了,可审计。
部署指南 里按模型各有一篇配方,DeepSeek-R1、Qwen3、Kimi 都覆盖到了,碰到具体配置先翻那里。打开终端,把容器拉起来,发出第一条请求——剩下的就是调参了。
【免费下载链接】TensorRT-LLMTensorRT LLM provides users with an easy-to-use Python API to define Large Language Models (LLMs) and supports state-of-the-art optimizations to perform inference efficiently on NVIDIA GPUs. TensorRT LLM also contains components to create Python and C++ runtimes that orchestrate the inference execution in a performant way.项目地址: https://gitcode.com/GitHub_Trending/te/TensorRT-LLM
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考