0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

使用NVIDIA TensorRT优化T5和GPT-2

星星科技指导员 来源:NVIDIA 作者:NVIDIA 2022-03-31 17:25 次阅读

这个transformer 体系结构完全改变了(双关语)自然语言处理( NLP )的领域。近年来,在 transformer 构建块 BERT 、 GPT 和 T5 上构建了许多新颖的网络体系结构。随着品种的增加,这些型号的尺寸也迅速增加。

虽然较大的神经语言模型通常会产生更好的结果,但将它们部署到生产环境中会带来严重的挑战,尤其是对于在线应用程序,在这些应用程序中,几十毫秒的额外延迟可能会对用户体验产生显著的负面影响。

使用最新TensorRT8.2 ,我们优化了 T5 和 GPT-2 模型,以实现实时推理。您可以将 T5 或 GPT-2 模型转换为 TensorRT 引擎,然后将此引擎用作推理工作流中原始 PyTorch 模型的插件替换。与 PyTorch GPU 推理相比,此优化导致延迟减少 3-6 倍,与 PyTorch CPU 推理相比,延迟减少 9-21 倍。

在这篇文章中,我们将向您详细介绍如何实现相同的延迟减少,使用我们最新发布的基于 Hugging Face transformers 的示例脚本和笔记本,使用 GPT-2 进行开放式文本生成,使用 T5 进行翻译和摘要。

T5 和 GPT-2 简介

在本节中,我们将简要介绍 T5 和 GPT-2 模型。

T5 用于回答问题、总结、翻译和分类

T5或文本到文本传输 transformer 是谷歌最近创建的一种体系结构。它将所有自然语言处理( NLP )任务重新构造为统一的文本到文本格式,其中输入和输出始终是文本字符串。 T5 的体系结构允许将相同的模型、损失函数和超参数应用于任何 NLP 任务,如机器翻译、文档摘要、问答和分类任务,如情感分析。

T5 模式的灵感来源于迁移学习在 NLP 中产生了最先进的结果。迁移学习背后的原理是,基于大量可用的未经训练的数据和自我监督任务的模型可以在较小的任务特定标记数据集上针对特定任务进行微调。事实证明,这些模型比从头开始针对特定任务数据集训练的模型具有更好的结果。

基于迁移学习的概念, Google 在用统一的文本到文本转换器探索迁移学习的局限性中提出了 T5 模型。在本文中,他们还介绍了庞大的干净爬网语料库( C4 )数据集。在该数据集上预训练的 T5 模型在许多下游 NLP 任务上实现了最先进的结果。已发布的预训练 T5 车型的参数范围高达 3B 和 11B 。

GPT-2 用于生成优秀的类人文本

生成性预训练 transformer 2 (GPT-2)是 OpenAI 最初提出的一种自回归无监督语言模型。它由 transformer 解码器块构建,并在非常大的文本语料库上进行训练,以预测段落中的下一个单词。它生成优秀的类人文本。更大的 GPT-2 模型,最大参数达到 15 亿,通常能写出更好、更连贯的文本。

使用 TensorRT 部署 T5 和 GPT-2

使用 TensorRT 8.2 ,我们通过构建并使用 TensorRT 发动机作为原始 PyTorch 模型的替代品,优化了 T5 和 GPT-2 模型。我们将带您浏览scripts和 Jupyternotebooks,并重点介绍基于拥抱面部变形金刚的重要内容。有关更多信息,请参阅示例脚本和笔记本以获取详细的分步执行指南。

设置

最方便的开始方式是使用 Docker 容器,它为实验提供了一个隔离、独立和可复制的环境。

构建并启动 TensorRT 容器:

pYYBAGJFc9SAPvxgAAAaKW2vWGI162.png

这些命令启动 Docker 容器和 JupyterLab 。在 web 浏览器中打开 JupyterLab 界面:pYYBAGJFdAKAcbUvAAAEMDAJOjM560.png在 JupyterLab 中,要打开终端窗口,请选择 File 、 New 、 Terminal 。编译并安装 TensorRT OSS 包:

poYBAGJFdA2AQncNAAALSmQMGn0122.png

现在,您已经准备好继续使用模型进行实验。在下面的顺序中,我们将演示 T5 模型的步骤。下面的代码块并不意味着可以复制粘贴运行,而是引导您完成整个过程。为了便于复制,请参阅 GitHub 存储库上的notebooks。

在高层次上,使用 TensorRT 优化用于部署的拥抱面 T5 和 GPT-2 模型是一个三步过程:

从 HuggingFace 模型动物园下载模型。

