Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >MLSQL 对Python的支持之路

MLSQL 对Python的支持之路

作者头像
用户2936994
发布于 2018-10-11 06:59:21
发布于 2018-10-11 06:59:21
76800
代码可运行
举报
文章被收录于专栏:祝威廉祝威廉
运行总次数:0
代码可运行

前言

Python是做机器学习框架一定要支持的。MLSQL很早就支持集成Python脚本做模型的训练和预测。

训练的使用方式:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
load libsvm.`sample_libsvm_data.txt` as data;

train data as PythonAlg.`/tmp/model1`
where
pythonScriptPath="/tmp/train.py"

-- keep the vertion of every model you train
and keepVersion="true"

and  enableDataLocal="true"
and  dataLocalFormat="json"

and  `fitParam.0.batchSize`="1000"
and  `fitParam.0.labelSize`="2"

and validateTable="data"

and `systemParam.pythonPath`="python"
and `systemParam.pythonVer`="2.7"
and `kafkaParam.bootstrap.servers`="127.0.0.1:9092"
;

可以看到,你可以直接指定一个python脚本路径。预测也是同样的:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
load libsvm.`sample_libsvm_data.txt` as data;

-- register the model we have trained as a funciton.
register PythonAlg.`/tmp/model1` as npredict options
pythonScriptPath="/tmp/predict.py"
;

-- use the predict udf
select npredict(features) from data
as newdata;

问题

前面的支持方式有三个巨大的缺陷,我们在实际使用过程中也是体会明显:

  1. 没有解决Python环境问题。因为是常驻服务模式,让问题变得更加复杂。
  2. 没有项目的概念。对于自己实现的复杂算法,不大可能放在一个脚本中,而且预测脚本和训练脚本往往会依赖一堆的基础脚本。
  3. 没有区分批预测和API预测。批预测适合在批处理或者流式计算中使用。API预测则适合部署成http 接口。

解决办法

  1. 通过conda解决环境问题,每个项目有自己的python运行环境。
  2. 提出项目的概念,即使配置的是一个脚本,系统也会自动生成一个项目来运行。
  3. 以MLFlow为蓝本,指定了一个项目的标准。标准项目应该在根目录有一个MLproject描述文件。

具体示例项目可以参看这里,对应的MLproject文件如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
name: tutorial

conda_env: conda.yaml

entry_points:
  main:
    train:
        parameters:
          alpha: {type: float, default: 0.5}
          l1_ratio: {type: float, default: 0.1}
        command: "python train.py 0.5 0.1"
    batch_predict:
        parameters:
          alpha: {type: float, default: 0.5}
          l1_ratio: {type: float, default: 0.1}
        command: "python batchPredict.py"
    api_predict:
        parameters:
          alpha: {type: float, default: 0.5}
          l1_ratio: {type: float, default: 0.1}
        command: "python predict.py"

用户需要提供三个核心脚本:批处理,批预测,API预测。具体如何写可以看看示例项目。我们现在来看看怎么使用这个项目:

首先是训练部分:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
load csv.`/Users/allwefantasy/CSDNWorkSpace/mlflow/examples/sklearn_elasticnet_wine/wine-quality.csv` 
where header="true" and inferSchema="true" 
as data;

train data as PythonAlg.`/tmp/abc` where pythonScriptPath="/Users/allwefantasy/CSDNWorkSpace/mlflow/examples/sklearn_elasticnet_wine"
 and keepVersion="true"
 and  enableDataLocal="true"
 and  dataLocalFormat="csv"
 ;

非常简单,你只要指定项目地址即可。接着我们做批量预测:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
predict data as PythonAlg.`/tmp/abc`;

这里我们无需指定项目地址,原因是在/tmp/abc里已经保存了所有需要的元数据。

接着我们部署一个API服务, 通过http接口利用如下语句注册模型:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 register PythonAlg.`/tmp/abc` as pj;

接着就可以预测了(我写了段程序模拟请求)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import org.apache.http.client.fluent.{Form, Request}

object Test {
  def main(args: Array[String]): Unit = {
    val sql = "select pj(vec_dense(features)) as p1 "

    val res = Request.Post("http://127.0.0.1:9003/model/predict").bodyForm(Form.form().
      add("sql", sql).
      add("data", s"""[{"features":[ 0.045, 8.8, 1.001, 45.0, 7.0, 170.0, 0.27, 0.45, 0.36, 3.0, 20.7 ]}]""").
      add("dataType", "row")
      .build()).execute().returnContent().asString()
    println(res)
  }
}

