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

相关文章
|
4月前
|
人工智能 自然语言处理 运维
【新模型速递】PAI-Model Gallery云上一键部署Kimi K2模型
月之暗面发布开源模型Kimi K2,采用MoE架构,参数达1T,激活参数32B,具备强代码能力及Agent任务处理优势。在编程、工具调用、数学推理测试中表现优异。阿里云PAI-Model Gallery已支持云端部署,提供企业级方案。
309 0
【新模型速递】PAI-Model Gallery云上一键部署Kimi K2模型
|
7月前
|
机器学习/深度学习 人工智能 自然语言处理
Cosmos on PAI系列一:PAI-Model Gallery云上一键部署NVIDIA Cosmos Reason-1
本篇文章介绍 Cosmos 最新世界基础模型 Cosmos Reason-1 如何在阿里云人工智能平台 PAI 上进行快速部署使用。
|
7月前
|
人工智能 JSON 算法
【解决方案】DistilQwen2.5-DS3-0324蒸馏小模型在PAI-ModelGallery的训练、评测、压缩及部署实践
DistilQwen 系列是阿里云人工智能平台 PAI 推出的蒸馏语言模型系列,包括 DistilQwen2、DistilQwen2.5、DistilQwen2.5-R1 等。本文详细介绍DistilQwen2.5-DS3-0324蒸馏小模型在PAI-ModelGallery的训练、评测、压缩及部署实践。
|
4月前
|
人工智能 自然语言处理 运维
【新模型速递】PAI-Model Gallery云上一键部署gpt-oss系列模型
阿里云 PAI-Model Gallery 已同步接入 gpt-oss 系列模型,提供企业级部署方案。
|
6月前
|
人工智能 监控 测试技术
云上AI推理平台全掌握 (1):PAI-EAS LLM服务一键压测
在AI技术飞速发展的今天,大语言模型(LLM)、多模态模型等前沿技术正深刻改变行业格局。推理服务是大模型从“实验室突破”走向“产业级应用”的必要环节,需直面高并发流量洪峰、低延时响应诉求、异构硬件优化适配、成本精准控制等复杂挑战。 阿里云人工智能平台 PAI 致力于为用户提供全栈式、高可用的推理服务能力。在本系列技术专题中,我们将围绕分布式推理架构、Serverless 弹性资源全球调度、压测调优和服务可观测等关键技术方向,展现 PAI 平台在推理服务侧的产品能力,助力企业和开发者在 AI 时代抢占先机,让我们一起探索云上 AI 推理的无限可能,释放大模型的真正价值!
|
6月前
|
缓存 人工智能 负载均衡
PAI 重磅发布模型权重服务,大幅降低模型推理冷启动与扩容时长
阿里云人工智能平台PAI 平台推出模型权重服务,通过分布式缓存架构、RDMA高速传输、智能分片等技术,显著提升大语言模型部署效率,解决模型加载耗时过长的业界难题。实测显示,Qwen3-32B冷启动时间从953秒降至82秒(降幅91.4%),扩容时间缩短98.2%。
|
7月前
|
机器学习/深度学习 人工智能 自然语言处理
阿里云人工智能平台 PAI 开源 EasyDistill 框架助力大语言模型轻松瘦身
本文介绍了阿里云人工智能平台 PAI 推出的开源工具包 EasyDistill。随着大语言模型的复杂性和规模增长,它们面临计算需求和训练成本的障碍。知识蒸馏旨在不显著降低性能的前提下,将大模型转化为更小、更高效的版本以降低训练和推理成本。EasyDistill 框架简化了知识蒸馏过程,其具备多种功能模块,包括数据合成、基础和进阶蒸馏训练。通过数据合成,丰富训练集的多样性;基础和进阶蒸馏训练则涵盖黑盒和白盒知识转移策略、强化学习及偏好优化,从而提升小模型的性能。
|
6月前
|
机器学习/深度学习 人工智能 自然语言处理
【新模型速递】PAI-Model Gallery云上一键部署MiniMax-M1模型
MiniMax公司6月17日推出4560亿参数大模型M1,采用混合专家架构和闪电注意力机制,支持百万级上下文处理,高效的计算特性使其特别适合需要处理长输入和广泛思考的复杂任务。阿里云PAI-ModelGallery现已接入该模型,提供一键部署、API调用等企业级解决方案,简化AI开发流程。
|
7月前
|
缓存 并行计算 测试技术
阿里云PAI-全模态模型Qwen2.5-Omni-7B推理浅试
阿里云PAI-全模态模型Qwen2.5-Omni-7B推理浅试
1559 12
|
6月前
|
机器学习/深度学习 人工智能 JSON
DistilQwen-ThoughtX 蒸馏模型在 PAI-ModelGallery 的训练、评测、压缩及部署实践
通过 PAI-ModelGallery,可一站式零代码完成 DistilQwen-ThoughtX 系列模型的训练、评测、压缩和部署。

热门文章

最新文章