数据科学

使用 NVIDIA Triton 推理服务器快速、可扩展的 AI 模型部署

AI是一种编写软件的新方法, AI 推理正在运行该软件。 AI machine learning正在解锁各种领域的突破性应用,如在线产品推荐、图像分类、聊天机器人、预测、制造质量检查等。构建一个用于产生式推理的平台是非常困难的。原因如下。

应用

应用程序有不同的需求,需要根据用户的需求进行不同的优化。

  • 有些人希望连续处理来自摄像头或麦克风等传感器的流式数据。
  • 有些人希望以最低的成本优化吞吐量,比如处理卫星图像以创建高保真地图。
  • 有些需要实时响应,比如对话式 AI 聊天机器人。

模型类型

不同的用例利用不同的模型类型,这会生成非常不同的计算图,为了获得最佳性能,应该对这些图进行编译。一些流行的模型类型有卷积神经网络( CNN )、递归神经网络( RNN )、 transformers 、决策树、随机森林和图形神经网络。

框架

模型在不同的框架中进行训练 并且有不同的格式–TensorFlow, PyTorch、 TensorRT 、 ONNX 、MXNetXGBoost等等。

人工智能平台

应用程序运行在许多应用程序之上 不同的人工智能平台——国产平台,如 Cloudera 或 Domino Data Labor ,或公共云 ML 平台,如 Amazon SageMaker 、 Azure ML 或 Google Vertex 人工智能。

计算处理器

选择计算处理器是漫长旅程的下一步。 GPU 和 CPU 有不同的版本。在裸机或虚拟机上运行模型是另一个考虑因素。

部署环境

推理部署环境可能因应用程序而异—公共云、内部部署核心(数据中心)、企业边缘和嵌入式设备。

一个给定的推理平台应该考虑所有前面的因素,这就是为什么构建一个高效的高性能平台是困难的。

NVIDIA Triton 推理服务器

NVIDIA Triton Inference Server是一款开源推理服务软件,用于应用程序中的快速可扩展 AI 。它可以帮助满足推理平台前面的许多考虑。下面是这些功能的摘要。有关更多信息,请参阅Triton Inference Server在 GitHub 上阅读我的文章。

  • NVIDIA Triton 可用于部署来自所有流行框架的模型。它支持 TensorFlow 1 和 x 、 PyTorch 、 ONNX 、 TensorRT 、 RAPIDS FIL (对于 XGBOOST 、Scikit-learn Random Forest、 LITGBM )、 OpenVIO 、 Python ,甚至自定义 C ++后端。
  • NVIDIA Triton 优化了多种查询类型的推理——实时、批处理、流式,还支持模型集成。
  • 支持 NVIDIA GPU s 和 x86 & ARM CPU s 上的高性能推断。
  • 在云计算或数据中心、企业边缘运行,甚至在嵌入式设备上运行,比如 NVIDIA Triton 。它支持 AI 推理的裸金属和虚拟化环境(例如 VMware VSCOPE )。在 Windows 、 Jetson 和 Jetson SBSA 上运行专用的 NVIDIA Triton 版本。
  • Kubernetes 和 AI 平台支持:
    • 它可以作为 Docker 容器提供,并且可以轻松地与Kubernetes平台集成,如 AWS EKS 、谷歌 GKE 、 Azure AKS 、阿里巴巴 ACK 、腾讯 TKE 或红帽 OpenShift 。
    • NVIDIA Triton 在托管云 AI 工作流平台中可用,如 Amazon SageMaker 、 Azure ML 、 Google Vertex AI 、阿里巴巴 AI 弹性算法服务平台和腾讯 TI-EMS 。

并行执行

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

动态配料

推理优化的一个因素是批量大小,即您一次处理的样本数量。 GPU 以更大的批量提供高吞吐量。然而,对于实时应用程序,服务的真正限制不是批量大小,甚至不是吞吐量,而是为最终客户提供卓越体验所需的延迟。下面是一个简单的例子。对于智能扬声器网络,管道 NLP 部分使用的 BERT 模型的最大延迟必须为 7 毫秒或更短,才能提供出色的体验。现在,如果您查看图 1 ,您可以看到,为了保持< 7ms 的延迟阈值,您可以运行到批大小 24 ,以满足您的目标延迟并最大化吞吐量。

This chart shows how input requests can be batched to increase throughput under latency constraints.
图 1 :吞吐量延迟曲线。

在生产环境中运行推理时,有两种类型的批处理:客户端(静态)和服务器端(动态)。通常,当客户机向服务器发送请求时,默认情况下服务器将按顺序处理每个请求,这对于吞吐量来说不是最优的。

