在单张 H200 GPU 上使用 INT4 AWQ 的 Falcon-180B,性能比 A100 上的 Llama-70B 快 6.7 倍#

H200 的大容量和高内存带宽,与 TensorRT-LLM 的优化相结合,最大限度地提高了推理性能。

在单张 H200 上使用 INT4 AWQ 的 Falcon-180B#

Falcon-180B,是最大和最准确的可用开源模型之一,可以在单张 H200 GPU 上运行。

H200 上 141GB 的内存,与运行 INT4 AWQ 与 FP8 的 TensorRT-LLM 相结合,允许整个大型语言模型安装在单个 GPU 上,而以前需要八个 A100。H200 Falcon-180B 提供高达 800 个令牌/秒的速度并保持高精度。

模型性能: H200 的大容量和高内存带宽,利用 INT4 AWQ 来减少内存占用,从而在单个 GPU 上为 Falcon-180B 提供出色的性能。

Falcon-180B performance comparison

初步测量的性能,可能会发生变化。TP1 并不代表 H200 上的峰值性能。 TensorRT-LLM v0.7a | Falcon-180B | 1xH200 TP1 | INT4 AWQ | BS:(依次)256、128

模型准确性: 通常,量化可能对模型的准确性产生不利影响,但是,TensorRT-LLM 的 AWQ 将模型的内存占用减少了 4 倍,同时保持了高精度。

Falcon-180B accuracy comparison

初步测量的准确性,可能会发生变化。 TensorRT-LLM v0.7a | Falcon-180B | 1xH200 TP1 | INT4 AWQ

INT4 Activation-aware Weight Quantization (AWQ) (Lin et al., 2023) 是一种量化技术,它根据 LLM 权重的相对重要性将其压缩到 4 位,并在 FP16 中执行计算。这使得 AWQ 比其他 4 位方法保留更高的精度并减少内存使用,但需要能够高效处理精度变化的特殊内核。

TensorRT-LLM 为 AWQ 实现了自定义内核,并通过在 Hopper GPU 上执行 FP8 计算而不是标准 FP16,将该技术向前推进了一步。

类似的在 TensorRT-LLM 中运行量化 Falcon-180B 的示例可在 examples/falcon 中找到。

H200 上的 Llama-70B 比 A100 快 6.7 倍#

TensorRT-LLM 改进了其分组查询注意力 (GQA) 内核,在生成阶段,与 TensorRT-LLM v0.5 相比,Llama-70B 提高了高达 2.4 倍,实现了超过 3,800 个令牌/秒/gpu,并且比 A100 快高达 6.7 倍

H200 6.7x A100

Llama-70B H200 vs A100 comparison

模型

GPU

输入长度

输出长度

吞吐量(输出令牌/秒/GPU)

Llama-70B

1

128

128

3,803

8

3,803

1

2048

2,941

8

3,163

1

4096

1,946

8

2,263

初步测量的性能,可能会发生变化。 TensorRT-LLM v0.7a | Llama2-70B | 1xH200 = TP1, 8xH200 = max TP/PP/DP config | FP8 | BS:(依次)960、960、192、560、96、640

TensorRT-LLM GQA 现在在 H200 上快 2.4 倍

Llama-70B H200 December vs Oct.

初步测量的性能,可能会发生变化。 TensorRT-LLM v0.7a vs TensorRT-LLM v0.6a | Llama2-70B | 1xH200 TP1 | FP8 | BS 192

Grouped Query Attention (GQA) (Ainslie et al., 2023),在 Llama-70B 中使用,是多头注意力 (MHA) 的变体,它将键值 (KV) 头分组在一起,导致 KV 头比查询 (Q) 头少。 TensorRT-LLM 具有 MHA 的自定义实现,该实现支持 GQA、多查询注意力 (MQA) 和标准 MHA。它利用 Tensor Cores,包括在生成阶段,并在 NVIDIA GPU 上提供出色的性能。

结束语#

这些改进将很快发布在 main 分支中,并将包含在 v0.7 和 v0.8 版本中。

类似的在 TensorRT-LLM 中运行 Llama-70B 的示例发布在 examples/llama 中。

有关 H200 的更多信息,请参见 H200 发布博客

吞吐量计算为每个 GPU 每秒的输出令牌数。out_tps=output_seqlen*batch_size/total_latency/tp

词汇表: | DP = 数据并行 ISL = 输入序列长度 | PP = 流水线并行 | OSL = 输出序列长度 | OOM = 内存不足 | TP = 张量并行