如何使用 PAI-EAS 部署 API 服务|学习笔记

本文涉及的产品
模型在线服务 PAI-EAS,A10/V100等 500元 1个月
模型训练 PAI-DLC,5000CU*H 3个月
交互式建模 PAI-DSW,5000CU*H 3个月
简介: 快速学习如何使用 PAI-EAS 部署 API 服务。

开发者学堂课程【PAL 平台学习路线:机器学习入门到应用:如何使用 PAI-EAS 部署 API 服务】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/855/detail/14232


如何使用 PAI-EAS 部署 API 服务

 

内容介绍

一个部分是如何部署模型在线服务;

第二部分是如何用部署好的服务做调用预测。这两部分都会讲解如何使用Web的前端页面来使用,如何使用EAS进行使用。

一、如何部署模型在线服务

二、部署好之后的调用

 

一、如何部署模型在线服务

首先我们从模型服务如何部署开始,部署首先进行 Web 页面的操作。

图片31.png

上图的页面是 PAI studio 运行好的一个实验前端页面,这是一个心脏病预测的实验。心脏病测验是一个基本的线性逻辑回归的预测,这样的模型训练好之后后面有一个勾号说明实验运营好并且实验已经训练好了。

 图片32.png

可以对这个模型进行操作,首先可以右键勾号,可以将这个模型导出成一个 PMML 文件。之后可以将 PMML文件上传到 OSS 或者内部的任何一个存储的地方,之后用存储的链接来部署。

 图片33.png

另外还有一种更简便的方式,可以点击左上角的一键部署(模型在线部署)就无需将模型导出,然后在上传到某一个存储的地方再使用链接部署了。现在尝试一下一键部署,选择实验画布里面有的服务,因为有时一个实验里面会有多种类型,需要做选择。选择好点击下一步。

图片34.png

可以看到上图做部署有三种选项,第一个是新建服务,将这个模型部署成一个全新的服务;第二个是在已有的服务基础上增加一个版本,这种服务适合模型的迭代更新,也就是说之前已经训好一个模型了,后来由于数据的变动相对模型进行优化迭代或者它的精准度有进一步的提升,就在这个基础上部署它的第二个版本。第三个是蓝绿部署,这个部署适用于两个差异比较大的模型,希望进行AB的互相的交换逐渐的向B模型去过渡的时候使用蓝绿部署的功能。在蓝绿部署的时候,这两个模型是可以互相切流的,也就是流量可以一点一点切换然后过渡过去的。比如原来的一个A模型和一个 B 模型,AB 模型同时接受流量并且流量的配比由我们自己决定,A 模型20%,B 模型占80%,这个我们都可以自己做调整。

这里我们先做一个新建的模型服务的示例。

图片35.png

定义一个名字,选择进程数(这个模型服务下面有多少个子进程,每一个子进程都可以独立的承担流量的接受并且对流量进行数据的处理以及预测;进程数多对服务有更好的保障。其中某一个进程坏掉了,其他进程可以继续做模拟服务的预测,保证线上服务的稳定性),核数(根据模型所需的资源来定,遇到具体的情况再做判断。)现在这个模型需要2核4G 的计算资源,选择好之后点击下一步。

图片36.png

上图是一个确认页面,确认没问题之后点击部署。

图片37.png

点击部署好了之后页面,会出现刚刚选好的模型0304,状态是 creating,需要稍微等待几分钟就会变成正常的running 的状态。下面的是昨天部署的服务。

可以对已经部署好的模型做一些相应的操作,点击模型的名称,可以看到这个模型的调用的说明:

图片38.png

如何访问模型以及它的 token 密钥是什么。这是下一步做模型调用的需要的基本信息。我们会在第二个环节讲解。

同样还可以做其他的操作,比如点击模型的更新

图片39.png

更新可以增加它的进程数(下面有几个子进程)更改每一个进程所需要的计算的资源量。以上是更新的操作。

同时还可以看到监控的页面,下图:

图片40.png

