TensorRT-LLM 架构#

TensorRT-LLM 是一个工具包,用于组装优化的解决方案以执行大型语言模型 (LLM) 推理。 它提供了一个模型定义 API 来定义模型并为 NVIDIA GPU 编译高效的 TensorRT 引擎。 它还包含 Python 和 C++ 组件,用于构建运行时以执行这些引擎,以及用于 Triton 推理服务器的后端,以便轻松地为 LLM 创建基于 Web 的服务。 TensorRT-LLM 支持多 GPU 和多节点配置(通过 MPI)。

作为用户,创建推理解决方案的第一步是定义您自己的模型或选择预定义的网络架构(有关 TensorRT-LLM 支持的模型列表,请参阅 模型)。 定义后,必须使用训练框架训练该模型(训练不在 TensorRT-LLM 的范围内)。 对于预定义的模型,可以从各种提供商处下载检查点。 为了说明这一点,TensorRT-LLM 中的许多示例都使用从 Hugging Face hub 获得并使用 NVIDIA NemoPyTorch 训练的模型权重。

配备模型定义和权重后,用户必须使用 TensorRT-LLM 的模型定义 API 以 TensorRT 可以编译成高效引擎的方式重新创建模型。 为了便于使用,TensorRT-LLM 已经支持一些标准模型。

TensorRT-LLM 与用于描述模型的模型定义 API 一起,为用户提供组件来创建执行高效 TensorRT 引擎的运行时。 运行时组件提供 beam-search,以及广泛的采样功能,例如 top-K 和 top-P 采样。 完整的列表可以在 C++ GPT 运行时 的文档中找到。 建议使用 C++ 运行时。

TensorRT-LLM 还包括 NVIDIA Triton 推理服务器的 Python 和 C++ 后端,用于组装 LLM 在线服务的解决方案。 C++ 后端实现飞行中批处理,如 Executor API 文档中所述,并且是推荐的后端。

模型权重#

TensorRT-LLM 是一个用于 LLM 推理的库,因此要使用它,您需要提供一组经过训练的权重。 您可以使用您自己在诸如 NVIDIA NeMo 之类的框架中训练的模型权重,或者从 Hugging Face Hub 之类的存储库中提取一组预训练权重。