赞
踩
这是讨论 NVIDIA Triton 推理服务器的 FasterTransformer (FT) 库的两部分系列的第一部分,该库是用于任何规模(多达数万亿个参数)的变压器分布式推理的最快库之一。它提供了 FasterTransformer 的概述,包括使用该库的好处。
加入 NVIDIA Triton 和 NVIDIA TensorRT 社区,了解最新的产品更新、错误修复、内容、最佳实践等。
使用 Triton 推理服务器部署 GPT-J 和 T5(第 2 部分)是一个指南,它说明了如何使用 Triton 推理服务器中的 FasterTransformer 库以具有张量并行性的最佳方式为 T5-3B 和 GPT-J 6B 模型提供服务。
Transformer 是当今最具影响力的 AI 模型架构之一,正在塑造未来 AI 研发的方向。它们最初是作为自然语言处理 (NLP) 的工具而发明的,现在几乎用于所有人工智能任务,包括计算机视觉、自动语音识别、分子结构分类和金融数据处理。考虑到这种广泛使用的是注意力机制,它显着提高了模型的计算效率、质量和准确性。
具有数千亿个参数的大型基于 transformer 的模型就像一个巨大的百科全书和大脑,其中包含有关它所学一切的信息。他们以独特的方式结构化、表示和总结所有这些知识。拥有具有大量先验知识的此类模型使我们能够使用新的强大的单次或少次学习技术来解决许多 NLP 任务。
由于它们的计算效率,transformers 可以很好地扩展——通过增加网络的规模和训练数据的数量,研究人员可以改进观察并提高准确性。
然而,训练如此大的模型并非易事。这些模型可能需要比一个 GPU 供应更多的内存——甚至数百个 GPU。值得庆幸的是,NVIDIA 研究人员已经创建了强大的开源工具,例如 NeMo 框架,可以优化训练过程。
快速和优化的推理使企业能够充分发挥这些大型模型的潜力。最新研究表明,增加模型和数据集的大小可以提高此类模型在不同领域(NLP、CV 等)下游任务上的质量。
同时,数据表明这种技术在多领域任务中也有效。 (例如,参见 OpenAI 的 DALLE-2 和 Google 的 Imagen 等关于文本到图像生成的研究论文。)依赖于大型模型“冻结”副本的 p-tuning 等研究方向甚至增加了拥有稳定且优化的推理管道。此类大型模型的优化推理需要分布式多 GPU 多节点解决方案。
大型变压器的加速推理
NVIDIA Triton 推理服务器是一种开源推理服务软件,可帮助标准化模型部署和执行,在生产中提供快速且可扩展的 AI。 Triton 是一种稳定且快速的推理服务软件,允许您使用预烘焙pre-baked 的 docker 容器以简单的方式运行 ML/DL 模型的推理,仅使用一行代码和简单的类似 JSON 的配置。
Triton 支持使用多个后端的模型,例如 PyTorch、TorchScript、Tensorflow、ONNX Runtime、OpenVINO 等。它有一个后端,用于基于大型变压器的模型,称为 NVIDIA 的 FasterTransformer (FT)。 FT 是一个实现加速引擎的库,用于推理基于变换器的神经网络,特别强调大型模型,以分布式方式跨越许多 GPU 和节点。
图 1. 具有多个后端的 Triton 推理服务器,用于推理使用不同框架训练的模型
FasterTransformer 包含高度优化版本的转换器块的实现,其中包含编码器和解码器部分。
使用此模块,您可以运行完整的编码器-解码器架构(如 T5)以及纯编码器模型(如 BERT)或纯解码器模型(如 GPT)的推理。它是用 C++/CUDA 编写的,依赖于高度优化的 cuBLAS、cuBLASLt 和 cuSPARSELt 库。这使您可以在 GPU 上构建最快的变换器推理管道。
FasterTransformer 有两个部分。第一个是用于将经过训练的 Transformer 模型转换为可用于分布式推理的优化格式的库。第二部分是 Triton 用来在多个 GPU 上执行模型的后端。
与 NVIDIA TensorRT 等其他编译器相比,FT 的显着特点是它支持以分布式方式推断大型 Transformer 模型。
图 1 显示了如何使用张量并行 (TP) 和流水线并行 (PP) 技术将具有多个经典转换器/注意层的神经网络拆分到多个 GPU 和节点上。
当每个张量被分成多个块时,就会出现张量并行性,并且张量的每个块都可以放在单独的 GPU 上。在计算过程中,每个块在不同的 GPU 上分别并行处理,结果(最终张量)可以通过组合来自多个 GPU 的结果来计算。
当模型被深度分割并且不同的完整层被放置到不同的 GPU/节点上时,就会发生流水线并行。
在幕后,实现节点间/节点内通信依赖于 MPI 和 NVIDIA NCCL。使用此软件堆栈,您可以在多个 GPU 上以张量并行模式运行大型转换器,以减少计算延迟。
同时,TP 和 PP 可以结合在一起,在多 GPU 和多节点环境中运行具有数十亿和数万亿参数(相当于 TB 级权重)的大型 Transformer 模型。
除了 C 中的源代码,FasterTransformer 还提供 TensorFlow 集成(使用 TensorFlow op)、PyTorch 集成(使用 PyTorch op)和 Triton 集成作为后端。
目前 TensorFlow op 只支持单 GPU,而 PyTorch op 和 Triton backend 都支持多 GPU 和多节点。
为了避免为模型并行性而拆分模型的额外工作,FasterTransformer 还提供了一个工具,用于将模型从不同格式拆分和转换为 FasterTransformer 二进制文件格式。然后 FasterTransformer 可以直接以二进制格式加载模型。
目前,FT 支持 Megatron-LM GPT-3、GPT-J、BERT、ViT、Swin Transformer、Longformer、T5 和 XLNet 等模型。您可以在 GitHub 上的 FasterTransformer 存储库中查看最新的支持矩阵。
FT 适用于计算能力 = 7.0 的 GPU,例如 V100、A10、A100 等。
FasterTransformer 中的优化
与深度学习训练的通用框架相比,FT 使您能够获得更快的推理管道、更低的延迟和更高的基于 Transformer 的神经网络的吞吐量。
允许 FT 对 GPT-3 和其他大型变压器模型进行最快推理的一些优化技术包括:
层融合——预处理阶段的一组技术,将多层神经网络组合成一个单一的神经网络层,可以用一个单一的内核进行计算。该技术减少了数据传输并增加了数学密度,从而加速了推理阶段的计算。例如,多头注意力块中的所有操作都可以合并到一个内核中。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。