Triton 云端生产实践

本文涉及的产品
模型训练 PAI-DLC,5000CU*H 3个月
模型在线服务 PAI-EAS,A10/V100等 500元 1个月
交互式建模 PAI-DSW,每月250计算时 3个月
简介: 机器学习模型的在线推理在生产实践中扮演着非常重要的角色,从典型的互联网场景中的搜索,广告,推荐的召回排序,到实时的图像识别,语音识别,文本处理等领域,都需要涉及到模型的在线推理,从简单的逻辑回归模型到复杂的深度学习模型,从 CPU 到 GPU 加速,Aliyun 推出的EAS模型推理平台在云原生模型推理领域深耕多年,旨在打造一个开放的高性能云原生模型推理平台,能够覆盖经典机器学习模型和深度学习模型对于在线推理的不同诉求,借助于阿里云的弹性底座来实现资源的动态弹性伸缩,降低用户成本。

背景


机器学习模型的在线推理在生产实践中扮演着非常重要的角色,从典型的互联网场景中的搜索,广告,推荐的召回排序,到实时的图像识别,语音识别,文本处理等领域,都需要涉及到模型的在线推理,从简单的逻辑回归模型到复杂的深度学习模型,从 CPU 到 GPU加速,Aliyun 推出的 EAS 模型推理平台在云原生模型推理领域深耕多年,旨在打造一个开放的高性能云原生模型推理平台,能够覆盖经典机器学习模型和深度学习模型对于在线推理的不同诉求,借助于阿里云的弹性底座来实现资源的动态弹性伸缩,降低用户成本。在推理引擎层面,EAS除自研的推理引擎支持外,同样兼容并包,支持诸如 Tensorflow Serving,Triton 等优秀的第三方推理引擎,本文我们将介绍如何使用 Nvidia 开源的Triton 推理引擎来部署服务到 EAS 上,以利用云原生推理平台的能力,更好地服务业务。


EAS 架构


EAS 在底层支持 CPU/GPU 等异常计算资源,上层基于 kubernetes 进行容器化资源管理和调度,在引擎层面上提供了基础的微服务接口,用户可以使用多种语言来开发推理微服务,实际上有很多用户对于该层微服务接口的使用也不再局限于模型推理,而是可以将更多业务逻辑的实现以该接口来实现。同时 EAS 也拥有一套自研的推理引擎和服务编排引擎,来实现复杂的流式的服务编排,特别是在视频和语音处理场景中,流式的架构能够极大提升服务性能。除自研的引擎和推理框架之外,EAS 也支持以自定义 docker 镜像的方式来部署服务,为用户提供足够的灵活性,基于该能力可以非常方便将开源的推理引擎部署到 EAS 平台上,如 Tensorflow Serving,Triton 等,能够快速满足已经使用这些引擎来部署过服务的用户快速迁移到云上。本文会以 Triton 为例介绍如何使用第三方推理引擎在云端部署模型推理服务。


服务部署