将模型转换为优化的 TensorRT 执行引擎。

使用 TensorRT 引擎进行推理。

使用生成的引擎作为 HuggingFace 推理工作流中原始 PyTorch 模型的插件替换。

从 HuggingFace 模型动物园下载模型

首先,从 HuggingFace 模型中心下载原始的 Hugging Face PyTorch T5 模型及其关联的标记器。

poYBAGJFdCeAbgptAAANxtLgEjs368.png

然后,您可以将此模型用于各种 NLP 任务,例如,从英语翻译为德语:

pYYBAGJFdC-ATa1bAAAU9hCPQ6k530.png

TensorRT 8.2 支持 GPT-2 至“ xl ”版本( 1.5B 参数)和 T5 至 11B 参数,这些参数可在 HuggingFace model zoo 上公开获得。根据 GPU 内存可用性,也可支持较大型号。

将模型转换为优化的 TensorRT 执行引擎。

在将模型转换为 TensorRT 引擎之前,请将 PyTorch 模型转换为中间通用格式。 ONNX 是机器学习深度学习模型的开放格式。它使您能够将 TensorFlow 、 PyTorch 、 MATLAB 、 Caffe 和 Keras 等不同框架中的深度学习和机器学习模型转换为单一的统一格式。

转换为 ONNX

对于 T5 型号,使用实用功能分别转换编码器和解码器。

pYYBAGJFdDiACUfkAAAhAI8eZnI041.png

转换为 TensorRT

现在,您已经准备好解析 T5 ONNX 编码器和解码器,并将它们转换为优化的 TensorRT 引擎。由于 TensorRT 执行了许多优化,例如融合操作、消除转置操作和内核自动调优,以在目标 GPU 体系结构上找到性能最佳的内核,因此此转换过程可能需要一些时间。

pYYBAGJFdE6AQLHtAAAcENHunE8781.png

使用 TensorRT 引擎进行推理

最后,您现在有了一个针对 T5 模型的优化 TensorRT 引擎,可以进行推断。

pYYBAGJFdGyATjkzAAAfAAkkvFE954.png

类似地,对于 GPT-2 模型,您可以按照相同的过程生成 TensorRT 引擎。优化的 TensorRT 引擎可作为 HuggingFace 推理工作流中原始 PyTorch 模型的插件替代品。

TensorRT transformer 优化细节

基于转换器的模型是 transformer 编码器或解码器块的堆栈。编码器(解码器)块具有相同的结构和参数数量。 T5 由 transformer 编码器和解码器的堆栈组成,而 GPT-2 仅由 transformer 解码器块组成(图 1 )。

t5-architecture.png

图 1a 。 T5 架构

poYBAGJFc5-AeDgfAABnQisiZW4320.png

图 1b 。 GPT-2 体系结构

每个 transformer 块,也称为自我注意块,通过使用完全连接的层将输入投影到三个不同的子空间,称为查询( Q )、键( K )和值( V ),由三个投影组成。然后将这些矩阵转换为 QT和 KT用于计算标准化点积注意值,然后与 V 组合T生成最终输出(图 2 )。

pYYBAGJFc6GAKbmGAAC5J-rjuz4450.png

图 2 。自我注意块

TensorRT 通过逐点层融合优化自我注意块:

还原与电源操作相融合(用于图层模板和剩余添加图层)。

电子秤与 softmax 融合在一起。

GEMM 与 ReLU / GELU 激活融合。

此外, TensorRT 还优化了推理网络:

消除转置操作。

将三个 KQV 投影融合为一个 GEMM 。

当指定 FP16 模式时,控制逐层精度以保持精度,同时运行 FP16 中计算最密集的运算。

TensorRT 对 PyTorch CPU 和 GPU 基准

通过 TensorRT 进行的优化,我们看到 PyTorch GPU 推理的加速比高达 3-6 倍,而 PyTorch CPU 推理的加速比高达 9-21 倍。

图 3 显示了批量为 1 的 T5-3B 模型的推理结果,该模型用于将短短语从英语翻译成德语。 A100 GPU 上的 TensorRT 引擎与在双插槽 Intel Platinum 8380 CPU 上运行的 PyTorch 相比,延迟减少了 21 倍。

poYBAGJFc6KAct-cAABCQhQEBKM339.png

图 3 。 A100 GPU 上的 T5-3B 模型推断比较 TensorRT 提供的延迟比 PyTorch CPU 推断小 21 倍。

CPU :英特尔白金 8380 , 2 个插槽。
GPU:NVIDIA A100 PCI Express 80GB 。软件: PyTorch 1.9 , TensorRT 8.2.0 EA 。
任务:“将英语翻译成德语:这很好。”

