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
79000
代码可运行
举报
文章被收录于专栏:祝威廉祝威廉
运行总次数: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 实践(二)
MLSQL是如何集成TensorFlow Cluster的
我们知道MLSQL支持SKLearn,TF等流行的算法框架,不过虽然支持了多个实例同时运行,但其实每个模型都需要跑全部数据。有的时候数据太大,确实是个问题,所以这个时候还是需要引入Cluster的。MLSQL基于Spark,所以问题就变成了如何在Spark里集成TF Cluster了。TFoS 已经实现了类似的功能,但遗憾的是,TFoS完全是用Python编写的,并且每次都需要启动一个新的Spark 实例来运行,overhead 是比较高的。
用户2936994
2018/08/27
4030
MLSQL是如何集成TensorFlow Cluster的
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
1.1K0
Spark整合Ray思路漫谈(2)
新一代AI平台-MLSQL ,加入开源社区吧!
MLSQL社区希望人人都能够参与进来。开源应该是普惠的,这种普惠应该是在价值的发挥上,以及社区的参与上。我们认为积极的社区参与体现在如下点:
木东居士
2020/04/26
1.1K0
新一代AI平台-MLSQL ,加入开源社区吧!
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
5900
MLSQL解决了什么问题
在谈MLSQL解决了什么问题之前,我们先提一个“数据中台”的概念。什么是数据中台呢?数据中台至少应该具备如下三个特点:
用户2936994
2018/12/28
9640
快速入门Python机器学习(八)
sklearn.preprocessing.StandardScaler:通过去除均值和缩放单位方差来标准化特征
顾翔
2022/05/22
4660
快速入门Python机器学习(八)
MLSQL解决了什么问题
在谈MLSQL解决了什么问题之前,我们先提一个“数据中台”的概念。什么是数据中台呢?数据中台至少应该具备如下三个特点:
木东居士
2020/04/26
7970
MLSQL解决了什么问题
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
6000
谷歌BigQuery ML VS StreamingPro MLSQL
今天看到了一篇 AI前线的文章谷歌BigQuery ML正式上岗,只会用SQL也能玩转机器学习!。正好自己也在力推 StreamingPro的MLSQL。 今天就来对比下这两款产品。
用户2936994
2018/08/27
1.6K0
python实现线性回归之弹性网回归
恰好为岭回归罚函数和Lasso罚函数的一个凸线性组合.当α=0时,弹性网回归即为岭回归;当 α=1时,弹性网回归即为Lasso回归.因此,弹性网回归兼有Lasso回归和岭回归的优点,既能达到变量选择的目的,又具有很好的群组效应。
西西嘛呦
2020/08/26
1.8K0
python实现线性回归之弹性网回归
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
5740
Your Guide to Python with MLSQL Stack (二)
MLSQL拥抱BigDL,轻轻松松无编码玩深度学习
原谅我,前半句是真的,后半句是噱头,但是真的很简化了。 MLSQL已经有一个相对来比较完善的Python Runtime,细节可以参看这篇文章,所以玩深度学习是很容易的,不过需要你提供一段tensorflow代码或者项目。
用户2936994
2018/10/15
4810
机器学习测试笔记(22)——综合_散点图
注:由于'AgglomerativeClustering'和'DBSCAN'画边界非常慢,一般情况下可不做不边界,放入self.no_bord_list中,要用的时候取出来。
顾翔
2021/01/28
3370
MLSQL-ET开发指南
MLSQL具备足够灵活的扩展性,能够同时解决 Data + AI 领域的问题。我们提供了大量的插件,方便用户在数据处理、商业分析和机器学习的不同场景中使用 MLSQL。这些插件类型包括: DataSource、ET、Script、App,我们都可以灵活的通过离线或者线上的方式注册到 MLSQL Engine 中使用。 在 MLSQL 中,ET(Estimator/Transformer的简称)是一个非常重要的概念。通过 ET,我们可以完成非常多的复杂任务。包括:
用户2936994
2022/01/07
8000
MLSQL-ET开发指南
关于重温机器学习笔记-线性模型
由于高等数学底子太差的原因,机器学习总是无法深入学习下去,只能做一个简单的尝试者,甚至连调优也未必能算的上,不过这样也好,可以把重心放到对业务的理解上,以及业务和模型的选择上。
python与大数据分析
2022/03/11
5010
关于重温机器学习笔记-线性模型
推荐系统中的正则化技术
推荐系统是现代互联网服务中的核心组成部分,能够帮助用户在海量信息中快速找到感兴趣的内容。然而,推荐系统在实际应用中面临许多挑战,其中之一就是如何避免模型过拟合,提高泛化能力。正则化技术作为一种有效的方法,可以帮助推荐系统克服这一难题。
二一年冬末
2024/08/16
1590
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
3340
Azure - 机器学习:快速训练、部署模型
要深入 Azure 机器学习,首先确保你有一个工作区。如果你还未设置工作区,那么请按照指引,完成必要的资源配置来搭建你的工作区,并了解其基本操作。
TechLead
2023/11/03
5160
Azure - 机器学习:快速训练、部署模型
Kaggle初探--房价预测案例之模型建立
本文数据来源kaggle的House Prices: Advanced Regression Techniques大赛。
zhuanxu
2018/08/23
2.9K0
Kaggle初探--房价预测案例之模型建立
相关推荐
MLFlow︱机器学习工作流框架:MLFlow docker 实践(二)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验