监控页面就是这个服务当前整体的 QPS、response、traffic 流量、RT 延迟、CPU 和 memory 水位的情况都可以在方便的通过可视化的方式看到模型的状态。因为目前的模型还没有被调用过,所有它的信息暂时还看不到。但是我们可以对这个模型进行服务调用,调用完之后会有相应的监控指标会出现。

刚刚模型的 creating 现在变成了 waiting,就是整个服务在做拉起的状态。Waiting 之后的状态就会进入 running,可能会有几分钟的时间。目前已经过了两分钟了。以上就是整个部署的过程,包括部署之后可以进行的一些操作。

还可以通过 ESCMD 的方式来进行服务的部署。

大家可以在文档中对应的了解,文档中也都讲解了 ESCMD 如何使用。首先第一步是下载 ESCMD,下载完成之后需要做权限的设置和基本账户的配置。以上东西配置好之后就可以进行命令的使用了。

下面是具体的演示:

在终端就可以通过./escmd 的方式来执行命令行的任务。在执行之前需要做一些准备工作。包括 json 文件的编写,也就是说待会 escmd 这个 comeout 命令就是 create 这个 .json 文件。也就是会根据这个 json 文件进行模型服务的部署。

"name": "heart 0304"

"node l_path“:”oss://eas-model-singpore/1664081855183111/heart-model.pmml”,

"processor":“pmml”,

