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

简介: 阿里云机器学习模型在线服务自定义Processor部署PMML模型(一)中介绍了使用EASCMD搭建环境,进行自定义processor的部署,这里介绍使用阿里云提供的镜像进行模型的在线部署,并通过Java SDK演示模型的在线调用。

Step By Step

1、直接使用镜像获取Python环境
2、容器配置
3、镜像构建与上传
4、基于构建镜像创建EAS服务
5、Java SDK调用服务


一、直接使用镜像获取Python环境
  • 1.1 如果未安装Docker,请参考链接先安装Docker环境

图片.png

  • 1.2 run命令进入容器
sudo docker run -ti registry.cn-shanghai.aliyuncs.com/eas/eas-python-base-image:py3.6-allspark-0.8
二、容器配置
  • 2.1 删除app.py,下载pmml文件

图片.png

  • 2.2 docker中安装:sklearn-pmml-model
ENV/bin/pip install sklearn-pmml-model

图片.png

三、镜像构建与上传
  • 3.1 登陆阿里云镜像服务
sudo docker login --username=gts mubu**.cn-shanghai.cr.aliyuncs.com

图片.png

  • 3.2 获取容器ID

图片.png

  • 3.3 基于容器生成镜像
sudo docker commit d52f5f01607b mubu .cn-shanghai.cr.aliyuncs.com/taro/eas_pmml:v2

图片.png

  • 3.4 提交镜像到阿里云镜像仓库
sudo docker push mubu .cn-shanghai.cr.aliyuncs.com/taro/eas_pmml:v2

图片.png

  • 3.5 镜像仓库查看

图片.png

  • 3.6 设置镜像公开匿名拉取权限

图片.png

