NVIDIA Triton 与 TorchServe 用于 SageMaker 推理?什么时候推荐每个?
两者都是现代的生产级推理服务器。 TorchServe 是 PyTorch 模型的 DLC 默认推理服务器。 SageMaker 上的 PyTorch 推理还支持 Triton。
有人有两者的良好比较矩阵吗?
在两个服务堆栈不同的地方添加重要注释:
TorchServe 不提供 Triton 提供的实例组功能(即将同一模型甚至不同模型的许多副本堆叠到同一 GPU 上)。这对于实时和批量用例来说都是一个主要优势,因为性能的提高几乎与模型复制计数成正比(即模型的 2 个副本几乎可以带来两倍的吞吐量和一半的延迟;查看 BERT 基准测试这里)。很难找到一个几乎相当于以一个 GPU 的价格拥有 2 个以上 GPU 的功能。 如果您正在部署 PyTorch DL 模型,您可能经常希望使用 GPU 来加速它们。 TensorRT (TRT) 是 NVIDIA 开发的编译器,可自动量化和优化您的模型图,这代表着另一个巨大的加速,具体取决于 GPU 架构和模型。这是可以理解的,因此这可能是自动优化模型以在 GPU 上高效运行并充分利用 TensorCore 的最佳方式。 Triton 具有原生集成来运行 TensorRT 引擎(甚至通过配置文件自动将模型转换为 TRT 引擎),而 TorchServe 则没有(即使您可以使用 TRT 引擎)。 当涉及到其他重要的服务功能时,两者之间有更多的相似之处:两者都具有动态批处理支持,您可以使用两者定义推理 DAG(不确定后者是否可以轻松地与 SageMaker 上的 TorchServe 一起使用),并且都支持自定义代码/handlers 而不仅仅是能够提供模型的转发功能。
最后,GPU 上的 MME(即将推出)将基于 Triton,这是客户熟悉它的一个有效论据,以便他们可以快速利用这一新功能来优化成本。
底线我认为 Triton 使用起来同样简单(如果不是更容易的话),并且为了充分利用底层硬件而进行了更多优化/集成(并且随着更新的 GPU 架构的发布,将进行更新以保持这种方式,可以轻松迁移到它们),并且当结合使用 TorchServe 的优化功能时,通常会在性能方面让 TorchServe 脱颖而出。
实际上,Biano AI对一些最常见的AI模型服务平台进行了很好的比较。您可以在这里查看。
比较的解释很清楚,但从经验来看,一旦您采用了 NVIDIA Triton 工作流程并花了一些时间阅读文档,对于需要在模型级别和系统级别进行极端微调的系统来说,它是最佳选择级别(吞吐量和延迟方面)。
它高度可靠,但您必须精通管理此类服务,并且它会将与监控、警报等相关的所有内容留给您。
NVIDIA Triton 的主要优势之一是支持不同的后端,它不仅允许您编写自己的后端,而且还具有 Python 后端来执行其他平台难以完成的自定义操作。
NVIDIA Triton 与 Mlflow 集成用于模型部署也是经过深思熟虑的,如果您已经使用 Mlflow/Databricks 来管理模型和实验,那么这是合理的选择。
最后,NVIDIA Triton 性能分析器非常适合运行基准测试并找到给定模型的最佳配置,并提供信息丰富的图表和指标。
我发现使用 Triton 的几个缺点之一是它不允许在 GPU 中加载同一模型的多个版本,这使得模型架构中的重大更改很难部署到查询的应用程序那个型号。
因为我没有足够的声誉来回复评论,所以我写了答案。 MME 是多模型端点。 MME 允许在多个模型之间共享端点后面的 GPU 实例,并根据传入流量动态加载和卸载模型。 您可以在这个link
中进一步阅读