"metadata":{

"instance"1,

"cpu""2

JSON 文件里面第一个写了 name,name 就是这个模型服务要部署成什么名字,就是在刚刚的页面做的同样的操作。下面还需要写上模型的路径(将文件下载下来之后上传到某一个地方,这个 URL 只要是内部能够访问的 URL,或者是OSS 的 URL 都可以在这里使用。)这是模型路劲。

下面是 process 的类型(这个模型使用什么样的模型加载处理逻辑,会有一些内置的 process,会可以使用自定义的方式对 process 进行定制化一些操作。)这里我们刚好有内置的 process 的名字,刚好叫做 PML。

Metadata 是对模型运行所需要的资源以及实例数进行定义,这里看到 instance(模型下面有多少个子进程)是一个实例,这里我们设置为2个实例。CPU 就 是需要计算的资源,memory 就是按照1:4比例分配的,这里2核的话就是8G.

编写好 json 文件之后,就可以去做执行了。

执行的命令:./escmdmac64(下载好的 cmd 的名字) create 命令 heart.json。点击回车之后就可以看到在做创建了。Servers is now creating(指的就是在创建状态了)这个创建也是需要一定的时间的。

我们可以看到在 CMD 操作的命令会在前端页面同样的展示出来。也就是说通过 CMD 创建的模型服务在前端同样看得到。看到模型0305现在就是在创建中的一个状态了。创建的状态也可以做一些模型的操作。以上就是使用 CMD做基本创建的命令执行。

CMD 还可以做很多其他的操作,除了创建还可以做修改配置:

我们刚刚在前端页面也做了修改配置,使用 CMD 就是把刚刚的 create 换成 modify,将名字写在后面+Dmetadata写好之后就可以做修改配置了。比如原来是2核8G现在想要变成4核16G.我们就可以通过 modify 的命令将 metadata的信息改一下。

还可以做模型的更新服务:

图片41.png

更新成新的模型文件。

还可以做停止 STOP。使用的方式都是大同小异的,都是在终端内使用./EScomeout 执行,之后将后面的命令换一下就好了。STOP、CREAT、modify、DELETE 等操作。

以上就是通过ESCMD来进行模型服务的部署,我们看到现在已经是 running 状态了,也就是刚刚创建的模型已经部署好了。发现前端页面也是同步的,模型服务是运行中的状态。

目前已经通过两种方式:前端页面一键部署、CMD 部署(需要将模型服务下载,并且上传到一个地方将 URL链接填进去)

以上是如何部署和一些操作服务,接下来我们看一些如何做部署好的服务调用。

 

二、部署好之后的调用

图片42.png

上图可以看到一些调用的信息,这是普通的公网调用,下面有访问地址和 token 密钥,密钥可以点击查看或者隐藏。就是通过以上地址定位模型查看以及健全的访问。

调用的两种方式:

点击右上角在线调试

 图片43.png

这里以选好了模型的名字,请求地址,token 都自动调好了。这里只需要填一下 body 的信息,可以在文件内直接复制。链接就是心脏病做预测用的一些信息,比如包括这个人的性别、年龄、肺部的信息最后进行心脏病的预测。就是一些请求的内容。点击运行,就可以看到返回信息,就是判断有没有得心脏病和有没有得心脏病的概率;分别是0.98和0.01。通过这一块就可以做一个调试来看看这个模型运行是否正常,以及构建的请求的 body 是否合理合规。在线调试成功之后可以用正式的方式来做调研。在线调试就相当于前端页面的访问,正式的都是通过代码来调用的。

代码调用有两种方式:

第一种可以使用 ES 官方提供的 SDK 来做调用 python 的 SDK 或者 Java 的 SDK 两 种。下图就是使用 python的SDK来做调用。

图片44.png

另外也可以自己实现调用的逻辑,用 python 语言自行实现调用逻辑。这两种方式都是可以的。用官方的方式(可以做到性能的保障但是没有高的自由度)或者自定义实现的方式(可以实现特定的需求),下图就是自定义的例子:

import requests

url=http://1664081855183111.ap-southeast-1.pai-eas.aliyuncs.com/api/predict/heart_0302'

Headers={"Authorization":"OTJHNZU2MTJiNDLNUc5MWJjMDYOMjUzNGY2MGUyY2M3YjI2ZQNE==")

data = "I("sex":0, " cp":0 "fbs":0, "restecg": 0, "exang":0, "slop":0, "thal':0, "age":0, "trestbps":0, "chol":0, "thalach": 0, "oldpeak":0, "ca":0}

resp- requests.post (url, data =data, headers headers)

print resp

print resp. content

可以看到 import request,url 后面加链接。Header 的信息,data 是输入请求的数据(同在线调试)。下面去做预测。执行预测然后把预测的结果打印出来。

接下来就可以运行这个文件 python heart-custom.py 文件。然后运行,很快会出现 response[200]是正常的。也可以看到预测对应的概率,分别是0.99和0.005。

以上就是通过调用拿到结果的信息。预测之后就会有监控的信息。

图片45.png

图片46.png

可以看到上图的 response、QPS、CPU、memory(看不到可能是因为时长挑的太久了)已经有数据了。上图就是刚刚做的调用所展示出来的数据。如果调用更大的话,这边的监控数据会显示曲线。

以上就是如何通过前端页面或者通过代码的方式来做模型调用的服务。

调用的代码也有两种方式,对应的方式在文档内有详细的讲述如何使用。如何使用普通的方式调用或者使用官方的SDK在文档中看到。

相关实践学习
使用PAI-EAS一键部署ChatGLM及LangChain应用
本场景中主要介绍如何使用模型在线服务(PAI-EAS)部署ChatGLM的AI-Web应用以及启动WebUI进行模型推理,并通过LangChain集成自己的业务数据。
机器学习概览及常见算法
机器学习(Machine Learning, ML)是人工智能的核心,专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能,它是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域。 本课程将带你入门机器学习,掌握机器学习的概念和常用的算法。
相关文章
|
7天前
|
机器学习/深度学习 数据采集 Python
从零到一:手把手教你完成机器学习项目,从数据预处理到模型部署全攻略
【10月更文挑战第25天】本文通过一个预测房价的案例,详细介绍了从数据预处理到模型部署的完整机器学习项目流程。涵盖数据清洗、特征选择与工程、模型训练与调优、以及使用Flask进行模型部署的步骤,帮助读者掌握机器学习的最佳实践。
28 1
|
1月前
|
监控 安全 API
Docker + .NET API:简化部署和扩展
Docker + .NET API:简化部署和扩展
35 0
|
1月前
|
监控 安全 API
最完美的扩展Docker + .NET API:简化部署和扩展
最完美的扩展Docker + .NET API:简化部署和扩展
49 0
|
2月前
|
缓存 Java 应用服务中间件
随着微服务架构的兴起,Spring Boot凭借其快速开发和易部署的特点,成为构建RESTful API的首选框架
【9月更文挑战第6天】随着微服务架构的兴起,Spring Boot凭借其快速开发和易部署的特点,成为构建RESTful API的首选框架。Nginx作为高性能的HTTP反向代理服务器,常用于前端负载均衡,提升应用的可用性和响应速度。本文详细介绍如何通过合理配置实现Spring Boot与Nginx的高效协同工作,包括负载均衡策略、静态资源缓存、数据压缩传输及Spring Boot内部优化(如线程池配置、缓存策略等)。通过这些方法,开发者可以显著提升系统的整体性能,打造高性能、高可用的Web应用。
71 2
|
3月前
|
开发者 算法 虚拟化
惊爆!Uno Platform 调试与性能分析终极攻略,从工具运用到代码优化,带你攻克开发难题成就完美应用
【8月更文挑战第31天】在 Uno Platform 中,调试可通过 Visual Studio 设置断点和逐步执行代码实现,同时浏览器开发者工具有助于 Web 版本调试。性能分析则利用 Visual Studio 的性能分析器检查 CPU 和内存使用情况,还可通过记录时间戳进行简单分析。优化性能涉及代码逻辑优化、资源管理和用户界面简化,综合利用平台提供的工具和技术,确保应用高效稳定运行。
71 0
|
3月前
|
前端开发 开发者 设计模式
揭秘Uno Platform状态管理之道:INotifyPropertyChanged、依赖注入、MVVM大对决,帮你找到最佳策略!
【8月更文挑战第31天】本文对比分析了 Uno Platform 中的关键状态管理策略,包括内置的 INotifyPropertyChanged、依赖注入及 MVVM 框架。INotifyPropertyChanged 方案简单易用,适合小型项目;依赖注入则更灵活,支持状态共享与持久化,适用于复杂场景;MVVM 框架通过分离视图、视图模型和模型,使状态管理更清晰,适合大型项目。开发者可根据项目需求和技术栈选择合适的状态管理方案,以实现高效管理。
41 0
|
3月前
|
机器学习/深度学习 TensorFlow 算法框架/工具
全面解析TensorFlow Lite:从模型转换到Android应用集成,教你如何在移动设备上轻松部署轻量级机器学习模型,实现高效本地推理
【8月更文挑战第31天】本文通过技术综述介绍了如何使用TensorFlow Lite将机器学习模型部署至移动设备。从创建、训练模型开始,详细演示了模型向TensorFlow Lite格式的转换过程,并指导如何在Android应用中集成该模型以实现预测功能,突显了TensorFlow Lite在资源受限环境中的优势及灵活性。
180 0
|
3月前
|
机器学习/深度学习 TensorFlow 算法框架/工具
TensorFlow Serving 部署指南超赞!让机器学习模型上线不再困难,轻松开启高效服务之旅!
【8月更文挑战第31天】TensorFlow Serving是一款高性能开源服务系统,专为部署机器学习模型设计。本文通过代码示例详细介绍其部署流程:从安装TensorFlow Serving、训练模型到配置模型服务器与使用gRPC客户端调用模型,展示了一站式模型上线解决方案,使过程变得简单高效。借助该工具,你可以轻松实现模型的实际应用。
43 0
|
3月前
|
缓存 API 数据库
打造高性能后端API:从设计到部署的实战之旅
【8月更文挑战第31天】在数字化时代的浪潮中,后端API成为了连接用户、数据与服务的桥梁。本文将带领读者踏上一段从API设计、开发到部署的旅程,通过实际案例分析,揭示如何构建一个高性能的后端系统。我们将探讨现代后端架构的关键要素,包括RESTful API设计原则、数据库优化技巧、缓存策略、以及容器化部署的实践。文章旨在为开发者提供一套实用的方法论,帮助他们在面对复杂业务需求时,能够设计出既高效又可扩展的后端服务。
|
6天前
|
供应链 数据挖掘 API
电商API接口介绍——sku接口概述
商品SKU(Stock Keeping Unit)接口是电商API接口中的一种,专门用于获取商品的SKU信息。SKU是库存量单位,用于区分同一商品的不同规格、颜色、尺寸等属性。通过商品SKU接口,开发者可以获取商品的SKU列表、SKU属性、库存数量等详细信息。