当前位置: 首页 > news >正文

NVIDIA Triton系列01-应用概论

NVIDIA Triton系列01-应用概论

image-20240615113403856

推理识别是人工智能最重要的落地应用,其他与深度学习相关的数据收集、标注、模型训练等工作,都是为了得到更好的最终推理性能与效果。

几乎每一种深度学习框架都能执行个别的推理工作,包括 Tensorflow、Pytorch、MXNet 等通用型框架与 YOLO 专属的 Darknet 框架,此外还有 ONNX 开发推理平台、NVIDIA TensorRT 加速推理引擎,也提供推理相关的 C / C++ 与 Python 开发接口,这是大部分技术人员所熟悉的方法。

在垂直应用方面,NVIDIA 的 DeepStream 智能分析工具是非常适合用在种类固定且需要长期统计分析的场景,包括各种交通场景的人 / 车流量分析、工业流水线质量检测等应用,并且在早期视觉(Visualization)类推理功能之上,再添加对话(Conversation)类推理功能,让使用范围更加完整。

上述的推理方式通常适合在识别固定种类与固定输入源的使用场景,在交通、工业自动化领域、无人设备等领域的使用比较普及。

但是这种方式并不适合在网络相关的服务类应用中使用,包括在线的产品推荐、图像分类、聊天机器人等应用,因为在线服务需要同时面对未知数量与类型的数据源,并且透过 HTTP 协议进行数据传输的延迟问题,也是严重影响用户体验感的因素,这是绝大部分网路服务供应商要导入 AI 智能识别技术所面临的共同难题。

NVIDIA Triton 推理服务器的最大价值,便是为服务类智能应用提供一个完整的解决方案,因此首先需要解决以下的三大关键问题:

1. 高通用性:

(1) 广泛支持多种计算处理器:包括具备 NVIDIA GPU 的 x86 与 ARM CPU 设备,也支持纯 CPU 设备的推理计算。

(2) 广泛支持各种训练框架的文件格式:包括 TensorFlow 1.x/2.x、PyTorch、ONNX、TensorRT、RAPIDS FIL(用于 XGBoost、Scikit-learn Random Forest、LightGBM)、OpenVINO、Python 等。

(3) 广泛支持各种模型种类:包括卷积神经网络 (CNN)、循环神经网络 (RNN)、决策树、随机森林和图神经网络等算法。

2.部署便利:

(1) 可在横向扩展的云或数据中心、企业边缘,甚至 NVIDIA Jetson 等嵌入式设备上运行。

(2) 支持用于 AI 推理的裸机和虚拟化环境,包括 VMware vSphere 与基于 Docker 技术的 Kubernetes 管理机制。

(3) 可托管于多种人工智能云平台,包括 Amazon SageMaker、Azure ML、Google Vertex AI、阿里巴巴 AI、腾讯 TI-EMS 等平台。

3.性能优化:

(1)动态批量处理:推理优化的一个因素是批量大小,或者您一次处理多少个样本,GPU 以更高的批量提供高吞吐量。然而,对于实时应用程序,服务的真正限制不是批量大小甚至吞吐量,而是为最终客户提供出色体验所需的延迟。

(2)模型并发执行:GPU 是能够同时执行多个工作负载的计算设备,NVIDIA Triton 推理服务器通过在 GPU 上同时运行多个模型来最大限度地提高性能并减少端到端延迟,这些模型可以是相同的,也可以是来自不同框架的不同模型。GPU 内存大小是同时运行模型数量的唯一限制,这会影响GPU利用率和吞吐量。

以上是 NVIDIA Triton 推理服务器的基本特性说明,要满足上面所列的特性,是相对复杂的内容,这是本系列文章所要为读者逐一探索的内容,不过在讲解技术内容之前,我们可以先看看有哪些比较具有代表性成功案例,能让大家对于 Triton 推理服务器的使用场景有更进一步的了解。

案例1:微软 Teams 会议系统使用 Triton 提升生成实时字幕和转录性能

微软 Teams 是全球沟通和协作的重要工具,每月有近 2.5 亿活跃用户,其 Azure 认知服务提供 28 种语言的字幕和转录,实时字幕功能帮助与会者实时跟踪对话,转录功能方便与会者在日后回顾当时的创意或回看未能参与的会议,实时字幕对聋哑人、听力障碍者,或者异国与会者特别有用。

