阿里云机器学习模型在线服务自定义Processor部署PMML模型(一)

简介: Processor是包含在线预测逻辑(模型加载和请求预测逻辑)的程序包,如果PAI-EAS提供的官方通用Processor无法满足模型部署需求,则可以根据Processor的开发标准自定义Processor。本文演示如果在本地搭建环境进行测试,并通过EASCMD指令打包方式上传服务到EAS服务器,实现模型在线调用。

Step By Step

1、构建开发环境
2、python本地测试
3、修改app.py文件测试
4、部署服务
5、在线测试
6、Python SDK 服务调用


一、构建开发环境
  • 1.1 本地机器环境
测试实例使用阿里云上海区域ECS:Ubuntu 18.04 64位

图片.png

  • 1.2 EASCMD工具工具安装
# 安装并初始化EASCMD,该示例为安装Linux环境的EASCMD工具。
$ wget http://eas-data.oss-cn-shanghai.aliyuncs.com/tools/eascmd64
# 下载完成后,可以修改访问权限,配置阿里云上AccessKey信息。
$ chmod +x eascmd64
$ ./eascmd64 config -i <access_id> -k <access_key> -e pai-eas.cn-shanghai.aliyuncs.com

# 初始化环境。
$ ./eascmd64 pysdk init ./pyeas_demo

图片.png

图片.png

图片.png

二、python本地测试
pmml文件 下载地址
  • 2.1 依赖包安装
pip install sklearn-pmml-model
  • 2.2 pycharm 测试代码
import pandas as pd
from sklearn_pmml_model.ensemble import PMMLForestClassifier

clf = PMMLForestClassifier(pmml="randomForest.pmml")
df = pd.DataFrame([[5.6, 3.0, 4.1, 1.3]],columns=['sepal length (cm)','sepal width (cm)','petal length (cm)','petal width (cm)'])
result  = clf.predict(df)
print(str(result).encode())
  • 2.3 测试结果

图片.png

三、修改app.py文件测试
  • 3.1 到创建的项目下

图片.png

  • 3.2 下载randomForest.pmml模型到目录下面

图片.png

  • 3.3 根据2.2的测试代码修改app.py文件为如下形式
# -*- coding: utf-8 -*-
import allspark
import pandas as pd
import numpy as np
from sklearn_pmml_model.ensemble import PMMLForestClassifier

class MyProcessor(allspark.BaseProcessor):
    """ MyProcessor is a example
        you can send mesage like this to predict
        curl -v http://127.0.0.1:8080/api/predict/service_name -d '6.3 2.5 4.9 1.5'
    """

    def initialize(self):
        """ load module, executed once at the start of the service
         do service intialization and load models in this function.
        """
        self.model = PMMLForestClassifier(pmml="randomForest.pmml")

    def pre_proccess(self, data):
        """ data format pre process
        """
        x, y, z, w = data.split(b' ')
        return float(x), float(y), float(z), float(w)
        
    def post_process(self, data):
        """ proccess after process
        """
        return str(data).encode()
        
    def process(self, data):
        """ process the request data
        """
        x, y, z, w = self.pre_proccess(data)
        df = pd.DataFrame([[x, y, z, w]],columns=['sepal length (cm)','sepal width (cm)','petal length (cm)','petal width (cm)'])
        result  = self.model.predict(df)
        print(result)
        return self.post_process(result), 200

if __name__ == '__main__':
    # paramter worker_threads indicates concurrency of processing
    runner = MyProcessor(worker_threads=10)
    runner.run()
  • 3.4 ENV环境安装:sklearn-pmml-model
./ENV/bin/pip install sklearn-pmml-model

图片.png

  • 3.5 启动app
./ENV/bin/python app.py

图片.png

  • 3.6 本地curl测试服务
curl http://127.0.0.1:8080/ -d '5.6 3.0 4.1 1.3'

图片.png

四、部署服务
  • 4.1 服务打包
./eascmd64 pysdk pack ./pyeas_demo

图片.png

  • 4.2 上传压缩包到oss
./eascmd64 upload pyeas_demo.tar.gz --inner

图片.png

  • 4.3 修改app.json部署文件

图片.png

  • 4.4 EASCMD 使用app.json部署服务
/root/eas_demo/eascmd64 create app.json

图片.png

五、在线测试
  • 5.1 控制台查看部署的EAS服务

图片.png

  • 5.2 服务调用测试

图片.png

六、Python SDK 服务调用
  • 6.1 测试代码
import http.client

conn = http.client.HTTPConnection("172144**********.cn-shanghai.pai-eas.aliyuncs.com")  # 请求endpoint
payload = "5.6 3.0 4.1 1.3"  # 请求body
headers = {
    'authorization': "NTQzN2QxZGQy*********"  # 认证Token
    }
