使用TRT-LLM中的SOTA量化技术加速推理

大型语言模型(LLMs)的部署和推理速度常常受到内存容量、内存带宽和计算能力的限制。量化作为一种关键策略,通过使用如FP8等低精度数据类型来表示权重和激活值,以解决这些瓶颈问题。

在本博客中,我们提供了TensorRT-LLM中量化功能的概述,分享了基准测试,并提供了根据您的具体用例选择适当量化方法的最佳实践。

TensorRT-LLM中的量化

TensorRT-LLM 提供了一个一流的统一量化工具包,可以显著加速在 NVIDIA 硬件上的 DL/GenAI 部署,同时保持模型准确性。该工具包设计时考虑了易用性。您可以按照此用户指南,用几行代码对支持的 LLMs进行量化。我们目前专注于提供最先进的训练后量化 (PTQ),并将在不久的将来扩展到更多的模型优化技术。

基准测试

性能

在以下基准测试中,我们重点展示了几种流行模型在小批量大小下的加速情况,且未施加延迟限制。需要注意的是,在应用程序中存在延迟限制的场景中,TRT-LLM 可以实现更大的性能提升。以 LLaMA-v2-7B 为例,当第一个令牌的延迟被限制在 500 毫秒以下时,使用 FP8 量化和批量大小为 16 的情况下,与 H100 上的 FP16 相比,实现了显著的 2.3 倍推理加速

模型

批量大小

加速(FP8 对比 FP16)

加速(INT8 SQ 对比 FP16)

GPT-J

1

1.40x

1.40倍

GPT-J

8

1.44倍

1.30倍

LLaMA-v2-7B

1

1.51x

1.47倍

LLaMA-v2-7B

8

1.40x

1.32倍

*上述基准测试是在H100 80GB上运行的,输入长度=1024,输出长度=128,TP=1。

准确度

模型

量化方法

MMLU 基线 (FP16)

MMLU 后量化

MMLU 损失

Falcon-180B

FP8

70.4

70.3

0.14%

INT8-SQ

70.4

68.6

2.56%

INT4-AWQ

70.4

69.8

0.85%

猎鹰-40B

FP8

56.1

55.6

0.89%

INT8-SQ

56.1

54.7

2.50%

INT4-AWQ

56.1

55.5

1.07%

LLaMA-v2-70B

FP8

69.1

68.5

0.87%

INT8-SQ

69.1

67.2

2.75%

INT4-AWQ

69.1

68.4

1.01%

MPT-30B

FP8

47.5

47.4

0.21%

INT8-SQ

47.5

46.8

1.47%

INT4-AWQ

47.5

46.5

2.11%

选择正确的量化方法的最佳实践

量化方法包括三个主要组成部分:

  1. 重量精度格式

  2. 激活精度格式

  3. 校准算法

通常,在小批量推理场景(批量大小 ≤ 4)中,关键考虑因素是内存带宽,这使得仅量化权重的方法成为首选。相反,对于大批量推理场景,例如服务场景(批量大小 ≥ 16),内存带宽和计算密度都成为关键因素。因此,建议选择同时量化权重和激活的量化方法。对于批量大小 ≥ 16,量化方法的选择可以因模型而异。我们建议优先使用FP8,因为我们通常认为它提供了最佳的性能和准确性。如果结果不符合您的特定用例,您可以进一步尝试Int8 SmoothQuant(Int8 SQ),然后是AWQ和/或GPTQ。

根据具体的使用场景,用户可能对精度影响和校准时间有不同的容忍度。下表总结了在选择量化方法时需要考虑的权衡*。您还可以在我们的文档中了解更多关于精度格式的信息。

量化方法

性能改进(批量大小 <= 4)

性能改进(批量大小 >= 16)

准确性影响

校准时间**

FP8 (W8A8)

中等

中等

非常低

分钟

Int8 SQ (W8A8)

中等

中等

中等

分钟

仅Int8权重(W8A16)

中等

非必需

仅权重(W4A16)

非必需

Int4 AWQ (W4A16)

数十分钟

Int4 GPTQ

数十分钟

Int4-FP8 AWQ (W4A8)

中等

数十分钟

* 性能和影响是在10多个流行的LLMs上测量的。我们将跟进更多的数据点。 ** 校准时间取决于实际模型的大小。

我们注意到,TensorRT-LLM 还为 KV 缓存提供了 INT8 和 FP8 量化。KV 缓存与普通激活不同,因为在大批量或长上下文长度的情况下,它占用了不可忽视的持久内存。如果您在 Hopper 和 Ada GPU 上使用 KV 缓存,我们建议使用 FP8 KV 缓存而不是 Int8,因为在大多数测试案例中,前者的精度影响比后者低。当从 FP16 KV 缓存切换到 FP8 KV 缓存时,它还使您能够在 H100 机器上运行 2-3 倍大的批量大小,例如 GPT-J 模型,这进一步带来了约 1.5 倍的性能提升。

接下来会发生什么

TensorRT-LLM 继续改进我们的量化功能,例如 Int4-FP8 AWQ (W4A8) 的公开示例和更多模型支持。请继续关注我们即将发布的版本。