马上注册,结交更多好友,享用更多功能,让你轻松玩转社区
您需要 登录 才可以下载或查看,没有账号?立即注册
×
NVIDIA Triton Inference Server 是一个开源推理服务软件,它支持在 CPU 和 GPU 上大规模部署和运行深度学习模型。Triton 推理服务器的一个关键特性是其对集成模型(ensemble models)的支持,这使得用户能够将多个模型和数据处理步骤组合成一个端到端的推理管道。这对于需要多步骤处理的复杂任务,如自然语言处理、图像处理等,提供了极大的便利。
集成模型在 Triton 中被定义为有向非循环图(DAG)形式的模型集合,它们可以协同工作来处理输入数据,执行复杂的推理任务,并将结果输出。这种模型集合方法允许用户优化整个推理流程,而不仅仅是单个模型的执行。通过将多个模型的输入输出连接起来,形成一个处理流程,并通过集成调度器来管理和优化这些模型之间的数据流动,使得整个流程更加高效。同时依然可以使用 Triton 原有的 XLA、TRT 等编译优化能力并结合 dynamic batching 功能来进一步优化端到端耗时。 通过在 Triton 中定义集成模型,用户可以具备如下能力: 端到端优化:通过确保数据处理步骤和模型执行都在最适合的硬件上运行(GPU 或 CPU),整个推理流程可以得到优化。 减少数据传输:通过在 GPU 上执行预处理、模型推理和后处理步骤,可以减少数据在 CPU 和 GPU 之间的传输,从而降低延迟。 灵活性和扩展性:支持使用不同的框架后端构建模型管道,并提供了在 GPU 或 CPU 上运行它们的能力,甚至可以混合运行。 自定义逻辑:对于需要循环、条件或其他自定义逻辑的复杂用例。
集成模型是由一个或多个模型组成的流水线,这些模型或者程序通过输入和输出相互连接。集成模型的目的是封装涉及多个流程,例如“数据预处理 -> 推理(inference)-> 数据后处理”。使用集成模型可以避免在不同模型之间传输中间的开销,并减少必须发送到 Triton 的请求数量。对于集成模型,必须使用特定的“ensemble scheduler”(集成调度器),而不管集成内部各个模型使用的是什么调度器。从集成调度器的角度来看,集成模型并不是一个真实的模型,而是在模型配置中作为 ModelEnsembling::Step 条目指定了集成内部各个模型之间的数据流。调度器收集每个步骤中的输出张量,并根据规范将它们作为输入张量提供给其他步骤。尽管如此,从外部视角来看,集成模型仍然被视为一个单一的模型。 比如 NLP 场景就是很明显的需要做一次 Tokenizer 操作,还有 CV 场景也需要根据模型的要求进行图片的 Pillow 处理等。这套系统实践的意义在于提效,工程上可以快速的将各种模型与系统进行内部串联编排,加速工程与算法能力对于业务的支持,同时摆脱实现 inference 与一些预处理后处理到底在哪里做的困扰。(当然业务体量决定是否需要更多的细化拆分,这边不讨论这个话题) Triton Ensemble Model for deploying Transformers into production https://blog.ml6.eu/triton-ensemble-model-for-deploying-transformers-into-production-c0f727c012e3
Host ML models on Amazon SageMaker using Triton: CV model with PyTorch backend https://aws.amazon.com/cn/blogs/machine-learning/host-ml-models-on-amazon-sagemaker-using-triton-cv-model-with-pytorch-backend/
|