EAS 提供了 web 管理控制台可以对模型服务进行部署和管理,以及在线查看服务的监控日志等数据,同样 EAS 也提供了一个全功能的客户端工具 eascmd(https://help.aliyun.com/document_detail/195363.html),可以通过该工具实现对服务的部署和管理等操作,同时,所有的操作都有配套的openapi(https://help.aliyun.com/document_detail/412076.html)可以供用户更好地与自己的生产流程或内部业务平台做集成,本文中我们会以eascmd为例介绍如何部署 Triton 服务到 EAS 平台中。

在使用 eascmd 部署服务时,我们需要准备一个 json 格式的服务描述的配置文件,如下所示,相关参数说明在 eascmd 的使用文档中有详细介绍:

{

   "name": "triton_test",

   "processor": "triton",

   "processor_params": [

       "--model-repository=oss://triton-model-repo/models",

       "--allow-http=true"

   ],

   "metadata": {

       "instance": 1,

       "cpu": 4,

       "gpu": 1,

       "memory": 10000,

       "resource":""

 }

}

eas 中有一个概念为 processor,其含义为进去模型推理所需要执行的推理逻辑,EAS 平台基于自研的引擎提供了多种内置的 processor,同时也将三方引擎包装为 processor,如本例中 triton 即为一个 processor。使用如下命令即可在云端部署一个模型服务:

eascmd create service.json


服务管理及监控


使用 eascmd 或者控制台可以对服务进行查询管理运维等操作,如下界面为 eas 控制台,可对服务和资源进行全方位的管理

同时 eas 对每个服务采集了非常详尽的业务指标和系统指标以及支持用户自定义指标,可用于监控展示和告警,以及进行弹性伸缩。


高级功能介绍


EAS 提供了较多高级功能,包括微服务体系中的蓝绿发布,灰度发布,服务分组等功能,用户在模型部署过程中仅需提供模型文件,部署过程会自动构建镜像并进行部署,完成微服务化,并在集群内部服务之间互访时提供高效的内部通信接口等。接下来重点介绍一下较为重要的弹性伸缩功能,以及EAS在网络通信方面所做的优化。


自动水平扩缩容


在模型推理服务过程中,用户最为关注的除了性能之外往往是成本,而弹性是降低成本的很好的方式,这也是云端服务部署的独特优化,EAS 为用户提供了多种弹性伸缩的方式,包括支持系统指标如通用的 QPS,CPU Utilization 等,也包括用户自定义指标,借助于 EAS 的服务引擎和自研的Metrics Server,可以实例基于任意指标的弹性伸缩,同时EAS 也将指标以API的方式开放给外部用户,用户可以结合服务管控的 OpenAPI 来自定义弹性伸缩。

下图为一个开启了基于 CPU Ultilization 弹性伸缩的服务的监控页面,可以看到随着QPS曲线的上下波动,服务的实例个数以同样的趋势在上下波动,而 CPU Utilization 始终维持在预设置的 33% 左右,打开弹性伸缩后该服务能够节省 50% 的计算资源。不同服务的业务特点不同,流量低谷时长长于流量高峰的服务打开弹性伸缩后可以节省更多的计算资源。


直连的网络通信方式


EAS 通过打通用户 VPC 和 EAS 服务端的网络实现了服务的跨域直连请求,不再需要4层和 7 层的 Load Balancer,一方面避免了网关和 Load Balancer 带宽的限制,提升可扩展性,另一方面省掉了两次转发可以提供更好的通信性能。EAS 同时也支持经典的网关访问模式,提供了公网网关和内网网关,以及刚才提供到跨域直连三种访问方式,可供用户灵活选择,目前 EAS 的客户中大量的生产服务都使用直连的方式来进行服务访问。

上图为一个简单的网络架构图,EAS 提供了一个用于服务发现的 Service,配合该 Service 以及连通的网络,我们要以非常方便地在客户端通过软负载的方式直连到服务端发送请求,该架构下服务端的处理性能可以实现线性扩展。


关于PAI-EAS更多详细的功能,请参考文档:https://help.aliyun.com/document_detail/113696.html


相关实践学习
使用PAI-EAS一键部署ChatGLM及LangChain应用
本场景中主要介绍如何使用模型在线服务(PAI-EAS)部署ChatGLM的AI-Web应用以及启动WebUI进行模型推理,并通过LangChain集成自己的业务数据。
机器学习概览及常见算法
机器学习(Machine Learning, ML)是人工智能的核心,专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能,它是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域。 本课程将带你入门机器学习,掌握机器学习的概念和常用的算法。
相关文章
|
机器学习/深度学习 存储 数据采集
工业场景全流程!机器学习开发并部署服务到云端 ⛵
本文以保险金额预估为例,讲解机器学习从开发到云端服务部署的全流程:基于PyCaret开发机器学习全流程、基于Flask搭建简易前端Web应用程序、在Heroku云上部署机器学习应用。
918 2
工业场景全流程!机器学习开发并部署服务到云端 ⛵
|
14天前
|
监控 Cloud Native 微服务
云端漫步:探索云原生应用的构建与部署
【10月更文挑战第32天】在数字时代的浪潮中,云原生技术如同一艘航船,承载着企业的梦想驶向未知的海洋。本文将带你领略云原生应用的魅力,从基础概念到实战操作,我们将一步步揭开云原生的神秘面纱,体验它如何简化开发、加速部署,并提升系统的可扩展性与可靠性。让我们一起启航,探索云原生的世界!
|
2月前
|
人工智能 API 数据库
FastGPT一站式解决方案[1-部署篇]:轻松实现RAG-智能问答系统(含sealos云端部署、docker部署、OneAPI&Xinference模型接入)
【9月更文挑战第5天】 FastGPT一站式解决方案[1-部署篇]:轻松实现RAG-智能问答系统(含sealos云端部署、docker部署、OneAPI&Xinference模型接入)
 FastGPT一站式解决方案[1-部署篇]:轻松实现RAG-智能问答系统(含sealos云端部署、docker部署、OneAPI&Xinference模型接入)
|
5月前
|
机器学习/深度学习 边缘计算 测试技术
MLOps模型部署的三种策略:批处理、实时、边缘计算
机器学习运维(MLOps)是一组用于自动化和简化机器学习(ML)工作流程和部署的实践。所选择的部署策略可以显著影响系统的性能和效用。所以需要根据用例和需求,采用不同的部署策略。在这篇文章中,我们将探讨三种常见的模型部署策略:批处理、实时和边缘计算。
110 4
|
6月前
|
机器学习/深度学习 自动驾驶 搜索推荐
大模型技术的端侧部署
【1月更文挑战第14天】大模型技术的端侧部署
636 4
大模型技术的端侧部署
|
6月前
|
人工智能 Cloud Native PyTorch
阿里云 ACK 云原生 AI 套件中的分布式弹性训练实践
阿里云 ACK 云原生 AI 套件中的分布式弹性训练实践
148845 4
|
11月前
|
缓存 Kubernetes 容器
OpenKruise是阿里云开源的大规模应用自动化管理引擎
OpenKruise是阿里云开源的大规模应用自动化管理引擎
395 2
|
人工智能 安全 Cloud Native
带你读《云原生机密计算最佳实践白皮书》——部署TensorFlow Serving在线推理服务(1)
带你读《云原生机密计算最佳实践白皮书》——部署TensorFlow Serving在线推理服务(1)
522 0
带你读《云原生机密计算最佳实践白皮书》——部署TensorFlow Serving在线推理服务(1)
|
算法 安全 调度
隐语v0.7.18版本更新,构建跨机构分布式底座RayFed
隐语v0.7.18版本更新,构建跨机构分布式底座RayFed
479 0
|
弹性计算 Cloud Native TensorFlow
带你读《云原生机密计算最佳实践白皮书》——部署TensorFlow Serving在线推理服务(3)
带你读《云原生机密计算最佳实践白皮书》——部署TensorFlow Serving在线推理服务(3)
211 0

热门文章

最新文章