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

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

3天内不再提示

如何使用NVIDIA Triton Inference Server

jf_pJlTbmA9 来源:NVIDIA 作者:NVIDIA 2023-07-05 16:30 次阅读

人工智能模型无处不在,形式包括聊天机器人、分类和摘要工具、用于分割和检测的图像模型、推荐模型等。人工智能机器学习( ML )模型有助于实现许多业务流程的自动化,从数据中生成见解,并提供新的体验。

PythonAI/ML 开发中最受欢迎的语言之一。本文将教您如何使用 NVIDIA Triton Inference Server,并利用新的 PyTriton 接口

更具体地说,您将学习如何在 Python 开发环境中使用生产类工具对人工智能模型进行原型化和测试推理,以及如何使用 PyTriton 接口进行生产。与 FastAPI 或 Flask 等通用 web 框架相比,您还将了解使用 PyTriton 的优势。这篇文章包括几个代码示例,说明如何激活高性能的批处理、预处理和多节点推理;并实施在线学习。

什么是 PyTriton ?

PyTriton 是一个简单的接口,可让 Python 开发人员使用 Triton 推理服务器为 Python 代码中的人工智能模型、简单处理功能或整个推理管道提供服务。Triton 推理服务器是一款开源的多框架推理服务软件,在 CPUGPU 上具有较高的性能。

PyTriton 可以实现快速原型设计和测试 ML 模型,同时实现高 GPU 利用率的性能和效率。只需一行代码,就可以调出 Triton 推理服务器,提供 动态批处理、并发模型执行以及从 GPU 代码中支持 GPU 和 Python 的优势。

PyTriton 消除了建立模型存储库和将模型从开发环境移植到生产环境的需要。现有的推理管道代码也可以在不进行修改的情况下使用。这对于较新类型的框架(如 JAX )或复杂的管道(它们是 Triton 推理服务器中没有专用后端的应用程序代码的一部分)尤其有用。

Flask 的简单性

Flask 和FastAPI 是通用的 Python Web 框架,用于部署各种各样的 Python 应用程序。由于它们的简单性和广泛采用,许多开发人员在生产中使用它们来部署和运行人工智能模型。然而,这种方法存在显著的缺点,包括:

通用网络服务器缺乏对人工智能推理功能的支持。没有现成的支持来利用像 GPU 这样的加速器,或者打开动态批处理或多节点推理。

用户需要构建逻辑来满足特定用例的需求,如音频/视频流输入、有状态处理或预处理输入数据以适应模型。

关于计算和内存利用率或推理延迟的指标不容易用于监控应用程序的性能和规模。

Triton Inference Server包含对上述功能以及更多功能的内置支持。PyTriton 提供了 Flask 的简单性和 Python 中 Triton 的示例部署。HuggingFace 文本分类管道使用 PyTriton 如下所示:

import logging

 

import numpy as np

from transformers import BertTokenizer, FlaxBertModel  # pytype: disable=import-error

 

from pytriton.decorators import batch

from pytriton.model_config import ModelConfig, Tensor

from pytriton.triton import Triton

 

logger = logging.getLogger("examples.huggingface_bert_jax.server")

logging.basicConfig(level=logging.INFO, format="%(asctime)s - %(levelname)s - %(name)s: %(message)s")

 

tokenizer = BertTokenizer.from_pretrained("bert-base-uncased")

model = FlaxBertModel.from_pretrained("bert-base-uncased")

 

 

@batch

def _infer_fn(**inputs: np.ndarray):

	(sequence_batch,) = inputs.values()

 

	# need to convert dtype=object to bytes first

	# end decode unicode bytes

	sequence_batch = np.char.decode(sequence_batch.astype("bytes"), "utf-8")

 

	last_hidden_states = []

	for sequence_item in sequence_batch:

    	tokenized_sequence = tokenizer(sequence_item.item(), return_tensors="jax")

    	results = model(**tokenized_sequence)

    	last_hidden_states.append(results.last_hidden_state)

	last_hidden_states = np.array(last_hidden_states, dtype=np.float32)

	return [last_hidden_states]

 

 

