web项目部署到tomcat404_自动部署PMML模型生成REST API

目录

  • DaaS介绍
  • PMML简介
  • 模型部署准备
  • 部署实时预测Web服务
  • 部署自定义实时预测Web服务
  • 部署离线批量预测任务服务
  • 部署模型评估任务服务
  • 总结
  • 参考

DaaS介绍

DaaS(Deployment-as-a-Service)是AutoDeployAI公司推出的AI模型自动部署系统,支持PMML,Scikit-learn,XGBoost,LightGBM,Spark以及主流深度学习ONNX,Keras,TensorFlow,Pytorch,MxNet等多种模型的部署。

DaaS基于Kubernetes构建,提供可靠和可扩展的模型部署服务,弹性部署用户AI和ML解决方案到生产环境中。用户可以自由选择在公有云或私有云的Kubernetes上安装DaaS系统,以满足用户对AI部署的多样需求。本文中的DaaS演示系统部署在本地的Minikube上。

DaaS设计框架:

8e6c7617a5401b5a6f01f6a5d53ad0c4.png

PMML简介

PMML是一套与平台和环境无关的AI模型序列化标准,为模型的跨平台部署提供了基础,简化了部署流程,可实现模型的快速上线。关于PMML的详细信息,可以参考文章《使用PMML部署机器学习模型》。

模型部署准备

DaaS系统提供多种模型部署方式,下面,我们演示在DaaS系统中如何部署模型,生成Web服务;如何通过REST API测试Web服务;以及如何部署任务来执行批量离线预测和模型评估操作。

在部署模型之前,我们需要完成以下操作:

1. 打开浏览器,登陆DaaS系统。

bfdc94ce130e5abfad04ba47e8ed9beb.png

2. 创建项目。登陆成功后,进入项目列表页,点击新建项目

45d307c42b13eaf6388bccdb3d39bb1b.png


DaaS使用项目来管理用户的不同分析任务。项目中可以包含模型、部署、程序脚本、数据、数据源等多种分析资产。

d262994ee3aae27186f478bb4aa6b458.png

3. 导入模型。项目创建成功后,进入项目主页(仪表盘),切换到模型标签页,点击命令导入模型

81c006fed8b66f806a5319e5bf031eb2.png


选择要部署的PMML模型文件,点击此处可下载当前使用的PMML模型xgb-iris.pmml。在该流程中,首先会对模型进行验证,如果模型不是一个有效的PMML,会导致添加失败,DaaS将返回错误信息。

e74aed9650d40fc83151b25ff90294a4.png

4. 模型概述。PMML导入成功后,进入模型主页(概述),显示了模型的基本信息,比如输入和目标变量、模型类型、使用算法、运行引擎等。

4a4f10a1093997992d38fb0bb57fcbe7.png

5. 测试模型。切换到测试标签页,通过表单输入数据或者点击JSON命令直接输入JSON格式的数据,然后点击提交命令,等待预测结果的返回。

48d65b83f9e44a29043c6e00367ffdb2.png

部署实时预测Web服务

  1. 添加Web服务。当模型测试成功后,切换到部署标签页,点击命令添加服务

cff3a7d5d92ce5247d2bfa6da8d906a2.png


这里有几个重要的部署选项:

  1. 模型版本:当前模型只有一个版本,选择版本1。
  2. 网络服务运行环境:指定模型部署运行的docker环境,DaaS默认包含两个网络部署环境分别针对Python 2.7和Python 3.7,每个环境都已经安装了以上常用模型库。我们可以在项目的运行时定义中查看系统中包含的运行时定义,DaaS允许用户添加自定义运行环境。这里选择Python 3.7 - Function as a Service
  3. 预留CPU和预留内存:为了降低系统的不稳定风险,用户可以选择为部署分配指定的CPU核数和内存量。
  4. 副本:提供Web服务的负载均衡。默认为1。

df53a6250083abc691390861ac9ec4cc.png

2. 测试Web服务。部署创建成功后,进入部署页面(概述),可以看到一个副本,状态是启动中,等待状态变成运行中后,该部署才算创建完成。这时候就可以接受预测请求。切换到测试标签页,在请求正文中输入测试数据,测试该服务。

b9fae14327d865f06de2cda4947a2834.png


DaaS为部署服务提供标准的REST API,可以通过任意REST客户端来调用,方便生产环境的集成。点击生成代码命令,会生成通过curl调用REST API的命令参数。

75b224daa1ab19fcfbf8c831bcf58d7c.png


复制完整命令,在Shell中执行:

d6ee256e7cc9b5affb80a85eca59e56b.png


返回DaaS,切换到部署模型标签页。指标页面显示Web服务性能指标:执行次数、平均响应时间、最大最小时间等。可以看到,我们执行了二次调用:第一次通过DaaS部署测试界面,第二次通过在Shell中执行curl命令。一般来说,第一次调用是要慢一些,后面就会快很多。

66afa99107de48781df091915bf1e6b4.png

