阿里云机器学习模型在线服务自定义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

相关文章
|
3天前
|
机器学习/深度学习 数据挖掘 数据处理
构建高效机器学习模型的五大策略
【5月更文挑战第31天】 在数据驱动的时代,机器学习已成为创新的核心动力。本文将深入探讨如何构建高效的机器学习模型,涵盖数据处理、特征工程、模型选择、调参技巧及模型评估五个关键策略。不同于常规摘要的形式,我们将通过具体实例和案例分析,提供一套实操性强的方法论,帮助读者在实际工作中提升模型性能,解决业务问题。
|
2天前
|
机器学习/深度学习 数据采集 Python
机器学习模型的评估与选择标准
【6月更文挑战第1天】机器学习模型的评估至关重要,包括准确率、召回率、F1值和均方误差等指标。准确率衡量预测正确比例,召回率关注找出所有相关样本的能力,F1值是两者的综合。泛化能力同样重要,防止过拟合和欠拟合。不同场景可能侧重不同指标,如医疗诊断更关注召回率。选择模型需综合考虑多个因素,以实现最佳性能。通过实践和探索,我们可以更好地理解和优化模型评估,推动机器学习进步。
11 2
|
3天前
|
机器学习/深度学习 人工智能 自然语言处理
构建高效机器学习模型:从特征工程到模型优化
【5月更文挑战第31天】 在数据科学领域,构建一个高效的机器学习模型是实现精准预测和数据分析的关键步骤。本文将深入探讨如何通过有效的特征工程技术增强模型的预测能力,以及应用先进的模型调优方法来提升算法性能。我们还将讨论避免过拟合的策略和评估模型的指标,以确保模型的泛化能力和实用性。
|
3天前
|
机器学习/深度学习 数据采集 数据挖掘
构建高效机器学习模型的最佳实践
【5月更文挑战第31天】 在数据驱动的时代,机器学习已成为创新的核心动力。本文深入探讨了构建高效机器学习模型的关键技术要点,包括数据预处理、特征工程、模型选择、调参策略及模型评估等环节。通过实例分析与经验总结,旨在为从业者提供实用的技术参考,以优化模型性能,提升项目成功率。
|
3天前
|
机器学习/深度学习 Python
超参数优化:提升机器学习模型性能
【5月更文挑战第31天】超参数优化对提升机器学习模型性能至关重要。网格搜索和随机搜索是常见方法,Python示例展示了如何使用GridSearchCV进行网格搜索。其他高级技术包括基于梯度的优化和贝叶斯优化。优化时注意选择合适评估指标、划分训练验证集,并进行迭代调整。自动化工具可简化这一过程。超参数优化是一个持续演进的领域,对于构建高性能模型具有关键作用。
12 0
|
5天前
|
存储 固态存储 安全
阿里云4核CPU云服务器价格参考,最新收费标准和活动价格
阿里云4核CPU云服务器多少钱?阿里云服务器核数是指虚拟出来的CPU处理器的核心数量,准确来讲应该是vCPU。CPU核心数的大小代表了云服务器的运算能力,CPU越高,云服务器的性能越好。阿里云服务器1核CPU就是一个超线程,2核CPU2个超线程,4核CPU4个超线程,这样云服务器可以同时处理多个任务,计算性能更强。如果网站流程较小,少量图片展示的企业网站,建议选择2核及以上CPU;如果网站流量较大,动态页面比较多,有视频等,建议选择4核、8核以上CPU。
阿里云4核CPU云服务器价格参考,最新收费标准和活动价格
|
19天前
|
弹性计算 运维 监控
解密阿里云弹性计算:探索云服务器ECS的核心功能
阿里云ECS是核心计算服务,提供弹性云服务器资源,支持实例按需配置、集群管理和监控,集成安全防护,确保服务稳定、安全,助力高效业务运营。
293 0
|
3天前
|
存储 固态存储 安全
租用阿里云企业级云服务器最新收费标准与活动价格参考
租用阿里云企业级云服务器多少钱?阿里云服务器有多种实例分类,其中通用型、计算型、内存型、通用算力型、大数据型、本地SSD、高主频型和增强型均属于企业级云服务器,目前在阿里云的活动中,通用型、计算型、内存型和通用算力型均有优惠,下面是阿里云企业级云服务器价格表,包含最新收费标准与活动价格,以表格形式展示给大家,以供参考和了解。
租用阿里云企业级云服务器最新收费标准与活动价格参考
|
7天前
|
存储 弹性计算 缓存
阿里云2核CPU云服务器租用收费标准与活动价格参考
阿里云2核CPU云服务器多少钱?阿里云服务器核数是指虚拟出来的CPU处理器的核心数量,准确来讲应该是vCPU。CPU核心数的大小代表了云服务器的运算能力,CPU越高,云服务器的性能越好。阿里云服务器1核CPU就是一个超线程,2核CPU2个超线程,4核CPU4个超线程,这样云服务器可以同时处理多个任务,计算性能更强。如果网站流程较小,少量图片展示的企业网站,建议选择2核及以上CPU;如果网站流量较大,动态页面比较多,有视频等,建议选择4核、8核以上CPU。
阿里云2核CPU云服务器租用收费标准与活动价格参考