四、基于构建镜像创建EAS服务
  • 4.1 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 '2.1 105'
    """

    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()
  • 4.2 上传app.py到阿里云OSS存储,并设置权限为公共可读,获取下载地址

图片.png

  • 4.3 app.json部署文件
{
  "name": "taro_docker_v2",
  "processor_entry": "./app.py",
  "processor_type": "python",
  "processor_path": "https://taro******.oss-cn-shanghai.aliyuncs.com/eas_python_app/app.py",
  "data_image": "mubu******.cn-shanghai.cr.aliyuncs.com/taro/eas_pmml:v1",
  "metadata": {
    "instance": 1,
     "memory": 2000,
     "cpu": 1
    }
}
  • 4.4 EASCMD部署服务
./eascmd64 create demo2.json

图片.png

五、Java SDK调用服务
  • 5.1 控制台查看部署服务

图片.png

  • 5.2 POSTMAN调用测试

图片.png

图片.png

  • 5.3 pom.xml
        <dependency>
            <groupId>com.squareup.okhttp</groupId>
            <artifactId>okhttp</artifactId>
            <version>2.7.3</version>
        </dependency>
  • 5.4 Java Code
import com.squareup.okhttp.*;
import java.io.IOException;

public class EASDEMO {

    public static void main(String[] args) throws IOException {
        OkHttpClient client = new OkHttpClient();

        MediaType mediaType = MediaType.parse("application/octet-stream");
        RequestBody body = RequestBody.create(mediaType, "5.6 3.0 4.1 1.3");
        Request request = new Request.Builder()
                .url("http://172*********.cn-shanghai.pai-eas.aliyuncs.com/api/predict/taro_docker_v2")
                .post(body)
                .addHeader("authorization", "MjE2ZDNkMj*********")
                .build();

        Response response = client.newCall(request).execute();
        System.out.println(response.body().string());

    }
}
  • 5.5 测试结果

图片.png


更多参考

安装 Docker
阿里云机器学习模型在线服务自定义Processor部署PMML模型(一)
使用Python开发自定义Processor
eascmd客户端工具

相关文章
|
1月前
|
人工智能 JSON 算法
Qwen2.5-Coder 系列模型在 PAI-QuickStart 的训练、评测、压缩及部署实践
阿里云的人工智能平台 PAI,作为一站式、 AI Native 的大模型与 AIGC 工程平台,为开发者和企业客户提供了 Qwen2.5-Coder 系列模型的全链路最佳实践。本文以Qwen2.5-Coder-32B为例,详细介绍在 PAI-QuickStart 完成 Qwen2.5-Coder 的训练、评测和快速部署。
Qwen2.5-Coder 系列模型在 PAI-QuickStart 的训练、评测、压缩及部署实践
|
8天前
|
开发者 Python
阿里云PAI DSW快速部署服务
在使用阿里云DSW实例进行开发的时候,可能需要快速部署服务测试应用效果。DSW实例目前已经支持通过自定义服务访问配置功能,对外提供服务访问能力,您在应用开发过程中无需分享整个DSW实例,即可将服务分享给协作开发者进行测试和验证。
54 23
|
14天前
|
编解码 机器人 测试技术
技术实践 | 使用 PAI+LLaMA Factory 微调 Qwen2-VL 模型快速搭建专业领域知识问答机器人
Qwen2-VL是一款具备高级图像和视频理解能力的多模态模型,支持多种语言,适用于多模态应用开发。通过PAI和LLaMA Factory框架,用户可以轻松微调Qwen2-VL模型,快速构建文旅领域的知识问答机器人。本教程详细介绍了从模型部署、微调到对话测试的全过程,帮助开发者高效实现定制化多模态应用。
|
15天前
|
机器学习/深度学习 人工智能 自然语言处理
【NeurIPS'24】阿里云 PAI 团队论文被收录为 Spotlight,并完成主题演讲分享
12月10日,NeurIPS 2024在温哥华开幕,阿里云PAI团队论文《PertEval: Unveiling Real Knowledge Capacity of LLMs with Knowledge-Invariant Perturbations》入选Spotlight,PAI团队还进行了“可信AI的技术解读与最佳实践”主题演讲,展示AI工程化平台产品能力。
|
23天前
|
机器学习/深度学习 人工智能 算法
人工智能浪潮下的编程实践:构建你的第一个机器学习模型
在人工智能的巨浪中,每个人都有机会成为弄潮儿。本文将带你一探究竟,从零基础开始,用最易懂的语言和步骤,教你如何构建属于自己的第一个机器学习模型。不需要复杂的数学公式,也不必担心编程难题,只需跟随我们的步伐,一起探索这个充满魔力的AI世界。
42 12
|
1月前
|
机器学习/深度学习 算法 数据挖掘
K-means聚类算法是机器学习中常用的一种聚类方法,通过将数据集划分为K个簇来简化数据结构
K-means聚类算法是机器学习中常用的一种聚类方法,通过将数据集划分为K个簇来简化数据结构。本文介绍了K-means算法的基本原理,包括初始化、数据点分配与簇中心更新等步骤,以及如何在Python中实现该算法,最后讨论了其优缺点及应用场景。
99 4
|
9天前
|
算法
PAI下面的gbdt、xgboost、ps-smart 算法如何优化?
设置gbdt 、xgboost等算法的样本和特征的采样率
25 2
|
27天前
|
机器学习/深度学习 算法 数据挖掘
C语言在机器学习中的应用及其重要性。C语言以其高效性、灵活性和可移植性,适合开发高性能的机器学习算法,尤其在底层算法实现、嵌入式系统和高性能计算中表现突出
本文探讨了C语言在机器学习中的应用及其重要性。C语言以其高效性、灵活性和可移植性,适合开发高性能的机器学习算法,尤其在底层算法实现、嵌入式系统和高性能计算中表现突出。文章还介绍了C语言在知名机器学习库中的作用,以及与Python等语言结合使用的案例,展望了其未来发展的挑战与机遇。
44 1
|
1月前
|
机器学习/深度学习 自然语言处理 算法
深入理解机器学习算法:从线性回归到神经网络
深入理解机器学习算法:从线性回归到神经网络
|
1月前
|
机器学习/深度学习 人工智能 算法
【手写数字识别】Python+深度学习+机器学习+人工智能+TensorFlow+算法模型
手写数字识别系统,使用Python作为主要开发语言,基于深度学习TensorFlow框架,搭建卷积神经网络算法。并通过对数据集进行训练,最后得到一个识别精度较高的模型。并基于Flask框架,开发网页端操作平台,实现用户上传一张图片识别其名称。
95 0
【手写数字识别】Python+深度学习+机器学习+人工智能+TensorFlow+算法模型

热门文章

最新文章