Amazon Search 如何在 AWS 上使用 NVIDIA Triton 实现低延迟、高吞吐量的 T5 推理

源节点: 1227376

亚马逊搜索的愿景是让客户轻松搜索。 即使您不知道预期单词的确切拼写,我们的拼写更正也可以帮助您找到想要的内容。 过去,我们使用经典的机器学习 (ML) 算法和手动特征工程来进行拼写校正。 为了在拼写校正性能方面实现下一代飞跃,我们正在采用多种深度学习方法,包括序列到序列模型。 深度学习 (DL) 模型在训练和推理方面都是计算密集型的,而这些成本历来使 DL 模型在亚马逊规模的生产环境中变得不切实际。 在这篇文章中,我们展示了推理优化实验的结果,我们克服了这些障碍,并为流行的 Hugging Face T534 Transformer 实现了 5% 的推理加速。

挑战

文本到文本传输转换器 (T5, 使用统一的文本到文本转换器探索迁移学习的局限性, Refel et al) 是最先进的自然语言处理 (NLP) 模型架构。 T5 是一种很有前途的拼写校正架构,我们发现它在我们的实验中表现良好。 得益于开源深度学习框架以及正在进行的学术和企业研究,T5 模型易于研究、开发和训练。

但是,使用 T5 很难实现生产级、低延迟的推理。 例如,在配备 Amazon Elastic Compute Cloud (EC5) p45xlarge 实例的四个 NVIDIA V100 Tensor Core GPU 之一上,使用 PyTorch T2 进行单次推理需要 3.8 毫秒。 (报告的所有推理数字都是针对 9 个令牌的输入和 11 个令牌的输出。T5 架构的延迟对输入和输出长度都很敏感。)

低延迟、具有成本效益的大规模 T5 推理是一个已知的困难,亚马逊搜索以外的几个 AWS 客户都报告了这一难题,这激发了我们贡献这篇文章的动力。 为了从线下的科学成就转变为面向客户的生产服务,亚马逊搜索面临以下挑战:

  • 潜伏 – 如何在小于 5 毫秒的 P50 延迟内实现 T99 推理
  • 生产能力 – 如何处理大规模并发推理请求
  • 成本效益 – 如何控制成本