部署自定义实时预测Web服务

以上流程生成的是默认实时预测部署,只是调用模型本身进行预测。如果部署的Web服务需要执行一些额外的操作,比如增加数据的预处理功能。这时候我们可以使用DaaS提供的自定义实时预测功能:

1. 打开模型主页,切换到实时预测标签页,点击生成自定义实时预测脚本命令。

3efaf0e9349d38509954be6efca43744.png


DaaS的Web服务部署功能是基于函数即服务实现的,我们可以在脚本的prepare函数中添加自定义的数据预处理操作。比如给每一个输入变量值增加0.2,完成后,点击右下方命令作为API测试,来测试输入的自定义代码是否按预期的工作。可以通过当前的测试页面来测试,也可以通过测试REST API来进行。

ae5c850e418704d9af82b33234100c58.png

2. 测试完成后,切换到部署标签页,点击添加网络服务,为该脚本生成正式的Web服务。后续操作与以上流程1、2相同。

1156b3f1916914d388689117451ee21b.png

部署离线批量预测任务服务

除了部署网络(Web)服务,DaaS还支持部署任务(Job),在任务部署中我们可以完成一些模型相关的操作,比如批量预测,模型评估等。下面我们首先看一下如何部署模型批量预测任务。

1. 导入数据。首先,返回工程页面,切换到数据集标签页,点击添加数据集命令。

56040c8f94f0c9c7a7919776072d479a.png


DaaS支持添加本地文件和远程数据,远程数据支持多种数据源(HDFS以及常用关系数据数库等)。当前我们添加一个本地CSV文件。

c42e9bde00aecf47b615740394fe081f.png

2. 生成批预测脚本。打开模型页面,切换到批量预测标签,选择添加CSV文件iris.csv作为输入数据集,输入输出的数据集仍为本地文件iris-batch-scoring.csv。点击生成批预测脚本命令。

aeb9505aa42d801d2b53cceb097b1502.png

3. 设置任务属性。脚本成功后,点击高级设置命令,弹出设置对话框,有几个重要的参数:

    • 任务运行环境:执行该脚本任务的docker环境,和Web服务运行环境类似,DaaS默认包含两个任务部署环境分别针对Python 2.7和Python 3.7,每个环境都已经安装了以上常用模型库。我们可以在项目的运行时定义中查看系统中包含的运行环境定义,允许用户添加自定义运行环境。这里默认选择Python 3.7 - Script as a Service
    • 环境变量和命令参数:设置执行脚本的系统环境变量和命令行参数,默认是空。
    • 调度:设置任务执行调度,可以按需或者按计划,比如每天几时执行该任务。默认按需

1620dc2cd66cb700980bd7e2215d1673.png

4. 任务部署。脚本成功后,点击立即执行命令。DaaS会自动部署任务,并且立刻运行一次该任务。页面自动转移到任务部署界面,我们可以看到现在正在执行的一次运行操作。

71c36057d96d85b4dbd8793800d1d32b.png

5. 查看结果。当执行状态由启动中运行中变成成功后,返回到项目界面,切换到数据集标签页,可以看到多了一项新生成的数据文件iris-batch-scoring.csv,包含模型批量预测结果。在操作菜单下,可以选择预览或者下载该数据。

79ddf06a77ab00186e4fb191207474e5.png

6. 再次执行该任务。返回到任务部署页面,切换到测试标签页,同Web服务部署类似,可以在该页面或者通过REST API执行相关操作,对于任务操作,主要包含以下命令:

    • 执行任务:输入可选的环境变量和命令参数。
    • 获取某次执行的状态:必须提供该执行的ID
    • 停止某次执行:同上,必须提供该执行的ID

6c3b71f7f1fe50c2ed06440419a2af1e.png


点击生成代码命令,同样提供可执行的curl命令调用对应的REST API,在Shell中运行执行任务:

ad04562024874422c4e15b43a597dde0.png

部署模型评估任务服务:

1. 导入数据。仍然使用批量预测添加的本地CSV文件iris.csv

2. 生成模型评估脚本。打开模型页面,切换到模型评估标签页,选择该CSV文件为输入数据集,选择评估指标Accuracy Score,评估阀值使用默认的[0.3, 0.7]。点击生成模型评估脚本命令。

6ae6be606934c9ef55fe7d0ad1eccc44.png

3. 设置任务属性。参考以上流程3

4. 任务部署。参考以上流程4

5. 查看结果。当执行状态由运行中变成成功后,返回到模型界面(概述),查看评估结果,第一项就是最新的模型评估结果。

b28d6fc55a334d6a4580dc2003d4d0a5.png

6. 再次执行该任务。参考以上流程6

总结

通过以上的演示,我们可以看到,DaaS作为一个通用AI模型管理部署平台,具有很大的灵活性和可扩展性,能满足用户的各种自定义部署需求。

参考

AutoDeployAI官网:https://www.autodeploy.ai/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值