完成。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018.10.07 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
MLFlow︱机器学习工作流框架:MLFlow docker 实践(二)
本来按照这个MLFlow教程(MLflow系列1:MLflow入门教程(Python)),找台机器跑起来没啥问题; 不过,看到项目的github有Dockerfile那必须上啊! 然后就被各类报错虐了一下午。。
悟乙己
2021/12/07
2.2K0
MLFlow︱机器学习工作流框架:MLFlow docker 实践(二)
Azure - 机器学习:快速训练、部署模型
要深入 Azure 机器学习,首先确保你有一个工作区。如果你还未设置工作区,那么请按照指引,完成必要的资源配置来搭建你的工作区,并了解其基本操作。
TechLead
2023/11/03
4980
Azure - 机器学习:快速训练、部署模型
新一代AI平台-MLSQL ,加入开源社区吧!
MLSQL社区希望人人都能够参与进来。开源应该是普惠的,这种普惠应该是在价值的发挥上,以及社区的参与上。我们认为积极的社区参与体现在如下点:
木东居士
2020/04/26
1K0
新一代AI平台-MLSQL ,加入开源社区吧!
MLSQL是如何集成TensorFlow Cluster的
我们知道MLSQL支持SKLearn,TF等流行的算法框架,不过虽然支持了多个实例同时运行,但其实每个模型都需要跑全部数据。有的时候数据太大,确实是个问题,所以这个时候还是需要引入Cluster的。MLSQL基于Spark,所以问题就变成了如何在Spark里集成TF Cluster了。TFoS 已经实现了类似的功能,但遗憾的是,TFoS完全是用Python编写的,并且每次都需要启动一个新的Spark 实例来运行,overhead 是比较高的。
用户2936994
2018/08/27
3940
MLSQL是如何集成TensorFlow Cluster的
Your Guide to DL with MLSQL Stack (3)
This is the third article of Your Guide with MLSQL Stack series. We hope this article series shows you how MLSQL stack helps people do AI job.
用户2936994
2019/05/17
5780
MLSQL拥抱BigDL,轻轻松松无编码玩深度学习
原谅我,前半句是真的,后半句是噱头,但是真的很简化了。 MLSQL已经有一个相对来比较完善的Python Runtime,细节可以参看这篇文章,所以玩深度学习是很容易的,不过需要你提供一段tensorflow代码或者项目。
用户2936994
2018/10/15
4760
Your Guide to Python with MLSQL Stack (二)
In the previous post Your Guide to NLP with MLSQL Stack (一), we already have known how to build a RandomForest model to classify text content. The TF/IDF, RandomForest are all built-in algorithms and implemented by Java. In this post, we will show you how to use Python to do the same job.
用户2936994
2019/05/14
5640
Your Guide to Python with MLSQL Stack (二)
Your Guide to NLP with MLSQL Stack (一)
MLSQL stack supports a complete pipeline of train/predict. This means the following steps can be in the same script:
用户2936994
2019/05/15
5920
【Keras】完整实现‘交通标志’分类、‘票据’分类两个项目,让你掌握深度学习图像分类
我们一般用深度学习做图片分类的入门教材都是MNIST或者CIFAR-10,因为数据都是别人准备好的,有的甚至是一个函数就把所有数据都load进来了,所以跑起来都很简单,但是跑完了,好像自己还没掌握图片分类的完整流程,因为他们没有经历数据处理的阶段,所以谈不上走过一遍深度学习的分类实现过程。今天我想给大家分享两个比较贴近实际的分类项目,从数据分析和处理说起,以Keras为工具,彻底掌握图像分类任务。 这两个分类项目就是:交通标志分类和票据分类。交通标志分类在无人驾驶或者与交通相关项目都有应用,而票据分类任务
机器学习AI算法工程
2018/03/15
1.7K0
【Keras】完整实现‘交通标志’分类、‘票据’分类两个项目,让你掌握深度学习图像分类
入门 | 如何为你的回归问题选择最合适的机器学习方法?
在目前的机器学习领域中,最常见的三种任务就是:回归分析、分类分析、聚类分析。在之前的文章中,我曾写过一篇<15分钟带你入门sklearn与机器学习——分类算法篇>。那么什么是回归呢?回归分析是一种预测性的建模技术,它研究的是因变量(目标)和自变量(预测器)之间的关系。回归分析在机器学习领域应用非常广泛,例如,商品的销量预测问题,交通流量预测问题。那么,如何为这些回归问题选择最合适的机器学习算法呢?这篇文章将从以下一个方面介绍:
zenRRan
2019/05/06
6460
Spark整合Ray思路漫谈(2)
首先,大家可以理解为k8s已经解决一切了,我们spark,ray都跑在K8s上。但是,如果我们希望一个spark 是实例多进程跑的时候,我们并不希望是像传统的那种方式,所有的节点都跑在K8s上,而是将executor部分放到yarn cluster. 在我们的架构里,spark driver 是一个应用,我们可以启动多个pod从而获得多个spark driver实例,对外提供负载均衡,roll upgrade/restart 等功能。也就是k8s应该是面向应用的。但是复杂的计算,我们依然希望留给Yarn,尤其是还涉及到数据本地性,然计算和存储放到一起(yarn和HDFS通常是在一起的),避免k8s和HDFS有大量数据交换。
用户2936994
2022/07/21
1K0
Spark整合Ray思路漫谈(2)
MLSQL解决了什么问题
在谈MLSQL解决了什么问题之前,我们先提一个“数据中台”的概念。什么是数据中台呢?数据中台至少应该具备如下三个特点:
木东居士
2020/04/26
7880
MLSQL解决了什么问题
快速入门Python机器学习(八)
sklearn.preprocessing.StandardScaler:通过去除均值和缩放单位方差来标准化特征
顾翔
2022/05/22
4560
快速入门Python机器学习(八)
MLSQL解决了什么问题
在谈MLSQL解决了什么问题之前,我们先提一个“数据中台”的概念。什么是数据中台呢?数据中台至少应该具备如下三个特点:
用户2936994
2018/12/28
9500
写给【工程同学】的MLSQL机器学习教程
http://qwone.com/~jason/20Newsgroups/20news-19997.tar.gz
用户2936994
2022/04/25
3780
写给【工程同学】的MLSQL机器学习教程
python实现Lasso回归
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/133562.html原文链接:https://javaforall.cn
全栈程序员站长
2022/06/27
3940
python实现Lasso回归
语义检索系统之排序模块:基于ERNIE-Gram的Pair-wise和基于RocketQA的CrossEncoder训练的单塔模型
双塔模型,使用ERNIE-Gram预训练模型,使用margin_ranking_loss训练模型。
汀丶人工智能
2023/08/02
8390
语义检索系统之排序模块:基于ERNIE-Gram的Pair-wise和基于RocketQA的CrossEncoder训练的单塔模型
AI模型注册成MLSQL UDF函数示例
训练一个Tensorflow模型 下面的代码仅支持Console notebook模式下运行 首先,准备minist数据集 include lib.`github.com/allwefantasy/lib-core` where force="true" and libMirror="gitee.com" and -- proxy configuration. alias="libCore"; -- dump minist data to object storage include
用户2936994
2022/07/21
3270
Python机器学习——线性模型
最近断断续续地在接触一些python的东西。按照我的习惯,首先从应用层面搞起,尽快入门,后续再细化一 些技术细节。找了一些资料,基本语法和数据结构搞定之后,目光便转到了scikit-learn这个包。这个包是基于scipy的统计学习包。里面所涵盖 的算法接口非常全面。更令人振奋的是,其用户手册写得非常好。 1.广义线性模型 这里的“广义线性模型”,是指线性模型及其简单的推广,包括岭回归,lasso,LAR,logistic回归,感知器等等。下面将介绍这些模型的基本想法,以及如何用python实现。 1
机器学习AI算法工程
2018/03/12
1.5K0
机器学习算法之岭回归、Lasso回归和ElasticNet回归
作者:biaodianfu https://www.biaodianfu.com/ridge-lasso-elasticnet.html
Ai学习的老章
2019/07/17
1.7K0
机器学习算法之岭回归、Lasso回归和ElasticNet回归
相关推荐
MLFlow︱机器学习工作流框架:MLFlow docker 实践(二)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验