底层语音识别技术作为认知服务中的一个 API,开发人员可以使用它定制和运行自己的应用程序,例如客服电话转录、智能家居控制或为急救人员提供 AI 助手。认知服务会生成 Teams 的转录和字幕,将语音转换为文本,并识别说话人。同时也能够识别专业术语 、姓名和其他会议背景,提高字幕的准确性。

微软 Teams 首席项目经理 Shalendra Chhabra 表示:“这样的 AI 模型非常复杂,需要数千万个神经网络参数才能识别几十种不同的语言。但模型越大,就越难以经济高效地实时运行。”

为了提高服务质量,微软使用 NVIDIA Triton 开源推理服务软件,来帮助 Teams 使用认知服务优化语音识别模型,以及认知服务所支持的高度先进语言模型,在极低的延迟状态下提供高度准确、个性化的语音转文本结果,同时可以保证运行这些语音转文本模型的 NVIDIA GPU 充分发挥计算资源,在消耗更少计算资源的同时为客户提供更高的吞吐量,进而降低成本。

NVIDIA GPU 和 Triton 软件能够帮助微软,在不牺牲低延迟的情况下,通过强大的神经网络,实现高准确性,确保语音-文本的实时转换,当启用转录功能时,与会者可以在会议结束后轻松补上错过的内容。

Triton 推理服务器有助于简化 AI 模型部署并解锁高性能推理,用户甚至可以为自己的应用开发自定义后端。下面三种关键功能,是协助微软将 Teams 的字幕和转录功能扩展到更多会议和用户的效能:

流推理:新型流推理功能—通过跟踪语音上下语境,提高延迟、敏感性字幕的准确度,协助 Azure 认知服务合作定制语音转文本的应用程序。

动态批量处理:批量大小指神经网络同时处理的输入样本数量,通过 Triton 的动态批量处理功能,单项推理请求被自动组合成一个批次,因此能够在不影响模型延迟的情况下更好地利用 GPU 资源。

并发模型执行:实时字幕和转录需要同时运行多个深度学习模型,Triton 使开发人员能够在单个 GPU 上同时完成这些工作,包括使用不同深度学习框架的模型。

案例2:Triton 助力微信加速视觉应用,提高可靠性

本案例中,通过 NVIDIA 的 GPU 执行 Triton 推理服务器与 TensorRT 推理加速引擎, 帮助微信的二维码光学识别(OCR)计算降低 46% 时间,并将系统的失败率降低 81%,同时减少 78% 的服务器使用数量

腾讯微信是一款跨平台的通讯工具,支持通过手机网络发送语音、图片、视频和文字等。截至 2021 年 6 月,微信在全球拥有超过 12 亿活跃用户,是国内活跃用户最多的社交软件。

微信识物是一款主打物品识别的 AI 产品,通过相机拍摄物品,更高效、更智能地获取信息。2020 年微信识物拓展了更多识别场景,上线了微信版的图片搜索,打开微信扫一扫,左滑切换到 “识物” 功能,对准想要了解的物品正面,可以获取对应的物品信息,包括物品百科、相关资讯、相关商品。

2021 年 1 月,微信发布的 8.0 版本更新支持图片文字提取的功能,用户在聊天界面和朋友圈中长按图片就可以提取图片中文字,然后一键转发、复制或收藏。

在识物的过程包含检测、图像召回、信息提炼等环节,其中二维码扫描的使用频率也是非常高,主要包括识别和检测,这两种应用都有非常大的计算量。但原本使用 Pytorch 进行模型的推理时,遇到以下三大问题:

请求的延迟很大,影响用户体验感;

显存占用很大,单张 NVIDIA T4 GPU 卡能部署的模型数比较少,导致推理请求的并发数上不去,请求失败的概率太高,只能通过增加机器的方式来提高并发能力,业务部署成本较高。

使用的模型经常变化,而业务需要更换后的模型需要能够快速地加速和上线部署。

为了解决上述问题,微信团队使用 Triton 推理服务器结合 TensorRT 加速推理器的综合方案,主要技术内容如下:

