前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >利用 NVIDIA Triton 2.3 简化和扩充推理服务

利用 NVIDIA Triton 2.3 简化和扩充推理服务

作者头像
GPUS Lady
发布2021-03-12 16:32:08
1.9K0
发布2021-03-12 16:32:08
举报
文章被收录于专栏:GPUS开发者GPUS开发者

本文来自NVIDIA Developer


AI、机器学习以及深度学习,是解决产品推荐、客户互动、财务风险评估、制造瑕疵侦测等各种运算问题的有效工具。在实际场域中使用 AI 模型,又称为推理服务,是将 AI 整合至应用程序中最复杂的部分。NVIDIA Triton 推理服务器可负责推理服务的所有流程,让您能专注于开发应用程序。

高效率推理服务

每一个 AI 应用都需要推理服务,但事实上推理服务十分复杂,原因如下:

  • 单一应用程序可能使用来自不同AI 框架的多个模型,以及各种预处理和后处理步骤。推理服务必须能支持多个框架后端。
  • 需求有多种类型:
    • 实时(在线)– 推理服务会受到延迟限制。
    • 批次(脱机)– 推理服务可提供高传输量。
    • 串流 – 推理服务必须保留查询顺序。
  • 模型可以在公有云、数据中心或企业边缘端的 GPU 和 CPU 基础架构上执行。
  • 模型必须以最佳的方式扩充,以满足应用程序的需求。
  • 必须监控模型状态及解决问题,以防止停机。
  • 必须将多个 KPI 优化:硬件利用率、模型推出时间和 TCO。

推理服务解决方案可以处理其中一些复杂事项,但是缺少许多进行高效率推论服务的优化方式。

Triton是一款高效率推论伺服软件,让您能专注于开发应用程序。此软件是属于开源软件,可以使用所有的主要框架后端进行推理:TensorFlow、PyTorch、TensorRT、ONNX Runtime,甚至以 C++ 和 Python 编写的自定义后端。它可以在三个方面,将推理优化。

  • -利用率:Triton 可以在 GPU 或 CPU 上部署模型。它可以使用动态批处理和并行模型执行等功能,将 GPU/CPU 利用率最大化。
  • -扩充性:Triton 是透过以微服务为基础的推理,提供数据中心和云端规模。它可以部署容器化微服务,在 GPU 和CPU上提供预处理或后处理以及深度学习模型。每一个 Triton 实例都可以在类似 Kubernetes 的环境中独立扩充,以达到最佳效能。使用 NGC 的单一Helm 指令,可以将 Triton 部署在 Kubernetes 中。
  • -应用程序体验:Triton具有可以让应用程序进行通讯的标准 HTTP/REST 和gRPC 端点。Triton 可支持实时、批次和串流推理查询,以提供最佳的应用程序体验。在实际使用时,无须中断应用程序即可于 Triton 中更新模型。Triton提供高传输量推理,同时使用动态批处理和并行模型执行,以符合严格的低延迟考虑。

发表 Triton 2.3

我们很高兴能发表 Triton 推理服务器 2.3 版。此版本导入了重要功能,进一步简化扩充式推理服务:

-Kubernetes 无服务器推理

-支持框架后端的最新版本:TensorRT 7.1、TensorFlow 2.2、PyTorch 1.6、ONNX Runtime 1.4

-Python 自定义后端

-支援 NVIDIA A100 和MIG

-解耦推理服务

-Triton Model Analyzer

-整合 Microsoft Azure Machine Learning

-整合 NVIDIA DeepStream

Kubernetes 无服务器推理

Triton 是第一款采用 KFServing 最新社区标准 gRPC 和 HTTP/REST 数据平面 v2 协定的推理服务软件。KFServing 是 Kubernetes 上,以标准为基础的无服务器推理。

透过配置自动化和自动扩充,可简化 Kubernetes 中的推理服务部署。并以透明化方式处理负载尖峰,因此即使要求大幅增加数量,也会持续流畅地执行服务。现在,组织可以透过此类新的整合,在 Kubernetes 环境中使用 Triton 轻松地部署高效能推理。

以下程序代码范例是示范如何使用 Triton 部署 BERT 模型。InferenceService 是 KFServing 导入的自定义资源,您可以在其中将类型指定为 triton 的预测器。如您所见,使用 KFServing 和 Triton ,仅需要大约 30 行,即能在 Kubernetes 中建置可扩充的推理服务。

代码语言:javascript
复制
apiVersion: “serving.kubeflow.org/v1alpha2”
kind: “InferenceService”
metadata:
  name: “bert-large”
spec:
  default:
    transformer:
      custom:
        container:
        name: kfserving-container
        image: gcr.io/kubeflow-ci/kfserving/bert-transformer:latest
          resources:
            limits:
              cpu: “1”
              memory: 1Gi
          command:
              – “python”
              – “-m”
              – “bert_transformer”
        env:
              – name: STORAGE_URI
                value: “gs://kfserving-samples/models/triton/bert-transformer”
    predictor:
      triton:
          resources:
            limits:
              cpu: “1”
              memory: 16Gi
              nvidia.com/gpu: 1
          storageUri: “gs://nv-enterprise/trtis_models/”

