FasterTransformer 项目介绍
FasterTransformer 是一个由 NVIDIA 维护的开源项目,旨在为变压器(Transformer)模型的编码器和解码器组件提供高度优化的实现。尽管它会继续保持可用,但其开发已经转移到 TensorRT-LLM,推荐开发者利用 TensorRT-LLM 获取最新的推理改进。
项目概述
在自然语言处理(NLP)中,编码器和解码器是两个核心组件,而变压器层已经成为这两者最流行的架构。FasterTransformer 提供了高度优化的变压器层,用于在推理阶段提升性能。在 Volta、Turing 和 Ampere 等 GPU 上,当数据和权重使用 FP16 精度时,它会自动调用 Tensor Cores 的计算能力。
FasterTransformer 构建在 CUDA、cuBLAS、cuBLASLt 和 C++ 之上,支持 TensorFlow、PyTorch 和 Triton backend 等框架,并提供相应的示例代码来展示如何集成和评估性能。
支持矩阵
FasterTransformer 支持多种深度学习模型和框架,关于支持的模型和特性的详细信息,请参考下表:
模型 | 框架 | FP16 | INT8(Turing后) | 稀疏性(Ampere后) | Tensor 并行 | Pipeline 并行 | FP8(Hopper后) |
---|---|---|---|---|---|---|---|
BERT | TensorFlow | 是 | 是 | - | - | - | - |
BERT | PyTorch | 是 | 是 | 是 | 是 | 是 | - |
XLNet | C++ | 是 | - | - | - | - | - |
Decoder | TensorFlow | 是 | - | - | - | - | - |
GPT/OPT | PyTorch | 是 | - | - | 是 | 是 | 是 |
Swin Transformer | PyTorch | 是 | 是 | - | - | - | - |
ViT | PyTorch | 是 | 是 | - | - | - | - |
注:FasterTransformer 支持的所有模型都可以在 C++ 环境中运行。
性能表现
FasterTransformer 在多种硬件配置上对 BERT 和 GPT 等模型进行了性能测试。在 TensorFlow 和 PyTorch 环境下,相较于其他优化方法,FasterTransformer 能显著提升推理速度。例如,使用 FP16 精度并结合 INT8 量化可在大型批次和序列长度情况下提供高达 5 倍的加速。
BERT 基础性能
- 在 TensorFlow 上,使用 FasterTransformer 可实现 3 倍的加速。
- 在 PyTorch 上,基于小批量的自定义扩展可实现 4 至 6 倍的加速。
解码与翻译性能
- 在 TensorFlow 和 PyTorch 中,FasterTransformer 的解码器操作符在 FP16 下的性能比基础框架快得多,拥有 1.5 到 18 倍的加速。
高级功能
FasterTransformer 提供了一些环境变量来辅助调试和测试,如日志级别控制和 NVTX 标签插入,以帮助剖析程序性能。
发行说明
FasterTransformer 不断更新,支持的模型和特性不断增加。最新的更新包括支持 GPT MoE、FP8、DeBERTa、BLOOM 等模型,并在一些模型中引入了新的优化方法,如生成的提前停止和开源贡献的错误修复。
已知问题
一些已知问题包括无法在 TensorFlow 2.10 上编译,以及由于累积的日志概率导致 TensorFlow 和运算符之间的解码结果不同。为了避免这些问题,开发者可尝试使用更兼容的编译器版本。