结论

在这篇文章中,我们向您介绍了如何将拥抱脸 PyTorch T5 和 GPT-2 模型转换为优化的 TensorRT 推理引擎。 TensorRT 推理机用作原始 HuggingFace T5 和 GPT-2 PyTorch 模型的替代品,可提供高达 21x CPU 的推理加速比。要为您的模型实现此加速,从 TensorRT 8.2 开始今天的学习.

关于作者

About Vinh Nguyen是一位深度学习的工程师和数据科学家,发表了 50 多篇科学文章,引文超过 2500 篇。在 NVIDIA ,他的工作涉及广泛的深度学习和人工智能应用,包括语音、语言和视觉处理以及推荐系统。

About Nikhil Srihari是 NVIDIA 的深入学习软件技术营销工程师。他在自然语言处理、计算机视觉和语音处理领域拥有广泛的深度学习和机器学习应用经验。 Nikhil 曾在富达投资公司和 Amazon 工作。他的教育背景包括布法罗大学的计算机科学硕士学位和印度苏拉斯卡尔卡纳塔克邦国家理工学院的学士学位。

About Parth Chadha是 NVIDIA 的深度学习软件工程师。他在 TensorRT 上工作,这是一个高性能的深度学习推理 SDK 。 Parth 在卡内基梅隆大学获得电气和计算机工程硕士学位,主要研究机器学习和并行计算机体系结构。

About Charles Chen20 岁时在加州大学圣地亚哥分校获得计算机科学硕士学位后, Charles Chen 专注于为尖端人工智能框架、发展中国家的计算机教育和人机交互做出贡献。在 NVIDIA , Charles 是一名深度学习软件工程师,致力于 TensorRT ,一款高性能的深度学习推理 SDK 。

About Joohoon Lee领导 NVIDIA 的汽车深度学习解决方案架构师团队。他专注于将深度学习研究转化为用于生产部署的真实世界自主驾驶软件。他的团队使汽车客户能够使用英伟达驱动平台进行 DNN 培训、微调、优化和部署。在加入 NVIDIA 之前,他曾担任 GPU 软件架构师,负责加速 DNN 算法。 Joohoon 在卡内基梅隆大学获得电气和计算机工程学士和硕士学位。

About Jay Rodge是 NVIDIA 的产品营销经理,负责深入学习和推理产品,推动产品发布和产品营销计划。杰伊在芝加哥伊利诺伊理工学院获得计算机科学硕士学位,主攻计算机视觉和自然语言处理。在 NVIDIA 之前,杰伊是宝马集团的人工智能研究实习生,为宝马最大的制造厂使用计算机视觉解决问题。

审核编辑:郭婷

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • cpu
    cpu
    +关注

    关注

    68

    文章

    10442

    浏览量

    206549
  • NVIDIA
    +关注

    关注

    14

    文章

    4592

    浏览量

    101713