(左右滑动代码)

利用 KFServing,可以透过定义转换器,轻松地在部署中加入令牌化等预处理步骤以及后处理。若需要更多信息,请参阅 GitHub 上的 samples/triton/bert example。

Python 自定义后端

除可支持 C 和 C++ 应用程序的现有自定义后端环境外,Triton 亦可增加新的 Python 自定义后端。Python 自定义后端的功能十分强大,因为它可以在 Triton 内部执行任何的任意 Python 程序代码。使用 Python 程序代码的常见情境是针对神经网络进行预处理和后处理,以修改张量结构,例如旋转或裁切影像,或为推荐器工作负载进行特征工程。使用 Triton 中现有的模型整合功能,在深度学习框架后端进行神经网络推理之前和之后,可以执行 Python 程序代码。

支持 A100 和 MIG

NVIDIA A100 带来的突破性技术,例如第三代 Tensor 核心,可以多实例 GPU (MIG) 在执行各种工作负载时提升所有精度运算,以及可以将单一 A100 分成多达七个 GPU 实例,以优化 GPU 利用率,并让更多使用者存取。在 A100 上使用 Triton 进行推理的效能高于 V100(图 4)。在使用 ResNet50 PyTorch 模型的情况下,A100 搭配 Triton 的传输量和延迟,比 V100 快将近 3 倍。

您也可以使用 Triton,透过效能和故障隔离,在个别 MIG 实例上执行推理。

解耦推理服务

语音识别、语音合成等新兴使用案例需要采用此功能,在这些使用案例中,推理结果不是取决于完成完整的推理要求。在此类解耦模式下运作的模型,可以逐一要求决定为该要求产生多少响应。例如,在语音识别中,客户端可以在任何时间,以不同的速率和不同的样本数量,将音频样本传送至推理服务器。解耦模式可以让 Triton 在收到足够,但是非所有输入后启动模型。在 2.3 版中,此功能仅适用于 C/C++ 自定义后端。

Jarvis 对话式 AI 平台利用解耦推理服务功能已开放公测。若需要更多信息和早期试用,请在 NVIDIA Jarvis 注册。

Triton Model Analyzer

Tridon 推理服务器 2.3 版的关键功能为 Triton Model Analyzer,可用于分析模型效能和内存占用空间的特性.以实现高效率服务。它是由两个工具所组成:

-Triton perf_client 工具已改名为 perf_analyzer。其有助于针对各种批次大小和推理同时请求数量,分析模型之传输量和延迟的特性。

-新的内存分析器功能,有助于针对各种批次大小和推理同时请求数量,分析模型之内存占用空间的特性。

此处为 perf_analyzer 的输出范例,有助于确定模型的最佳批次和同时请求数量,以显示出批次大小、延迟百分比、传输量以及并行详细信息。

代码语言:javascript
复制
$ perf_client -m resnet50_netdef –concurrency-range 1:4*** Measurement Settings ***
  Batch size: 1
  Measurement window: 5000 msec
  Latency limit: 0 msec
  Concurrency limit: 4 concurrent requests
  Stabilizing using average latencyRequest concurrency: 1
  Client:
    Request count: 804
    Throughput: 160.8 infer/sec
    Avg latency: 6207 usec (standard deviation 267 usec)
    p50 latency: 6212 usec
…
Request concurrency: 4
  Client:
    Request count: 1042
    Throughput: 208.4 infer/sec
    Avg latency: 19185 usec (standard deviation 105 usec)
    p50 latency: 19168 usec
    p90 latency: 19218 usec
    p95 latency: 19265 usec
    p99 latency: 19583 usec
    Avg HTTP time: 19156 usec (send/recv 79 usec + response wait 19077 usec)
  Server:
    Request count: 1250
    Avg request latency: 18099 usec (overhead 9 usec + queue 13314 usec + compute 4776 usec)
Inferences/Second vs. Client Average Batch Latency
Concurrency: 1, 160.8 infer/sec, latency 6207 usec
Concurrency: 2, 209.2 infer/sec, latency 9548 usec
Concurrency: 3, 207.8 infer/sec, latency 14423 usec
Concurrency: 4, 208.4 infer/sec, latency 19185 usec

Triton 内存分析器具备许多优点,例如以最佳方式将模型分配至 GPU ,以避免在执行中发生内存不足的错误,并可优化模型的内存使用以改善效能,以及为模型分配合适的 GPU 资源。如图 6 显示来自于内存分析器,有助于确定需要加载至 GPU 内存,以进行推理服务之模型实例数量的范例输出。

图 6:使用 Triton Model Analyzer 分析内存的特性

整合 Microsoft Azure Machine Learning

客户可以在 Microsoft Azure Machine Learning 上使用 Triton,以获得高效能推理,并在推理过程中,以更具成本效益的方式利用 GPU。Triton 的优点包括动态批处理、在 GPU 上并行工作、支持 CPU,以及包含 ONNX Runtime 的多个框架后端。Azure Machine Learning 提供中央登录和 MLOps 功能,可以自动为已部署模型及其他机器学习资产提供版本追踪和稽核轨迹。请参阅文件,以了解如何在 Azure Machine Learning 中使用 Triton。