通过使用 TensorRT 对微信识物和 OCR 的模型进行加速,在都使用 FP32 的情况下,比 Pytorch 的延迟降低 50% 左右;

在 OCR 的识别和检测阶段,使用 TensorRT 结合 NVIDIA T4 GPU 的 FP16 Tensor Core,在保证精度的前提下,识别的延迟降低 50%、检测的延迟降低 20%;

在微信识物的分类和检测任务中,通过使用 NVIDIA T4 GPU 的 int8 Tensor Core 并结合 QAT,在满足精度要求的前提下,进一步大幅提升了性能;

通过使用 FP16 和 int8 低精度模式,在大幅降低推理延迟的同时,大大减少了显存的占用,在 FP16 模式下,单模型显存占用仅占 FP32 模式的 40%–50%, 而在 int8 模式下,单模型显存占用仅占 FP32 模式的 30% 左右。在提高单张 T4 卡上部署的模型数量的同时,大幅提高了单 GPU 的推理请求并发能力;

Triton 的动态批量处理(dynamic batch)和多实例等特性,帮助微信将在满足延迟要求的同时,提高了系统整体的并发能力,将系统失败降低了 81%

TensorRT 对个别模型得到推理的加速,Triton 则对加速后的模型进行快速的部署,满足了业务对修改后的模型进行快速部署的需求,也大大减少工程人员的工作量。

通过使用 NVIDIA 的 TensorRT 对微信识物和 OCR 的模型进行加速,在降低单次推理延迟 50% 以上的同时**,节约了多达 64% 的显存**。结合 Triton 的动态批量处理和多实例的功能,OCR 的整体时延降低了 46%,系统失败率降低了 81%。大大提高了用户的体验,并且服务器的数量减少了多达 78%,极大降低了服务的成本。

案例3:腾讯 PCG 使用 Triton 加速在线推理,提高设备效能

腾讯平台与内容事业群(简称 腾讯 PCG)负责公司互联网平台和内容文化生态融合发展,整合 QQ 软件、QQ 空间等社交平台,和应用宝、浏览器等流量平台,以及新闻资讯、视频、体育、直播、动漫、影业等内容业务,推动 IP 跨平台、多形态发展,为更多用户创造海量的优质数字内容体验。

腾讯 PCG 机器学习平台部旨在构建和持续优化符合 PCG 技术中台战略的机器学习平台和系统,提升 PCG 机器学习技术应用效率和价值,建设业务领先的模型训练系统和算法框架,提供涵盖数据标注、模型训练、评测、上线的全流程平台服务,实现高效率迭代,在内容理解和处理领域,输出业界领先的元能力和智能策略库。

这个机器学习平台服务于 PCG 所有业务产品,面对上述所提到的综合需求,有以下三大挑战:

1. 业务繁多,场景复杂**:**

(1) 业务开发语言包括 C++ 与 Python;

(2)模型格式繁多,包括 ONNX、Pytorch、TensorFlow、TensorRT 等;

(3)模型预处理涉及图片下载等网络 io;

(4)多模型融合流程比教复杂,涉及循环调用;

(5)支持异构推理;

2.模型推理结果异常时,难以便利地调试定位问题;

3.需要与公司内现有协议 / 框架 / 平台进行融合。

基于以上挑战,腾讯 PCG 选择了采用 NVIDIA 的 Triton 推理服务器,以解决新场景下模型推理引擎面临的挑战,在提升用户研效的同时,也大幅降低了服务成本。

NVIDIA 的 Triton 推理服务器是一款开源软件,对于所有推理模式都可以简化在任一框架中以及任何 GPU 或 CPU 上的运行方式,从而在生产环境中使用推理计算,并且支持多模型 ensemble,以及 TensorFlow、PyTorch、ONNX 等多种深度学习模型框架,可以很好的支持多模型联合推理的场景,构建起视频、图片、语音、文本整个推理服务过程,大大降低多个模型服务的开发和维护成本。

通过将 Triton 编译为动态链接库,可以方便地链入公司内部框架,对接公司的平台治理体系,符合 C 语言规范的 API 也极大降低了用户的接入成本,借助 Python 后端和自定义后端,用户可以自由选择使用 C++ 或 Python 语言进行二次开发。