收藏 人收藏

    评论

    相关推荐

    利用NVIDIA组件提升GPU推理的吞吐

    本实践中,唯品会 AI 平台与 NVIDIA 团队合作,结合 NVIDIA TensorRTNVIDIA Merlin HierarchicalKV(HKV)将推理的稠密网络和热
    的头像 发表于 04-20 09:39 158次阅读

    TensorRT LLM加速Gemma!NVIDIA与谷歌牵手,RTX助推AI聊天

    NVIDIA今天在其官方博客中表示,今天与谷歌合作,在所有NVIDIA AI平台上为Gemma推出了优化
    的头像 发表于 02-23 09:42 233次阅读
    <b class='flag-5'>TensorRT</b> LLM加速Gemma!<b class='flag-5'>NVIDIA</b>与谷歌牵手,RTX助推AI聊天

    TC275如何设定GPT模块分频?

    在illd里没找到相关函数,请问各位高手如何设定GPT模块分频,谢谢。
    发表于 02-22 07:37

    使用TC21x的GPT实现1m计时器执行定时任务,怎么配置GTM和GPT

    专家们好,我想使用TC21x的GPT实现1m计时器执行定时任务,不知道怎么配置GTM和GPT
    发表于 02-06 06:47

    Torch TensorRT是一个优化PyTorch模型推理性能的工具

    那么,什么是Torch TensorRT呢?Torch是我们大家聚在一起的原因,它是一个端到端的机器学习框架。而TensorRT则是NVIDIA的高性能深度学习推理软件工具包。Torch Te
    的头像 发表于 01-09 16:41 394次阅读
    Torch <b class='flag-5'>TensorRT</b>是一个<b class='flag-5'>优化</b>PyTorch模型推理性能的工具

    NVIDIA 第九届 Sky Hackathon 优秀作品展示 | 静语画韵:艺术中的无声诗篇

    使用 NVIDIA Jetson 平台,亲身体验了大模型在图像识别和生成式模型调用方面的应用。从 Resnet50 模型的优化TensorRT 推理引擎的生成,每一步都呈现了
    的头像 发表于 12-21 19:35 466次阅读
    <b class='flag-5'>NVIDIA</b> 第九届 Sky Hackathon 优秀作品展示 | 静语画韵:艺术中的无声诗篇

    现已公开发布!欢迎使用 NVIDIA TensorRT-LLM 优化大语言模型推理

    NVIDIA 于 2023 年 10 月 19 日公开发布 TensorRT-LLM ,可在 NVIDIA GPU 上加速和优化最新的大语言模型(Large Language Mode
    的头像 发表于 10-27 20:05 529次阅读
    现已公开发布!欢迎使用 <b class='flag-5'>NVIDIA</b> <b class='flag-5'>TensorRT</b>-LLM <b class='flag-5'>优化</b>大语言模型推理

    阿里云 &amp; NVIDIA TensorRT Hackathon 2023 决赛圆满收官,26 支 AI 团队崭露头角

    2023 年 9 月 29 日,由阿里云、NVIDIA 联合主办,阿里云天池平台承办的 “NVIDIA TensorRT Hackathon 2023 生成式 AI 模型优化赛” 圆满
    的头像 发表于 10-17 03:20 352次阅读
    阿里云 &amp; <b class='flag-5'>NVIDIA</b> <b class='flag-5'>TensorRT</b> Hackathon 2023 决赛圆满收官,26 支 AI 团队崭露头角

    chatGPT和GPT4有什么区别

    。它的前身是GPT-1,随后的版本有GPT-2GPT-3和最新的GPT-4。 GPT-4与之前的版本相比,预计将会有很多改进和变化。尽管该
    的头像 发表于 08-09 15:18 1789次阅读

    学习资源 | NVIDIA TensorRT 全新教程上线

    NVIDIA TensorRT   是一个用于高效实现已训练好的深度学习模型推理过程的软件开发工具包,内含推理优化器和运行环境两部分,其目的在于让深度学习模型能够在 GPU 上以更高吞吐量和更低
    的头像 发表于 08-04 17:45 468次阅读
    学习资源 | <b class='flag-5'>NVIDIA</b> <b class='flag-5'>TensorRT</b> 全新教程上线

    即刻报名第三届 NVIDIA TensorRT Hackathon 生成式 AI 模型优化

    近日,由阿里云及 NVIDIA 联合举办的 “NVIDIA TensorRT Hackathon 2023 生成式 AI 模型优化赛”已正式启动。此大赛是由阿里云天池组织运营,
    的头像 发表于 07-17 19:45 335次阅读
    即刻报名第三届 <b class='flag-5'>NVIDIA</b> <b class='flag-5'>TensorRT</b> Hackathon 生成式 AI 模型<b class='flag-5'>优化</b>赛

    NVIDIA TensorRT与Apache Beam SDK的集成

    使用 NVIDIA TensorRT 在 Apache Beam 中简化和加速机器学习预测
    的头像 发表于 07-05 16:30 276次阅读

    NVIDIA 招聘 | NVIDIA 最新热招岗位!一起迎接未来加速计算!

    / LLM - TensorRT 工作内容: 围绕深度学习端到端 AI 软件全栈,包括但不限于:训练框架、核心计算库、推理优化工具(比如 TensorRT)、AI 编译器、模型压缩等全栈软件栈,
    的头像 发表于 06-14 18:35 660次阅读

    DeepSpeed里面和Zero相关技术教程

    概述 训练环境 开启Zero优化 训练一个1.5B参数的GPT2模型 训练一个10b的GPT-2模型 使用ZeRO-Infinity训练万亿级别的模型 使用ZeRO-Infinity将计算转移到CPU
    的头像 发表于 06-12 10:25 2432次阅读
    DeepSpeed里面和Zero相关技术教程

    IMX8MN如果我们配置GPT在上升沿/下降沿触发中断,如何知道中断是由下降沿还是上升沿触发?

    ”) 2. 当 GPT 配置为重启模式时,触发“输入捕获事件”时计数器不重启是否正常?(所以为了测量一个位的持续时间,我们需要存储之前的值?) 3. 有人知道在哪里定义/设置
    发表于 05-12 06:35