在大规模实现推理时,开发人员可能希望平衡延迟和吞吐量目标,以满足其应用程序的要求。图 4 显示了如何通过使用 NVIDIA Triton 推理服务器的动态批处理来平衡这些优先级。随着独立推断请求进入服务器, NVIDIA Triton 将在服务器端动态地将客户端请求分组在一起,形成一个更大的批。 Triton 可以将此批处理管理到指定的延迟目标,从而在指定的延迟目标内实现吞吐量最大化的平衡。 NVIDIA Triton 自动管理此任务,因此您不必在客户端对代码进行任何更改。

例如,八个不同的设备可能同时有一个图像搜索请求,但 NVIDIA Triton 能够将它们全部批处理在一起,以便对 GPU 进行单个查询,从而提高吞吐量,而不是对每个顺序请求执行推断,并且仍然以低延迟交付结果。

 This chart shows NVIDIA Triton combining multiple inputs request to form a batch for inference.
图 2 : NVIDIA Triton 动态配料。

要了解这在实践中是如何工作的,请查看下面图 5 中的示例。该行显示给定模型在不同批量大小下的延迟和吞吐量。如果向用户提供良好体验的延迟阈值为 3ms ,则可以将动态批处理设置为 16 ,并满足延迟目标,同时获得比以批处理大小 1 运行时 3 倍以上的性能。此示例显示了 Triton 如何帮助管理批量大小和吞吐量以满足需求,而不依赖批量大小来管理您的服务。

This chart shows how different batches impact throughput & latency.
图 3 :不同批量大小的吞吐量延迟曲线。

总之, NVIDIA Triton 的动态批处理功能可以在严格的延迟限制下大幅提高吞吐量,从而提供 GPU 的高性能和利用率。

现在让我们看看 NVIDIA Triton 最近添加的一些功能。

模型分析器

为了有效地提供推理服务,应该为给定的处理器确定最佳的模型配置,例如批量大小和并发模型实例的数量。如今,用户手动尝试不同的(有时是数百种)组合,以最终找到适合其吞吐量、延迟和内存利用率要求的最佳配置。 NVIDIA Triton Model Analyzer 是一种优化工具,通过自动找到模型的最佳配置,为用户自动进行选择,以获得最高性能。用户可以指定性能要求(例如延迟约束、吞吐量目标或内存占用),模型分析器将搜索不同的配置(批量大小、并发模型实例等),并找到在其约束下提供最佳性能的配置。然后,它将输出一个摘要报告,其中包括如下所示的图表,以帮助可视化顶级配置的性能。例如:可以在 GitHub repo :https://github.com/triton-inference-server/model_analyzer中找到文档和示例。

These charts show the output from NVIDIA Triton Model Analyzer.
图 4 : NVIDIA Triton 型号分析器推荐的配置。

多 – GPU 多节点推理

NLP 模型的规模呈指数增长(每 2 . 5 个月翻一番)。例如, 2020 年初推出的 NVIDIA Turing NLG ( 17B 参数)应至少具有 34G 的 GPU 内存, 2020 年中期推出的 GPT-3 ( 175B 参数)应至少具有 350G 的 GPU 内存,最新的 Megatron NVIDIA Turing NLG ( 530B 参数)模型应具有> 1TB 的 GPU 内存。这些大型 transformer 型号无法装入单个 GPU 中。

对于这些非常大的 transformer 模型, NVIDIA Triton 引入了多 GPU 多节点推理。它使用以下模型并行技术在多个 GPU 和节点上拆分大型模型:

  • 管道(层间)并行,将连续的层集分割到多个 GPU 上。这将最大限度地提高单节点中的 GPU 利用率。
  • 张量(层内)平行性,将各个层分割到多个 GPU s 。这可以最大限度地减少单个节点中的延迟。

它在 Magnum IO 中使用 NCCL 进行拓扑感知通信,以实现高吞吐量。

实时推理性能需要多 CPU 推理。以下是在 GPU 和 CPU 纯服务器上运行 Megatron 图灵 NLG ( 530B )模型的比较。配置为–第 1 批查询,输入序列长度= 128 个令牌(平均 102 个字),输出序列长度= 8 个令牌(平均 6 个字)

  • GPU :约半秒使用张量和管道并行性– 2 DGX-A100-80GB ,批量大小= 1 , FP16 ,速度更快 transformer 4 . 0 , Triton 2 . 15 。
  • CPU :> 1 分钟–至强铂金 8280 2S ,最多 1TB /插槽系统内存,批量大小= 1 , FP32 , TensorFlow 。