conn.request("POST", "/api/predict/pyeas_demo", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
  • 6.2 测试结果

图片.png

说明:

本身PAI EAS服务是支持直接部署pmml格式的模型,这里主要是为了演示自定义process的部署过程,其它类型的模型部署方法类似,这里面主要介绍的是通过eascmd方式构建环境,后面会继续介绍一种基于容器的环境搭建与部署方式。

更多参考

使用Python开发自定义Processor

相关文章
|
25天前
|
存储 自然语言处理 关系型数据库
基于阿里云通义千问开发智能客服与问答系统
在企业的数字化转型过程中,智能客服系统已成为提高客户满意度和降低运营成本的重要手段。阿里云的通义千问作为一款强大的大语言模型,具有自然语言理解、对话生成、知识检索等能力,非常适合用来开发智能客服与问答系统。 通过本博客,我们将演示如何基于阿里云的通义千问模型,结合阿里云相关产品如函数计算(FC)、API网关、RDS等,搭建一个功能齐全的智能客服系统。
79 5
|
1月前
|
存储 人工智能 数据可视化
高效率,低成本!且看阿里云AI大模型如何帮助企业提升客服质量和销售转化率
在数字化时代,企业面临海量客户对话数据处理的挑战。阿里云推出的“AI大模型助力客户对话分析”解决方案,通过先进的AI技术和智能化分析,帮助企业精准识别客户意图、发现服务质量问题,并生成详尽的分析报告和可视化数据。该方案采用按需付费模式,有效降低企业运营成本,提升客服质量和销售转化率。
高效率,低成本!且看阿里云AI大模型如何帮助企业提升客服质量和销售转化率
|
3月前
|
人工智能 小程序 Java
【评测】玩转阿里云《10 分钟构建 AI 客服并应用到网站、钉钉或微信中》
本文介绍了使用阿里云百炼大模型在10分钟内构建AI客服,并应用于网站、钉钉或微信中的体验。作者“JavaDog程序狗”详细描述了从搭建到完成的全过程,包括快速上手、遇到的问题及解决方法、定制化需求以及云产品的整体体验。文档清晰易懂,集成过程顺畅,客服支持响应迅速,定制功能满足特定业务需求,总体体验极佳,适合开发者尝试。
166 5
【评测】玩转阿里云《10 分钟构建 AI 客服并应用到网站、钉钉或微信中》
|
2月前
阿里云国际版提交工单后需要多久才能解决问题
阿里云国际版提交工单后需要多久才能解决问题
|
4月前
|
人工智能 自然语言处理 Serverless
阿里云百炼应用实践系列-让微信公众号成为智能客服
本文主要介绍如何基于百炼平台快速在10分钟让您的微信公众号(订阅号)变成 AI 智能客服。我们基于百炼平台的能力,以官方帮助文档为参考,让您的微信公众号(订阅号)成 为AI 智能客服,以便全天候(7x24)回应客户咨询,提升用户体验,介绍了相关技术方案和主要代码,供开发者参考。
阿里云百炼应用实践系列-让微信公众号成为智能客服
|
4月前
|
人工智能 自然语言处理 搜索推荐
10分钟构建AI客服:阿里云技术解决方案评测
在数字化转型的浪潮中,企业对客户服务的即时性和个性化需求愈发迫切。阿里云推出的“10分钟构建AI客服并应用到网站、钉钉、微信中”的技术解决方案,为企业提供了一个快速、低成本的AI客服部署方案。本文将从部署流程、用户体验、成本效益等方面对这一方案进行深入评测。
460 3
|
5月前
|
自然语言处理 安全 API
AppFlow:让大模型当您的微信公众号客服
使用阿里云AppFlow和通义百炼,无需编码即可将大模型如通义千问接入微信公众号。首先确保公众号已认证,然后在通义百炼导入文档创建知识库。在AppFlow中选择“微信公众号大模型自动回复”模板,添加微信凭证和百炼API密钥。配置微信公众平台的服务器地址、Token和EncodingAESKey,并设置IP白名单。完成这些步骤后,用户在公众号的提问将由大模型自动回答。AppFlow简化了集成过程,助力高效智能客服建设。
|
4月前
|
前端开发 开发者 设计模式
揭秘Uno Platform状态管理之道:INotifyPropertyChanged、依赖注入、MVVM大对决,帮你找到最佳策略!
【8月更文挑战第31天】本文对比分析了 Uno Platform 中的关键状态管理策略,包括内置的 INotifyPropertyChanged、依赖注入及 MVVM 框架。INotifyPropertyChanged 方案简单易用,适合小型项目;依赖注入则更灵活,支持状态共享与持久化,适用于复杂场景;MVVM 框架通过分离视图、视图模型和模型,使状态管理更清晰,适合大型项目。开发者可根据项目需求和技术栈选择合适的状态管理方案,以实现高效管理。
52 0
|
4月前
|
机器学习/深度学习 TensorFlow 算法框架/工具
TensorFlow Serving 部署指南超赞!让机器学习模型上线不再困难,轻松开启高效服务之旅!
【8月更文挑战第31天】TensorFlow Serving是一款高性能开源服务系统,专为部署机器学习模型设计。本文通过代码示例详细介绍其部署流程:从安装TensorFlow Serving、训练模型到配置模型服务器与使用gRPC客户端调用模型,展示了一站式模型上线解决方案,使过程变得简单高效。借助该工具,你可以轻松实现模型的实际应用。
91 0
|
4月前
|
机器学习/深度学习 人工智能 自然语言处理
基于PAI-QuickStart搭建一站式模型训练服务体验
【8月更文挑战第5天】基于PAI-QuickStart搭建一站式模型训练服务体验
153 0