NVIDIA DALI 是 GPU 加速的数据增强和图像加载库,使用 Triton 的 DALI 后端可以替换掉原来的图片解码、缩放等操作,Triton 的 FIL 后端可以替代 Python XGBoost 模型推理,进一步提升服务端推理性能。

借助 NVIDIA Triton 推理框架,配合 DALI / FIL / Python 等后端与 TensorRT,整体推理服务的吞吐能力最大提升 6 倍,延迟最大降低 40%。帮助腾讯 PCG 各业务场景中,以更低的成本构建了高性能的推理服务,同时更低的延迟降低了整条系统链路的响应时间,优化了用户体验,也降低了 20%-66% 总成本。

透过以上三个成功案例,就能很明显看出,Triton 推理服务器在面对复杂的智能识别应用场景时,能发挥非常有效的整合功能,特别是模型来自不同训练平台时,以及面对不同前端开发语言时,更能体现其便利性。

在后面的文章会带着大家,先从宏观的角度来了解 Triton 推理服务器的应用架构以及所需要的配套资源,接着搭建 Triton 的使用环境,包括建立模型仓、安装服务端/用户端软件,然后执行一些实用性强的基础范例,以及结合 NVIDIA 的 TensorRT 与 DeepStream 等推理工具,让更多开发人员能利用 Triton 整合更多 AI 推理资源。

出处:NVIDIA Triton系列文章(1):应用概论 - 最新资讯 - 英伟达AI计算专区 - 智东西 (zhidx.com)

相关文章:

NVIDIA Triton系列01-应用概论

NVIDIA Triton系列01-应用概论 推理识别是人工智能最重要的落地应用,其他与深度学习相关的数据收集、标注、模型训练等工作,都是为了得到更好的最终推理性能与效果。 几乎每一种深度学习框架都能执行个别的推理工作,包括 Tensorflow、Pytorc…...

LIMS(实验室)信息管理系统源码、有哪些应用领域?采用C# ASP.NET dotnet 3.5 开发的一套实验室信息系统源码

LIMS(实验室)信息管理系统源码、有哪些应用领域?采用C# ASP.NET dotnet 3.5 开发的一套实验室信息系统源码 LIMS实验室信息管理系统,是一种基于计算机硬件和数据库技术,集多个功能模块为一体的信息管理系统。该系统主…...

Web前端进国企:挑战与机遇并存

Web前端进国企:挑战与机遇并存 随着互联网的飞速发展,Web前端技术已经成为企业信息化建设的重要组成部分。对于许多热衷于前端技术的年轻人来说,进入国企工作既是一种挑战,也是一种机遇。本文将从四个方面、五个方面、六个方面和…...

快速上手SpringBoot

黑马程序员Spring Boot2 文章目录 1、SpringBoot 入门程序开发1.1 创建一个新的项目 2、浅谈入门程序工作原理2.1 parent2.2 starter2.3 引导类2.4 内嵌tomcat 1、SpringBoot 入门程序开发 1.1 创建一个新的项目 file > new > project > empty Project 创建新模块&a…...

SQL 快速参考

SQL 快速参考 SQL(Structured Query Language)是一种用于管理关系数据库管理系统(RDBMS)的标准编程语言。它用于执行各种操作,如查询、更新、插入和删除数据库中的数据。本快速参考将提供SQL的基本语法和常用命令&…...

Cask ‘oraclexxx‘ is unavailable: No Cask with this name exists.

brew search oracle-jdk或brew search --cask oracle-jdk 原因:Homebrew官方仓库不再维护多个旧版本的OracleJDK 不推荐使用Homebrew环境安装JDK //指定版本安装 brew install --cask temurin17 //设置 JAVA_HOME 环境变量 //找到安装的JDK 版本的路径 /usr/lib…...

2024年武汉市中级、高级职称水测考试开卷方法分享

2024年武汉市(除开东湖高新区外)职称首次组织全员水测,先考水测后报名,水测报名在5月16号截止。 武汉市水测组织形式: 武汉市2024年专业技术职务水平能力测试分为笔试和面试,面试答辩有关事项另行通知&…...

