跳转到主要内容

PyTriton - Python环境中简化Triton部署的Flask/FastAPI-like接口。

项目描述

PyTriton - 一个类似Flask/FastAPI的框架,旨在简化NVIDIA的Triton Inference Server的使用。

有关如何部署模型、优化性能和探索API的全面指南,请参阅我们文档中的丰富资源。

功能概述

PyTriton的独特功能总结在功能矩阵中

功能

描述

原生Python支持

您可以创建任何Python函数并将其作为HTTP/gRPC API公开。

框架无关性

您可以运行任何您选择的框架中的Python代码,例如:PyTorch、TensorFlow或JAX。

性能优化

您可以从动态批处理、响应缓存、模型管道、集群、性能跟踪和GPU/CPU推理中受益。

装饰器

您可以使用批处理装饰器来处理推理函数的批处理和其他预处理任务。

易于安装和设置

您可以使用基于 Flask/FastAPI 的简单熟悉界面,以便于安装和配置

模型客户端

您可以通过配置选项和同步或异步 API 访问 HTTP/gRPC 请求的高级模型客户端。

流式传输(alpha)

您可以通过以解耦模式提供模型来从模型流式传输部分响应。

了解 PyTriton 的架构

先决条件

在继续安装 PyTriton 之前,请确保您的系统满足以下条件

  • 操作系统:兼容 glibc 版本 2.35 或更高版本。 - 主要在 Ubuntu 22.04 上进行测试。 - 其他支持的操作系统包括 Debian 11+、Rocky Linux 9+ 和 Red Hat UBI 9+。 - 使用 ldd --version 验证您的 glibc 版本。

  • Python:版本 3.8 或更高。

  • pip:版本 20.3 或更高。

  • libpython:确保已安装 libpython3.*.so,对应于您的 Python 版本。

安装

您可以通过运行以下命令从 pypi.org 安装 PyTriton

pip install nvidia-pytriton

重要:Triton Inference Server 二进制文件作为 PyTriton 软件包的一部分安装。

了解更多关于 PyTriton 的安装过程,包括 Docker 使用、先决条件和从源代码构建二进制文件以匹配特定 Triton 服务器版本的见解。

快速入门

快速入门展示了如何在无需更改当前工作环境的情况下运行 Triton Inference Server 中的 Python 模型。在示例中,我们使用一个简单的 线性 模型。

infer_fn 是一个函数,它接受一个 数据 张量并返回一个包含单个输出张量的列表。使用来自 批处理装饰器@batch 来处理模型的批处理。

import numpy as np
from pytriton.decorators import batch

@batch
def infer_fn(data):
    result = data * np.array([[-1]], dtype=np.float32)  # Process inputs and produce result
    return [result]

在下一步中,您可以使用 pyTriton 的 bind 方法创建推理可调用与 Triton Inference Server 之间的绑定。此方法接受模型名称、推理可调用、输入和输出张量以及可选的模型配置对象。

from pytriton.model_config import Tensor
from pytriton.triton import Triton
triton = Triton()
triton.bind(
    model_name="Linear",
    infer_func=infer_fn,
    inputs=[Tensor(name="data", dtype=np.float32, shape=(-1,)),],
    outputs=[Tensor(name="result", dtype=np.float32, shape=(-1,)),],
)
triton.run()

最后,您可以使用 ModelClient 类向模型发送推理查询。 infer_sample 方法接受一个 numpy 数组作为输入数据,并返回一个 numpy 数组作为输出数据。您可以在 客户端 部分了解 ModelClient 类的更多信息。

from pytriton.client import ModelClient

client = ModelClient("localhost", "Linear")
data = np.array([1, 2, ], dtype=np.float32)
print(client.infer_sample(data=data))

推理完成后,您可以停止 Triton Inference Server 并关闭客户端

client.close()
triton.stop()

推理的输出应为

{'result': array([-1., -2.], dtype=float32)}

有关定义模型并将其绑定到 Triton 服务器以及完整示例的详细说明,请参阅我们的快速入门说明。让您的模型运行起来,了解如何提供服务,并学习如何从客户端应用程序调用它。

完整示例代码可在 examples/linear_random_pytorch 中找到。

示例

《示例》页面展示了使用 PyTriton 提供模型的各种用例。这包括在 PyTorch、TensorFlow2、JAX 和纯 Python 中运行模型的简单示例。此外,还涵盖了更高级的场景,如在线学习、多节点模型以及使用 PyTriton 在 Kubernetes 上的部署。每个示例都附有构建和运行它的说明。通过探索我们的示例来发现更多关于利用 PyTriton 的信息。

项目详情


下载文件

下载适用于您的平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源分布

此版本没有可用的源分布文件。请参阅 生成分布存档 的教程。

构建分布

nvidia_pytriton-0.5.11-py3-none-manylinux_2_35_x86_64.whl (41.3 MB 查看哈希)

上传时间 Python 3 manylinux: glibc 2.35+ x86-64

nvidia_pytriton-0.5.11-py3-none-manylinux_2_35_aarch64.whl (40.0 MB 查看哈希)

上传时间 Python 3 manylinux: glibc 2.35+ ARM64

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面