在两台 DGX 上, Megatron NVIDIA Turing NLG 模型可以每半秒传输八个输出令牌(六个字),以减少实时对话的显示或讲话延迟。正如我们所看到的,如此大的模型应该具备 GPU 系统的强大功能,才具有实用性。许多 GPU 系统,如 DGX ,使用 NVLink 进行高性能节点内通信,使用 Infiniband / Ethernet 进行节点间通信。

新的 RAPIDS 林推理库后端

NVIDIA Triton 包括 RAPIDS ( FIL )作为 XGBoost 、 LightGBM 和 ScikitLearn 随机林模型 GPU 或 CPU 推断的后端。​ 通过 FIL 集成, NVIDIA Triton 现在是深度学习和传统机器学习工作负载的统一部署引擎。​

This chart shows that GPU model deployments with NVIDIA Triton FIL can provide very high throughput while maintaining minimal p99 latency.
图 5 : NVIDIA Triton 中为示例 XGBoost 模型提供服务的吞吐量和延迟曲线。

树模型( XGBoost 、 Random Forest 、 LightGBM )无处不在——特别是在金融和推荐系统中——但支持deep -learning模型的软件包很少支持树模型推理。在实践中,许多应用程序(尤其是推荐系统)使用树模型和 DL 模型的集合,并且需要工具来支持大规模对这些集合的推理。对于尽可能频繁地针对所有可用产品对所有客户重新评分或针对多个欺诈模型对每个全球信用卡交易评分等用例, FIL 后端提供了高度优化的解决方案。

虽然其他树模型部署解决方案通常需要将模型转换为 ONNX 等专用格式,但 FIL 后端允许用户根据培训部署 XGBoost 和 LightGBM 模型。此外, FIL 的 GPU – 加速推理意味着用户不再需要在小型模型上妥协以满足紧迫的延迟目标。相反,他们可以利用巨大的集成,在不影响延迟预算的情况下,提供更高的灵敏度,例如欺诈检测。

具有 FIL 后端的 NVIDIA Triton 支持 GPU 加速推理,即使是最大的树模型也可用于低延迟应用程序,从而提高欺诈检测、推荐系统等的准确性。在 GPU 和 CPU 上都可以对 XGBoost 、 LightGBM 的非分类特征、 cuML / Scikit 学习随机森林的单输出回归和二元分类进行推理。 LightGBM 机型的分类功能支持即将推出。

新的 Amazon SageMaker 集成

NVIDIA Triton 推理服务器现已在 Amazon SageMaker 中进行本机集成和提供。 AWS 和 NVIDIA 密切合作,提供这一功能,为客户提供 NVIDIA Triton 在 SageMaker 方面的优势。Amazon SageMaker是一项针对数据科学和机器学习( ML )工作流的全面管理服务。现在, NVIDIA Triton 推理服务器可用于为 Amazon SageMaker 中的推理模型提供服务,并受益于 NVIDIA Triton 提供的性能优化、动态批处理和多框架支持。它采取两个步骤:

  1. 在 Amazon S3 中创建 Triton 模型 repo 和配置。
  2. 创建 SageMaker NVIDIA Triton 端点并部署。

欲了解更多信息,请阅读本帖。 NVIDIA Triton 推理服务器容器可在 Amazon SageMaker 可用的所有地区使用,且无需额外费用。

NVIDIA Triton 可用于所有主要云服务提供商, AWS 、谷歌云、 Microsoft Azure 、阿里云和腾讯云,以及托管 Kubernetes 和 AI 平台服务。

客户成功案例

让我们来看看英伟达 Triton 的一些新客户成功案例:

  • 微软团队
    • Microsoft Azure 认知服务将 GPU 上的 Triton 用于 Microsoft 团队中的 ASR ,用于实时字幕和转录。有关详细信息,请阅读post
  • 西门子能源公司
    • 西门子能源公司使用 NVIDIA Triton 实现发电厂的自主运行。 NVIDIA Triton 推理服务器提供的计算机视觉模型可检测泄漏和其他异常情况。有关更多详细信息,请阅读post

结论

NVIDIA Triton 在每个数据中心、云和嵌入式设备中提供标准化的可扩展生产AI。它支持多个框架,在 CPU 和 GPU 上运行模型,处理不同类型的推理查询,并与Kubernetes和MLOPs平台集成。今天从NGC下载NVIDIA Triton 作为Docker容器,并在open source github上查找文档。此外,访问 NVIDIA Triton了解更多信息。

 

Tags