计算机网络(6) ICMP协议

ICMP(Internet Control Message Protocol,互联网控制消息协议)是一种用于在IP网络中传递控制消息和错误报告的协议。ICMP是IP协议族的一部分,尽管它并不用于传输用户数据,但它在网络诊断和管理中起着关键作用。以下是关…...

FuTalk设计周刊-Vol.036

🔥AI漫谈 热点捕手 1、Stable Zero123:从单张图像生成高质量 3D 对象 Stable Zero123 可以生成物体的新颖视图,展示从各个角度对物体外观的 3D 理解,由于训练数据集和高程条件的改进,其质量比 Zero1-to-3 或 Zero123-XL 显著提高…...

Java——面向对象进阶(三)

前言: 抽象类,接口,内部类 文章目录 一、抽象类1.1 抽象方法1.2 抽象类1.3 抽象类的使用 二、 接口2.1 接口的定义和实现2.2 default 关键字2.3 实现接口时遇到的问题 三、内部类3.1 成员内部类3.2 静态内部类3.3 成员内部类3.4 匿名内部类&a…...

鸿蒙开发电话服务:【@ohos.telephony.observer (observer)】

observer 说明: 本模块首批接口从API version 6开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 导入模块 import observer from ohos.telephony.observerobserver.on(‘networkStateChange’) on(type: ‘networkStateChange’, ca…...

希亦、追觅、云鲸洗地机:究竟有何不同?选择哪款更合适

最近收到很多私信里,要求洗地机测评的呼声特别高,作为宠粉的测评博主,当然是马上安排起来,满足大家对想看洗地机的愿望。这次洗地机测评,我挑选了三款热门的品牌型号,并从多个维度对它们进行使用测评&#…...

代码随想录算法训练营第二十六天

题目:455. 分发饼干 贪心第一题 这里的局部最优就是大饼干喂给胃口大的,充分利用饼干尺寸喂饱一个,全局最优就是喂饱尽可能多的小孩。或者小饼干先喂饱小胃口 首先要对 g 和 s进行排序这样才能知道最大的胃口和最大的饼干然后进行遍历即可…...

[面试题]Java【并发】

[面试题]Java【基础】[面试题]Java【虚拟机】[面试题]Java【并发】[面试题]Java【集合】[面试题]MySQL 因为 Java 并发涉及到的内容会非常多,本面试题可能很难覆盖到所有的知识点,所以推荐 《Java并发编程的艺术》 。 Java 线程 线程 通知 等待 线…...

基于VSCode和MinGW-w64搭建LVGL模拟开发环境

目录 概述 1 运行环境 1.1 版本信息 1.2 软件安装 1.2.1 下载安装VS Code 1.2.1.1 下载软件 1.2.1.1 安装软件 1.2.2 下载安装MinGW-w64 1.2.2.1 下载软件 1.2.2.2 安装软件 1.2.3 下载安装SDL 1.2.3.1 下载软件 ​1.2.3.2 安装软件 1.2.4 下载安装CMake 1.2.4.…...

H5112B 降压恒流芯片12V24V36V48V60V72V100V 1.2ALED 调光无频闪光滑细腻

H5112B多功能LED恒流驱动器是一款具有良好性能与高度集成度的驱动芯片。以下是该产品的主要优点及应用领域的详细分析: 产品优点: 宽电压输入范围:H5112B支持5V至90V的宽电压输入范围,使其能够适应多种不同的电源环境&#xff0…...

真心建议大家冲一冲新兴领域,工资高前景好【大模型NLP开发篇】

前言 从ChatGPT到新近的GPT-4,GPT模型的发展表明,AI正在向着“类⼈化”⽅向迅速发展。 GPT-4具备深度阅读和识图能⼒,能够出⾊地通过专业考试并完成复杂指令,向⼈类引以为傲的“创造⼒”发起挑战。 现有的就业结构即将发⽣重⼤变…...

深度剖析淘宝扭蛋机源码:打造趣味性电商活动的秘诀

在当今电商市场中,如何吸引用户的注意力、提升用户的参与度成为了各大电商平台竞相追求的目标。淘宝扭蛋机作为一种新型的电商活动形式,以其趣味性和互动性深受用户喜爱。本文将深度剖析淘宝扭蛋机源码,探讨其如何打造趣味性与互动性并存的电…...

vue3+优化vue-baidu-map中marker点过多导致的页面卡顿问题

场景: 移动端h5中,当我们需要在地图中展示很多marker点坐标的时候,通常会使用 bm-marker ,去循环生成marker点,在数量不多的情况下是没问题的,但是随着数据量的增加,地图就会变得卡顿,以及渲染延…...

PMS助力制造企业高效运营︱PMO大会

全国PMO专业人士年度盛会 北京易贝恩项目管理科技有限公司副总经理朱洪泽女士受邀为PMO评论主办的2024第十三届中国PMO大会演讲嘉宾,演讲议题为“PMS助力制造企业高效运营”。大会将于6月29-30日在北京举办,敬请关注! 议题简要: …...

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道(多模态 OCR → 语义检索 → 答案渲染)、两级检索(倒排 BM25 向量 HNSW)并以大语言模型兜底”的整体框架: 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后,分别用…...

linux之kylin系统nginx的安装

一、nginx的作用 1.可做高性能的web服务器 直接处理静态资源(HTML/CSS/图片等),响应速度远超传统服务器类似apache支持高并发连接 2.反向代理服务器 隐藏后端服务器IP地址,提高安全性 3.负载均衡服务器 支持多种策略分发流量…...

理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端

🌟 什么是 MCP? 模型控制协议 (MCP) 是一种创新的协议,旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议,它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...

【算法训练营Day07】字符串part1

文章目录 反转字符串反转字符串II替换数字 反转字符串 题目链接&#xff1a;344. 反转字符串 双指针法&#xff0c;两个指针的元素直接调转即可 class Solution {public void reverseString(char[] s) {int head 0;int end s.length - 1;while(head < end) {char temp …...

【android bluetooth 框架分析 04】【bt-framework 层详解 1】【BluetoothProperties介绍】

1. BluetoothProperties介绍 libsysprop/srcs/android/sysprop/BluetoothProperties.sysprop BluetoothProperties.sysprop 是 Android AOSP 中的一种 系统属性定义文件&#xff08;System Property Definition File&#xff09;&#xff0c;用于声明和管理 Bluetooth 模块相…...

智能仓储的未来:自动化、AI与数据分析如何重塑物流中心

当仓库学会“思考”&#xff0c;物流的终极形态正在诞生 想象这样的场景&#xff1a; 凌晨3点&#xff0c;某物流中心灯火通明却空无一人。AGV机器人集群根据实时订单动态规划路径&#xff1b;AI视觉系统在0.1秒内扫描包裹信息&#xff1b;数字孪生平台正模拟次日峰值流量压力…...

Java线上CPU飙高问题排查全指南

一、引言 在Java应用的线上运行环境中&#xff0c;CPU飙高是一个常见且棘手的性能问题。当系统出现CPU飙高时&#xff0c;通常会导致应用响应缓慢&#xff0c;甚至服务不可用&#xff0c;严重影响用户体验和业务运行。因此&#xff0c;掌握一套科学有效的CPU飙高问题排查方法&…...

视频行为标注工具BehaviLabel(源码+使用介绍+Windows.Exe版本)

前言&#xff1a; 最近在做行为检测相关的模型&#xff0c;用的是时空图卷积网络&#xff08;STGCN&#xff09;&#xff0c;但原有kinetic-400数据集数据质量较低&#xff0c;需要进行细粒度的标注&#xff0c;同时粗略搜了下已有开源工具基本都集中于图像分割这块&#xff0c…...

【C++】纯虚函数类外可以写实现吗?

1. 答案 先说答案&#xff0c;可以。 2.代码测试 .h头文件 #include <iostream> #include <string>// 抽象基类 class AbstractBase { public:AbstractBase() default;virtual ~AbstractBase() default; // 默认析构函数public:virtual int PureVirtualFunct…...

git: early EOF

macOS报错&#xff1a; Initialized empty Git repository in /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/.git/ remote: Enumerating objects: 2691797, done. remote: Counting objects: 100% (1760/1760), done. remote: Compressing objects: 100% (636/636…...