输入“/”快速插入内容

模型推理

4月8日修改
快速入门
背景
近年来,随着人工智能的快速发展,AI模型如雨后春笋般涌现。而整个AI模型的生命周期如下图所示,主要包括数据采集数据预处理模型训练模型评估模型部署/服务化模型监控等环节。
💾
而模型推理部署/服务化是抽象的算法模型触达具体的实际业务的最后一公里。因此,模型部署是实际AI应用落地非常重要的环节,工程师辛苦训练出来的模型到落地部署应用有大量的工作,包括模型提取模型压缩模型加速以及模型服务化等等。
模型推理部署/服务化方式
·常见的模型部署方式有以下几种:
💾
服务器端部署:模型推理服务部署在服务器上,从而进行高性能完成推理任务;
边缘设备端部署:模型部署在手机或者其他端侧设备,利用端侧算力完成推理任务;
云端部署:模型部署在云端提供线上服务,用户可以使用客户端发送数据和请求,云端响应请求,完成推理任务并返回推理结果;
Web 端部署:模型部署在网页端,网页端完成推理任务;
如何选择模型推理服务化工具
常见的模型服务化工具如下图所示,主要分为三大类:
第一类:通过WEB框架封装AI模型提供服务,如:Sanic、Flask、Tornado等。
第二类:使用深度学习框架自带的Serving封装。如:TensorFlow Serving、TorchServe、MindSpore Serving等。
第三类:支持多种框架的统一推理服务化工具。如:Triton Inference Server、BentoML等。
从下图可知。开源模型服务框架的选择非常广泛。为了缩小范围,可以从以下几个因素进行考虑:
💾
对机器学习库的支持任何模型都将使用 TensorFlow、PyTorch 或 scikit-learn 等 ML 库进行训练。但是一些服务化工具支持多个 ML 库,而另一些服务化工具可能仅支持 TensorFlow。
模型是如何打包的一个典型的模型由原始模型资产和一堆代码依赖组成。比如:通过将模型 + 依赖项打包到 Docker 容器中来进行工作。 Docker 是将软件打包、分发和部署到现代基础设施的行业标准方式。
模型运行的地方一些服务框架只是为您提供了一个 Docker 容器,您可以在任何支持 Docker 的地方运行该容器。而一些服务框架则建立在 Kubernetes 之上,通过 Kubernetes 进行自动化部署、扩展和管理容器。
Triton 简介
Triton 是 Nvidia 发布的一个高性能推理服务框架,可以帮助开发人员高效轻松地在云端、数据中心或者边缘设备部署高性能推理服务。
💾
Triton Server 可以提供 HTTP/gRPC 等多种服务协议。同时支持多种推理引擎后端,如:TensorFlow, TensorRT, PyTorch, ONNXRuntime 等。Server 采用 C++ 实现,并采用 C++ API调用推理计算引擎,保障了请求处理的性能表现
在推理计算方面,Triton 支持多模型并发,动态batch等功能,能够提高GPU的使用率,改善推理服务的性能。Triton仅支持单模型部署,也支持多模型集成(ensemble),可以很好的支持多模型联合推理的场景,构建起视频图片语音文本整个推理服务过程,大大降低多个模型服务的开发和维护成本。
Triton的优势
与其他一些模型服务化工具相比,Triton具备如下的优势:
支持多种框架Triton 支持几乎所有主流的训练和推理框架,例如: TensorFlow、NVIDIA TensorRT、PyTorch、Python、ONNX、XGBoost、scikit-learn RandomForest、OpenVINO、自定义 C++ 等。
高性能模型推理Triton支持所有基于 NVIDIA GPU、x86、Arm CPU 和 AWS Inferentia 的推理。 它提供动态batching并发执行最佳模型配置模型集成(ensemble)和流式音频/视频输入以最大限度地提高吞吐量和利用率。
专为 DevOps 和 MLOps 而设计Triton 可以与 Kubernetes 集成以进行模型服务编排和扩展,支持导出用于监控的 Prometheus指标,支持实时模型更新,并可用于所有主流的公有云 AI 和 Kubernetes 平台 它还被集成到了许多 MLOps 软件解决方案中。