with Triton() as triton:

	logger.info("Loading BERT model.")

	triton.bind(

    	model_name="BERT",

    	infer_func=_infer_fn,

    	inputs=[

        	Tensor(name="sequence", dtype=np.bytes_, shape=(1,)),

    	],

    	outputs=[

        	Tensor(name="last_hidden_state", dtype=np.float32, shape=(-1,)),

    	],

PyTriton 为 Flask 用户提供了一个熟悉的界面,便于安装和设置,并提供了以下好处:

​用一行代码调出 NVIDIA Triton

无需设置模型存储库和模型格式转换(对于使用 Triton 推理服务器的高性能实现非常重要)

使用现有推理管道代码而不进行修改

支持许多装饰器来调整模型输入

无论是在generative AI应用程序还是其他模型中,PyTriton 可以让您在自己的开发环境中获得 Triton InferenceServer 的好处。它可以帮助利用 GPU 在很短的时间内(毫秒或秒,取决于用例)生成推理响应。它还有助于以高容量运行 GPU ,并且可以同时为许多推理请求提供服务,且基础设施成本低。

PyTriton 代码示例

本节提供了一些可以用来开始 PyTriton 的代码示例。它们从本地机器开始,这是测试和原型的理想选择,并为大规模部署提供 Kubernetes 配置。

动态配料支持

Flask/FastAPI 和 PyTriton 之间的一个关键区别是,动态批处理允许对来自模型的多个调用应用程序的推理请求进行批处理,同时保留延迟要求。两个示例是HuggingFace BART PyTorch和HuggingFace ResNET PyTorch。

在线学习

在线学习是指在生产中不断从新数据中学习。使用 PyTriton,您可以控制支持推理服务器的不同模型实例的数量,从而使您能够同时训练和服务同一个模型。想要了解更多关于如何使用 PyTriton 在 MNIST 数据集上同时训练和推断模型的信息,请访问 PyTriton 的示例。

大型语言模型的多节点推理

太大而无法放入单个 GPU 内存的大型语言模型(LLM)需要将模型划分为多个 GPU,在某些情况下,还需要跨多个节点进行推理。要查看示例,请访问 Hugging Face OPT 模型在 JAX 中的多节点推理。

想要查看NeMo Megatron GPT 模型部署,使用NVIDIA NeMo 1.3B 参数模型。使用 Slurm 和 Kubernetes 展示了多节点推理部署编排。

稳定扩散

使用 PyTriton ,您可以使用预处理装饰器来执行高级批处理操作,例如使用简单的定义将相同大小的图像批处理在一起:

@batch

@group_by_values("img_size")

@first_value("img_size")

想了解更多信息,请查看此示例,该示例使用 Hugging Face 的 Stable Diffusion 1.5 图像生成管道。

总结

PyTriton 提供了一个简单的接口,使 GPU 开发人员能够使用 NVIDIA Triton InferenceServer 为模型、简单的处理功能或整个推理管道提供服务。这种对 Python 中的 Triton 推理服务器的本地支持使 ML 模型的快速原型设计和测试具有性能和效率。一行代码就会显示 Triton 推理服务器。动态批处理、并发模型执行以及 Python 代码中对 GPU 和 Python 的支持都是其中的好处。 PyTriton 提供了 Flask 的简单性和 Python 中 Triton InferenceServer 的优点。

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

    关注

    14

    文章

    4687

    浏览量

    102119
  • 人工智能
    +关注

    关注

    1781

    文章

    45023

    浏览量

    232417
  • python
    +关注

    关注

    53

    文章

    4703

    浏览量

    83704
收藏 人收藏

    评论

    相关推荐

    GTC2022大会黄仁勋:NVIDIA Triton是AI部署的“中央车站”

    GTC2022大会黄仁勋:NVIDIA Triton是AI部署的“中央车站”,支持在每一代NVIDIA GPU、x86和ARM CPU上部署模型。
    的头像 发表于 03-23 16:23 1355次阅读
    GTC2022大会黄仁勋:<b class='flag-5'>NVIDIA</b> <b class='flag-5'>Triton</b>是AI部署的“中央车站”

    Microsoft使用NVIDIA Triton加速AI Transformer模型应用

    Microsoft 的目标是,通过结合使用 Azure 与 NVIDIA GPU 和 Triton 推理软件,率先将一系列强大的 AI Transformer 模型投入生产用途。
    的头像 发表于 04-02 13:04 1571次阅读

    NVIDIA Triton推理服务器简化人工智能推理

    GKE 的 Triton 推理服务器应用程序是一个 helm chart 部署程序,可自动安装和配置 Triton ,以便在具有 NVIDIA GPU 节点池的 GKE 集群上使用,包括
    的头像 发表于 04-08 16:43 1982次阅读
    <b class='flag-5'>NVIDIA</b> <b class='flag-5'>Triton</b>推理服务器简化人工智能推理

    使用NVIDIA Triton推理服务器简化边缘AI模型部署

      NVIDIA Triton 有助于在每个数据中心、云和嵌入式设备中实现标准化的可扩展生产 AI 。它支持多个框架,在 GPU 和 DLA 等多个计算引擎上运行模型,处理不同类型的推理查询。通过与 NVIDIA JetPack
    的头像 发表于 04-18 15:40 2497次阅读
    使用<b class='flag-5'>NVIDIA</b> <b class='flag-5'>Triton</b>推理服务器简化边缘AI模型部署

    利用NVIDIA Triton推理服务器加速语音识别的速度

    网易互娱 AI Lab 的研发人员,基于 Wenet 语音识别工具进行优化和创新,利用 NVIDIA Triton 推理服务器的 GPU Batch Inference 机制加速了语音识别的速度,并且降低了成本。
    的头像 发表于 05-13 10:40 1608次阅读

    NVIDIA Triton助力腾讯PCG加速在线推理

      借助NVIDIA Triton 推理框架,配合 DALI/FIL/Python 等Backend,以及 TensorRT,整体推理服务的吞吐能力最大提升 6 倍,延迟最大降低 40%。
    的头像 发表于 05-20 15:25 2189次阅读
    <b class='flag-5'>NVIDIA</b> <b class='flag-5'>Triton</b>助力腾讯PCG加速在线推理

    基于NVIDIA Triton的AI模型高效部署实践

    NVIDIA Triton 推理服务器(以前称为 TensorRT 推理服务器)是一款开源软件,可简化深度学习模型在生产环境中的部署。借助 Triton 推理服务器,Devops 和 MLops
    的头像 发表于 06-28 15:49 1433次阅读

    NVIDIA Triton的概念、特性及主要功能

    NVIDIA Triton 推理服务器是 NVIDIA AI 平台的一部分,它是一款开源推理服务软件,可助力标准化模型的部署和执行,并在生产环境中提供快速且可扩展的 AI。
    的头像 发表于 07-18 10:11 2784次阅读

    NVIDIA Triton系列文章:开发资源说明

    这里最重要的是 “server documents on GitHub” 链接,点进去后会进入整个 Triton 项目中最完整的技术文件中心(如下图),除 Installation
    的头像 发表于 11-09 16:17 586次阅读

    NVIDIA Triton 系列文章(4):创建模型仓

    ://github.com/triton-inference-server/server/tree/main/docs  这个最完整的说明文件区,在  “User Guide”  里的前 5 个步骤,就是为 Tr
    的头像 发表于 11-15 21:20 720次阅读

    NVIDIA Triton 系列文章(9):为服务器添加模型

    前面已经用  https://github.com/triton-inference-server/server/doc/examples 开源仓的范例资源,创建一个最基础的模型仓以便执行一些
    的头像 发表于 12-27 21:20 835次阅读

    如何使用NVIDIA Triton 推理服务器来运行推理管道

    使用集成模型在 NVIDIA Triton 推理服务器上为 ML 模型管道提供服务
    的头像 发表于 07-05 16:30 1234次阅读
    如何使用<b class='flag-5'>NVIDIA</b> <b class='flag-5'>Triton</b> 推理服务器来运行推理管道

    周四研讨会预告 | 注册报名 NVIDIA AI Inference Day - 大模型推理线上研讨会

    由 CSDN 举办的 NVIDIA AI Inference Day - 大模型推理线上研讨会,将帮助您了解 NVIDIA 开源大型语言模型(LLM)推理加速库 TensorRT-LLM  及其功能
    的头像 发表于 10-26 09:05 233次阅读

    什么是Triton-shared?Triton-shared的安装和使用

    经过前面几章关于triton在nv gpu上调优的讲解,我们这章开始来看看triton的一个third_party库,该库是为了让triton去支持更多其他的backend。该项目的地址如下所示
    的头像 发表于 12-19 09:47 620次阅读
    什么是<b class='flag-5'>Triton</b>-shared?<b class='flag-5'>Triton</b>-shared的安装和使用

    使用NVIDIA Triton推理服务器来加速AI预测

    这家云计算巨头的计算机视觉和数据科学服务使用 NVIDIA Triton 推理服务器来加速 AI 预测。
    的头像 发表于 02-29 14:04 342次阅读