TensorRT 推理加速引擎

TensorRT

把训练好的模型重新打包压缩,让它在显卡上跑得更快、更省显存。

人工智能与模型出现时间 · 2016 年前后随显卡免费提供使用,不额外收费;收益体现为同等硬件承载更多请求。推理加速算子融合量化低延迟
看官方文档

01 它是干嘛的

TensorRT 是面向推理(也就是「使用模型」)的加速引擎。它把一个训练好的模型编译成针对特定显卡深度优化的「引擎」,通过算子融合、精度量化和内核自动调优,把延迟和显存占用降下来,让同样的硬件能承载更多请求。

02 为什么会有它

2016 年之前:模型训练完就能用,但线上跑起来又慢又贵

训练出来的模型直接上线,往往慢得让人意外:用户等好几秒才拿到结果,服务器要堆很多台才能扛住访问量,机房账单居高不下。原因是训练框架为了通用,做了大量「没说出口的额外工作」。

比如一个简单的运算链,框架会把它拆成很多个小步骤,每一步都要把中间结果写进显存再读出来,读写次数一多,时间就全耗在「搬数据」而不是「算数据」上。

TensorRT 的思路是「为部署而重写」:既然上线后模型不会变,那就提前把它编译成一份只为这台显卡优化的方案——该合并的步骤合并、该降低的精度降低、该调优的参数调优。模型没变,速度却能提升好几倍。

03 它怎么工作

TensorRT 拿到模型后会做一趟「编译」:把零散的小运算合并成大的、把高精度的数字换成更省的低精度、再为这块具体的显卡挑选最快的实现方式,最后产出可直接加载的推理引擎。

大模型是怎么「一个字一个字」把话说出来的自回归循环:把新词接回去,再猜下一个你的输入一句话 / 一段文档切成 token大约半个汉字一块大模型几十亿到上万亿参数按概率挑一个温度高更发散、低更保守输出一个词然后接回输入继续猜模型一次只算「下一个词最可能是什么」,所以输出越长 = 循环次数越多 = 越慢也越贵。算力消耗集中在这里每次循环处理一个 token
这张图画的是模型一个字一个字生成回答的过程,请把它理解为「同一个循环被重复很多次」:每生成一个 token,背后都是一大堆矩阵运算。TensorRT 要做的,就是让这套被重复千万次的运算每次都更快一点。

让推理变快的三招:算子融合、精度量化、内核自动调优

  1. 1
    ① 导入模型并解析结构

    读取 ONNX 等格式的模型文件,把它拆解成一张「算子和连接关系」的计算图。

  2. 2
    ② 算子融合

    把能合并的小运算(如卷积加激活加归一化)合成一个更大的算子,减少中间结果反复读写显存,这是提速的关键一招。

  3. 3
    ③ 精度量化

    把模型参数从高精度浮点(FP32)压成半精度(FP16)甚至八位整数(INT8)。同样的硬件上,算得更快、占的显存更少。

  4. 4
    ④ 内核自动调优

    同一个运算有很多种实现算法,TensorRT 会在目标显卡上实测各种方案,挑出最快的那一种并记录下来。

  5. 5
    ⑤ 生成引擎并加载部署

    输出一份针对该显卡优化的引擎文件,线上加载后即可高速推理,无需再编译。

04 谁在用它

线上推理服务降本

同一个模型推理提速数倍,意味着同样的显卡能服务更多用户,直接降低单次成本。

实时交互场景

语音识别、实时翻译、推荐打分等对延迟敏感的场景,把响应时间压到毫秒级。

边缘与嵌入式部署

算力有限的车载、机器人、摄像头设备上,用低精度量化换取可运行的体积与速度。

大模型推理优化

对语言模型的矩阵运算做融合与量化,缓解显存占用并提高每秒生成的字数。

05 怎么用

通常不需要写代码:用命令行工具把模型转成引擎即可;要进一步压榨性能再写 API 调优。

  1. 01准备一个训练好的模型,导出为 ONNX 等通用交换格式。
  2. 02用官方命令行工具 trtexec 把模型编译成引擎,先不量化跑通再说。
  3. 03确认可用后逐步开启 FP16、再做 INT8 量化,用校准数据保证精度损失可接受。
  4. 04在代码中加载生成的引擎文件,构造输入、执行推理、取回输出。
  5. 05用推理能力对比优化前后的延迟与准确率,确认收益与代价。
用命令行把模型编译成推理引擎bash
# 把 ONNX 模型转成 TensorRT 引擎,并启用 FP16 半精度
trtexec --onnx=model.onnx \
        --saveEngine=model-fp16.plan \
        --fp16 \
        --workspace=4096

# 进一步做 INT8 量化(需先用校准数据生成校准表)
trtexec --onnx=model.onnx \
        --saveEngine=model-int8.plan \
        --int8 \
        --calib=calibration.cache

避坑提示

  • !量化一定伴随精度损失,务必用真实业务数据跑一遍对比,别只看速度上的提升。
  • !引擎文件与显卡型号、TensorRT 版本强绑定,换设备往往要重新编译,别当成可随意复制的模型文件。
  • !先跑通精度不受损的 FP16,再考虑 INT8;一上来就重度量化,排查问题会非常痛苦。

06 关键概念

推理(Inference)
让训练好的模型对输入给出输出,也就是线上「使用模型」的过程。
算子融合
把多个小运算合并成一个大运算,减少中间结果反复读写显存的开销。
量化
把高精度数字换成更省的低精度数字,用可接受的精度损失换速度和显存。
INT8 / FP8
用八位整数或八位浮点表示原本更占空间的数字,是常见的低精度方案。

07 容易混淆的对比

ONNX Runtime跨厂商推理框架,通用性好、上手简单,但深度优化程度不及针对显卡定制的方案。
开源推理引擎(如 vLLM、llama.cpp)专注大模型推理且有独特优化,在通用小模型上仍常以 TensorRT 作为加速后端。
图软件图鉴

纯静态站点,无后端、无追踪。内容为中文原创撰写,用于帮助非技术读者理解主流软件产品。

关于本站

全部内容在构建时生成
产品名称与商标归各自公司所有

© 2026 软件图鉴Nuxt 4 · Vue 3 · Tailwind 4 · 纯静态