整合 NVIDIA DeepStream

NVIDIA DeepStream SDK 是使用于以 AI 为基础之多传感器处理、视讯和影像理解的完整串流分析工具套件。您可以使用 DeepStream 5.0 与 Triton 的原生整合,从 TensorRT 之外的多个深度学习框架部署模型,针对 NVIDIA T4 和 Jetson 平台进行快速原型设计。若需要更多信息,请参阅使用 NVIDIA DeepStream 5.0 建构智能影像分析应用程序。

客户使用案例

此处为客户使用 Triton 的方式。

微软(Microsoft)

Microsoft 使用 AI 为 Microsoft Word 在线使用者提供文法建议。他们希望能以最先进的准确性和速度,使用符合成本效益之方式部署运算复杂的深度学习模型。实时文法建议需要在 200 毫秒以下的严格延迟效率。

他们透过 Triton 和 ONNX Runtime,在 Azure Machine Learning 和 NVIDIA V100 GPU 上使用实时推理。Triton 可以利用动态批处理、并行执行以及 ONNX Runtime 整合,提供高传输量(在一个 V100 上每秒 450 次推理)和低延迟 (200 毫秒)。他们可以在 Azure Machine Learning Compute V100 GPU 上,将成本降低三分之一。若需要更多信息,请参阅微软在 Word Online 版本内采用 NVIDIA 的人工智能技术来提出文法建议。

美国运通(American Express)

American Express 服务拥有 1.44 亿张卡,每年产生超过 80 亿笔交易。他们希望能建构和部署实时(不到 2 毫秒)的诈骗侦测系统,使用机器学习和深度学习提高准确性。

他们使用 Triton 部署经过 TensorRT 优化的 GRU 模型,使用配备 T4 的服务器分析数千万笔日常交易。经强化的实时诈骗侦测系统可在 2 毫秒的低延迟范围内运作,相较于无法满足延迟需求的 CPU,改善达 50 倍。

Naver

Naver 是南韩顶尖的搜索引擎和因特网服务公司。他们将深度学习使用于实时影像分类、搜寻建议及其他用途中。使用多个框架(TensorFlow、PyTorch、Caffe 和 TensorRT)会减缓实时导入新 AI 模型的速度。此外,其管理成本高昂。

他们采用 Triton,因为其可支持多个框架,以及在 GPU 和 CPU 上进行实时、批次和串流推理。Triton 为他们提供单一推理平台,可以更快速地从多个框架推出新的深度学习模型,并能降低 Naver 的营运成本。

硅品(SPIL)

SPIL 是全球最大的外包半导体组装和测试公司。他们提供晶圆凸块服务,每天在单一生产在线检测大约 30,000 张晶圆影像是否有瑕疵。目前,他们的自动光学检测(AOI)平台会产生 70% 的假阳性,而需要进行第二次筛选。

SPIL 是使用深度学习模型(U-Net、DenseNet 和 Autoencoder),以 NVIDIA T4 GPU、TensorRT 和 Triton 进行第二层筛选。现在他们可以 100% 侦测出所有组装线晶圆的瑕疵,且假阳性不到 10%。Triton 的动态模型加载和解除加载可以协助他们扩充至 100 种不同的模型,且无须变更伺服基础架构。

Tracxpoint

Tracxpoint 是一家零售技术公司,创造出搭载深度学习的实体购物车,称为 AiC。购物者可以使用 AiC,将产品放入购物车中,就能实时获得个人化产品报价、轻松逛超市,并以数字方式付款。

Tracxpoint 在 NVIDIA T4 Tensor 核心 GPU 上利用经过 TensorFlow 和 TensorRT 优化的模型,使用 Triton 进行实时推理。AiC 可以在一秒内,辨识 100,000 种产品。模型每天都会重新接受训练,且 Tracxpoint 可以在 Triton 中无缝更新模型,且不会干扰用户。

结论

Triton 简化了生产中的大规模 AI 和深度学习模型部署。其可支持所有的主要框架、并行执行多个模型,以提高传输量和利用率,以及支持 GPU 和 CPU,并与 Kubernetes 整合,以进行扩充式推理。

请从 NGC 下载 Triton 推理服务器 2.3 版,并从 triton-inference-server/server GitHub 储存库取得原始码。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-02-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 GPUS开发者 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 高效率推理服务
  • 发表 Triton 2.3
  • Kubernetes 无服务器推理
  • Python 自定义后端
  • 支持 A100 和 MIG
  • 解耦推理服务
  • Triton Model Analyzer
  • 整合 Microsoft Azure Machine Learning
  • 整合 NVIDIA DeepStream
  • 客户使用案例
    • 微软(Microsoft)
      • 美国运通(American Express)
        • Naver
          • 硅品(SPIL)
            • Tracxpoint
            • 结论
            相关产品与服务
            容器服务
            腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档