在这篇文章的其余部分,我们将解释 NVIDIA 推理优化堆栈(即 英伟达 TensorRT 编译器和开源 NVIDIA Triton 推理服务器——解决这些挑战。 读 英伟达的新闻稿 了解更新。

NVIDIA TensorRT:通过推理优化降低成本和延迟

深度学习框架便于在科学上快速迭代,并具有用于科学建模、数据加载和训练优化的众多功能。 然而,这些工具中的大多数都不是推理的最佳工具,它只需要最少的一组运算符来进行矩阵乘法和激活函数。 因此,通过使用专门的、仅预测的应用程序而不是在深度学习开发框架中运行推理,可以获得显着的收益。

NVIDIA TensorRT 是一款用于高性能深度学习推理的 SDK。 TensorRT 使用 NVIDIA GPU 上可用的低级优化内核提供优化的运行时,以及以优化顺序重新排列推理计算的仅推理模型图。

在下一节中,我们将讨论 TensorRT 背后发生的细节以及它如何提高性能。

  1. 降低精度 通过量化模型在保持正确性的同时最大化 FP16 或 INT8 的吞吐量。
  2. 层和张量融合 通过融合内核中的节点来优化 GPU 内存和带宽的使用,以避免内核启动延迟。
  3. 内核自动调优 根据目标 GPU 平台和数据内核形状选择最佳数据层和算法。
  4. 动态张量记忆 通过释放中间结果的不必要内存消耗并有效地为张量重用内存,最大限度地减少内存占用。
  5. 多流执行 使用可扩展的设计来处理与专用 CUDA 流并行的多个输入流。
  6. 时间融合 使用动态生成的内核随时间步长优化循环神经网络。

T5 使用变压器层作为其架构的构建块。 最新版本的 NVIDIA TensorRT 8.2 为 T5 和 GPT-2 模型引入了用于实时推理的新优化。 在下表中,我们可以看到在由 NVIDIA T5 GPU 和 EC2 G4 实例由 NVIDIA A4G GPU 提供支持的 Amazon EC2G5dn 实例上运行的一些公共 T10 模型上使用 TensorRT 的加速。

 

型号 基线 Pytorch 延迟(毫秒) TensorRT 8.2 延迟(毫秒) 加速与 HF 基线
FP32 FP32 FP16 FP32 FP16
Encoder 编码器 解码功能 端到端 Encoder 编码器 解码功能 端到端 Encoder 编码器 解码功能 端到端 端到端 端到端
t5-小 g4dn.xlarge 5.98 9.74 30.71 1.28 2.25 7.54 0.93 1.59 5.91 407.40% 519.34%
g5.xlarge 4.63 7.56 24.22 0.61 1.05 3.99 0.47 0.80 3.19 606.66% 760.01%
t5-碱基 g4dn.xlarge 11.61 19.05 78.44 3.18 5.45 19.59 3.15 2.96 13.76 400.48% 569.97%
g5.xlarge 8.59 14.23 59.98 1.55 2.47 11.32 1.54 1.65 8.46 530.05% 709.20%

有关附加性能的优化和复制的更多信息,请参阅 使用 NVIDIA TensorRT 优化 T5 和 GPT-2 以实现实时推理.

重要的是要注意,编译保留了模型的准确性,因为它在推理环境和计算调度上运行,使模型科学保持不变——与蒸馏或修剪等重量去除压缩不同。 NVIDIA TensorRT 允许将编译与量化相结合以获得进一步的收益。 量化对最近的 NVIDIA 硬件有双重好处:它减少了内存使用量,并支持使用 NVIDIA 张量核心,即 DL 特定单元,以混合精度运行融合矩阵乘加。

在使用 Hugging Face T5 模型进行 Amazon Search 实验的情况下,将 PyTorch 替换为 TensorRT 进行模型推理可将速度提高 534%。

NVIDIA Triton:低延迟、高吞吐量的推理服务

现代模型服务解决方案可以将离线训练的模型转换为面向客户的机器学习产品。 为了在这样的规模上保持合理的成本,重要的是保持较低的服务开销(HTTP 处理、预处理和后处理、CPU-GPU 通信),并充分利用 GPU 的并行处理能力。

NVIDIA Triton 是一款推理服务软件,建议广泛支持模型运行时(NVIDIA TensorRT、ONNX、PyTorch、XGBoost 等)和基础设施后端,包括 GPU、CPU 和 AWS 推理。

ML 从业者喜欢 Triton 的原因有很多。 其动态批处理能力允许在用户定义的延迟期间和最大用户定义的批处理大小内累积推理请求,从而对 GPU 推理进行批处理,从而分摊 CPU-GPU 通信开销。 请注意,动态批处理发生在服务器端并且在很短的时间内发生,因此请求客户端仍然具有同步的、近乎实时的调用体验。 Triton 用户还可以享受其并发模型执行能力。 GPU 是强大的多任务处理器,擅长并行执行计算密集型工作负载。 Triton 通过使用 CUDA 流同时运行多个模型实例来最大化 GPU 利用率和吞吐量。 这些模型实例可以是来自不同用例的不同框架的不同模型,也可以是同一模型的直接副本。 当您有足够的空闲 GPU 内存时,这将转化为直接的吞吐量改进。 此外,由于 Triton 不依赖于特定的 DL 开发框架,它允许科学家在他们选择的工具中充分表达自己。

借助 AWS 上的 Triton,Amazon Search 有望提供更好的服务 Amazon.com 客户并以低成本满足延迟要求。 TensorRT 运行时和 Triton 服务器之间的紧密集成促进了开发体验。 使用 AWS 云基础设施可以根据吞吐量要求在几分钟内扩大或缩小规模,同时保持高标准或可靠性和安全性。

AWS 如何降低进入门槛

虽然 Amazon Search 在 Amazon EC2 基础设施上进行了这项实验,但还存在其他 AWS 服务来促进最先进的深度学习解决方案的开发、培训和托管。

例如,AWS 和 NVIDIA 合作发布了 Triton 推理服务器的托管实施 亚马逊SageMaker ; 有关更多信息,请参阅 在 Amazon SageMaker 中使用 NVIDIA Triton 推理服务器部署快速且可扩展的 AI. AWS 还与 Hugging Face 合作开发了 Amazon SageMaker 和 Hugging Face Transformers 之间的托管优化集成,这是衍生 Amazon Search T5 模型的开源框架; 阅读更多 https://aws.amazon.com/machine-learning/hugging-face/.

我们鼓励使用对延迟敏感的 CPU 和 GPU 深度学习服务应用程序的客户考虑 AWS 上的 NVIDIA TensorRT 和 Triton。 让我们知道您构建了什么!

热衷于深度学习并为亚马逊搜索构建基于深度学习的解决方案? 看看我们的 职业页面。


作者简介

RJ 是 Search M5 团队的一名工程师,负责构建用于训练和推理的大规模深度学习系统。 工作之余,他探索不同的美食佳肴并参加球拍运动。

赫曼特普加利亚 是 Search M5 的应用科学家。 他致力于应用最新的自然语言处理和深度学习研究来改善全球亚马逊购物的客户体验。 他的研究兴趣包括自然语言处理和大规模机器学习系统。 工作之余,他喜欢远足、烹饪和阅读。

孙安迪 是搜索拼写校正的软件工程师和技术主管。 他的研究兴趣包括优化深度学习推理延迟和构建快速实验平台。 工作之余,他喜欢电影制作和杂技。

乐彩 是亚马逊搜索的软件工程师。 他致力于提高搜索拼写校正性能,以帮助客户改善购物体验。 他专注于深度学习模型的高性能在线推理和分布式训练优化。 工作之余,他喜欢滑雪、远足和骑自行车。

安东尼高 目前在加利福尼亚州帕洛阿尔托 Search M5 担任软件工程师。 他致力于为模型部署和推理优化构建工具和产品。 工作之余,他喜欢烹饪和打球拍运动。

奥利维尔·克鲁尚 是 AWS 的机器学习专家解决方案架构师,常驻法国。 Olivier 帮助 AWS 客户(从小型初创公司到大型企业)开发和部署生产级机器学习应用程序。 在业余时间,他喜欢阅读研究论文并与朋友和家人一起探索荒野。

阿尼什·莫汉(Anish Mohan) 是 NVIDIA 的机器学习架构师,也是与大西雅图地区的客户进行机器学习和深度学习的技术负责人。

刘家宏 是 NVIDIA 云服务提供商团队的解决方案架构师。 他帮助客户采用机器学习和人工智能解决方案,利用 NVIDIA 加速计算来解决他们的训练和推理挑战。 闲暇时间,他喜欢折纸、DIY项目和打篮球。

伊柳斯·特里亚纳 是 NVIDIA 的开发者关系经理。 他将 Amazon 和 AWS 产品负责人、开发人员和科学家与 NVIDIA 技术专家和产品负责人联系起来,以加速 Amazon ML/DL 工作负载、EC2 产品和 AWS AI 服务。 此外,Eliuth 还是一位热情的山地车手、滑雪者和扑克玩家。

时间戳记:

更多来自 AWS机器学习