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

相关文章
|
机器学习/深度学习 数据采集 人工智能
构建高效机器学习模型的五大技巧
【4月更文挑战第7天】 在数据科学迅猛发展的今天,机器学习已成为解决复杂问题的重要工具。然而,构建一个既精确又高效的机器学习模型并非易事。本文将分享五种提升机器学习模型性能的有效技巧,包括数据预处理、特征工程、模型选择、超参数调优以及交叉验证。这些方法不仅能帮助初学者快速提高模型准确度,也为经验丰富的数据科学家提供了进一步提升模型性能的思路。
|
机器学习/深度学习 数据采集 算法
构建高效机器学习模型的最佳实践
【4月更文挑战第3天】在数据驱动的时代,构建高效的机器学习模型已成为解决复杂问题的关键。本文将探讨一系列实用的技术策略,旨在提高模型的性能和泛化能力。我们将从数据预处理、特征工程、模型选择、超参数调优到集成学习等方面进行详细讨论,并通过实例分析展示如何在实践中应用这些策略。
205 1
|
5月前
|
缓存 自然语言处理 监控
基于通义大模型的智能客服系统构建实战:从模型微调到API部署
本文详细解析了基于通义大模型的智能客服系统构建全流程,涵盖数据准备、模型微调、性能优化及API部署等关键环节。通过实战案例与代码演示,展示了如何针对客服场景优化训练数据、高效微调大模型、解决部署中的延迟与并发问题,以及构建完整的API服务与监控体系。文章还探讨了性能优化进阶技术,如模型量化压缩和缓存策略,并提供了安全与合规实践建议。最终总结显示,微调后模型意图识别准确率提升14.3%,QPS从12.3提升至86.7,延迟降低74%。
1577 15
|
5月前
|
前端开发 搜索推荐 NoSQL
错过就亏大了!这款开源 IM 项目,功能强大、部署简单,适合私有化部署,开发者必收藏!
Lumen IM 是一个基于 Vue3 + Naive UI 前端与 Go 后端的开源即时通讯系统,支持私聊、群聊、文件传输、消息撤回等功能,适用于企业内部沟通及开发者学习。项目采用 WebSocket 实现即时消息推送,技术栈包括 MySQL、Redis 和 Minio 等,确保高效稳定运行。界面简约美观,操作便捷,并支持笔记功能和个性化设置。无论是企业使用还是二次开发,Lumen IM 都是一个优质选择
319 0
|
9月前
|
自然语言处理 Prometheus 监控
基于DeepSeek的智能客服系统实战:从开发到部署
本文详细介绍如何将基于DeepSeek的智能客服系统从开发到部署,涵盖服务器选择、环境配置、代码部署及Web服务器设置。通过具体案例和代码示例,讲解系统上线步骤,并介绍使用Prometheus、Grafana等工具进行性能监控的方法。此外,针对高并发、API调用失败等常见问题提供解决方案,确保系统的稳定运行。最后强调数据安全与隐私保护的重要性,帮助读者全面掌握智能客服系统的部署与维护。
|
9月前
|
人工智能 自然语言处理 BI
基于阿里云人工智能平台的智能客服系统开发与部署
随着人工智能技术的发展,智能客服系统成为企业提升服务效率和用户体验的重要工具。阿里云提供包括自然语言处理(NLP)、语音识别(ASR)、机器学习(PAI)等在内的完整AI平台,助力企业快速构建智能客服系统。本文将通过电商平台案例,展示如何基于阿里云AI平台从零开始开发、部署智能客服系统,并介绍其核心优势与最佳实践,涵盖文本和语音客服、知识库管理及数据分析等功能,显著提升客户服务效率和用户满意度。
|
存储 SQL 测试技术
基于SpringBoot+Vue交通管理在线服务系统的开发(源码+部署说明+演示视频+源码介绍+lw)(2)
基于SpringBoot+Vue交通管理在线服务系统的开发(源码+部署说明+演示视频+源码介绍+lw)
234 2
|
JavaScript Java 关系型数据库
基于SpringBoot+Vue交通管理在线服务系统的开发(源码+部署说明+演示视频+源码介绍+lw)(1)
基于SpringBoot+Vue交通管理在线服务系统的开发(源码+部署说明+演示视频+源码介绍+lw)
189 1
|
JavaScript Java 关系型数据库
基于SpringBoot+Vue交通管理在线服务系统的开发(源码+部署说明+演示视频+源码介绍)(1)
基于SpringBoot+Vue交通管理在线服务系统的开发(源码+部署说明+演示视频+源码介绍)
112 0
基于SpringBoot+Vue交通管理在线服务系统的开发(源码+部署说明+演示视频+源码介绍)(1)
|
JavaScript Java 测试技术
基于ssm+vue.js+uniapp小程序的工单管理系统附带文章和源代码部署视频讲解等
基于ssm+vue.js+uniapp小程序的工单管理系统附带文章和源代码部署视频讲解等
233 6

热门文章

最新文章