首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
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 删除。

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Timestamps are unset in a packet for stream 0. This is deprecated and will stop
发布于2022年4月10日 最近,在处理多媒体应用程序或视频处理库时,您可能会遇到一个警告信息,提示“流0的数据包中未设置时间戳,这已不推荐使用,并将在未来停止工作”。在本篇博客文章中,我们将讨论这个警告的含义,为什么它被弃用,并介绍解决方法。
大盘鸡拌面
2023/11/15
1.5K0
Python实现高级电影特效
前几天写了个实现特效的博客,感觉有点差强人意,只是简简单单的换背景应用场景不是非常多,今天就来实现一个更加复杂的特效“影分身”。下面有请我们本场的主演,坤制作人为我们表演他拿手的鸡你太美。
ZackSock
2020/05/18
1.5K0
Python实现高级电影特效
OpenCVSharp学习笔记(三)显示摄像头视频和媒体视频&录制
视频录制的方法也比较简单,只需要使用VideoWriter类进行录制,将获取到的每帧画面放入,并设置路径和输出格式即可
MaybeHC
2024/04/23
7130
OpenCVSharp学习笔记(三)显示摄像头视频和媒体视频&录制
【计算机视觉】【图像处理综合应用】路沿检测
用python的OpenCV实现视频文件的处理,用videoCapture打开视频文件,读取每一帧进行处理,然后用videoWriter保存成视频。
叶茂林
2023/11/27
6000
【计算机视觉】【图像处理综合应用】路沿检测
"眼睛成长记"(三)---火眼金睛
(1)方法原型: CV_WRAP virtual bool read(OutputArray image);
视界音你而不同
2020/04/10
4180
"眼睛成长记"(三)---火眼金睛
如何用GPT-4o解读视频
  OpenAI在去年推出的GPT-4V已经支持了多模态识别,但一直仅限于图片输入,不支持视频。相比之下,Google的Gemini早已支持视频识别。最近,我司业务场景中出现了一个需要识别视频的需求,而我们只采购了GPT-4o模型。这就引发了一个问题:如何使用GPT-4o完成对视频的处理?
xindoo
2024/11/18
6750
如何用GPT-4o解读视频
OpenCV:目标跟踪。
下面就通过计算视频帧之间的差异(即考虑背景帧和其他帧之间的差异),进而实现目标跟踪。
AiTechYun
2019/07/17
2K0
OpenCV:目标跟踪。
Python实现5毛钱特效
Python牛已经不是一天两天的事了,但是我开始也没想到,Python能这么牛。前段时间接触了一个批量抠图的模型库,而后在一些视频中找到灵感,觉得应该可以通过抠图的方式,给视频换一个不同的场景,于是就有了今天的文章。
ZackSock
2020/04/16
1.1K0
python带你剪辑视频
嗯,好久没写文章了。因为最近没有熬夜了,天天背电脑也很辛苦。 工作嘛,手工为主,没有啥技术成长,也没啥好写的。 疫情期间,总听到有人叹气,总听到抖音里面“我太难了”。
赵云龙龙
2020/08/13
3.1K0
【目标检测】视频输出体积太大?分析视频的编码与码率问题
早期电视台在传输节目信息时,由于带宽有限,于是想在带宽不变的情况下,增加图像的分辨率,让画面看起来更清晰,于是就采用隔行扫描的方式,如下图所示[1],第一帧扫描奇数行的数据,第二帧扫描偶数行的数据,交替进行。由于视觉暂留,在人眼看来就是完整的视频图像。
zstar
2023/12/19
1K0
【目标检测】视频输出体积太大?分析视频的编码与码率问题
Python玩转各种多媒体,视频、音频到图片
我们经常会遇到一些对于多媒体文件修改的操作,像是对视频文件的操作:视频剪辑、字幕编辑、分离音频、视频音频混流等。又比如对音频文件的操作:音频剪辑,音频格式转换。再比如我们最常用的图片文件,格式转换、各个属性的编辑等。因为多媒体文件的操作众多,本文选取一些极具代表性的操作,以代码的形式实现各个操作。
ZackSock
2020/05/18
2.5K0
Python玩转各种多媒体,视频、音频到图片
实践|OpenCV4.2使用DNN进行人脸检测二(视频篇)
前一篇《实践|OpenCV4.2使用DNN进行人脸检测一(图片篇)》我们已经实现了人脸检测的主要方法,这一篇我们来看看加载视频中实时检测效果,检测来说其实也都是一样的,主要就是把播放的视频每帧通过检测去进行处理,代码我会直接贴出来,这里主要是想说的核心点,Debug和Relese的运行效果差异之大
Vaccae
2020/04/08
6160
实践|OpenCV4.2使用DNN进行人脸检测二(视频篇)
python将视频抽帧的的多种方式
最近有一个需求是将视频抽取为一个个的帧图片,使用python很方便实现,而且有多种方式;
JQ实验室
2022/09/29
3.3K0
ESP8266WIFI连网播放视频
本篇介绍ESP8266在OLED上播放视频: 电脑端Python程序作为视频数据的服务器,借助OpenCV实时读取视频帧,并进行二值图像转换,尺寸调整,再将二值图像转为数组,并以二进制形式的数据通过socket方式无线发送给ESP8266。 ESP8266采用Arduino IDE编程,借助U8g2库,将图像数据实时显示到OLED屏幕中。 1 ESP8266端视频帧接收与播放程序 ESP8266作为socket客户端,接收服务端发送的图像帧数据,进行显示。 ESP8266使用Arduino IDE环境进
xxpcb
2022/10/04
6750
ESP8266WIFI连网播放视频
测试~python库介绍(一) opencv
从事测试工作已有4年了,期间通过python编写了很多自动化脚本,接下来的日子和大家分享一下测试工作上常用的python库,适合常年从事黑盒测试的同学了解一些入门级技巧。
用户5521279
2020/12/24
8380
Python20行代码实现视频字符化
我们经常在B站上看到一些字符鬼畜视频,主要就是将一个视频转换成字符的样子展现出来。看起来是非常高端,但是实际实现起来确实非常简单,我们只需要接触opencv模块,就能很快的实现视频字符化。但是在此之前,我们先看看我们实现的效果是怎样的:
ZackSock
2020/05/18
9280
Python20行代码实现视频字符化
Mac端也可以做视频分帧啦!——性能测试视频分帧工具
近期由于做了几个关于端外跳转到打车和检索页的性能优化项目,考虑到Mac端没有靠谱并且好用的视频分帧工具,于是决定自己基于ffmpeg写一个视频分帧的小工具,以便后续能够对于视频分帧性能测试场景有专属的测试工具,提高该场景的性能测试效率。经过调研发现,Windows端大家都在用一个网上较多人使用的yyb_so_test的视频分帧小工具,而Mac端就没有找到类似的,下面我就自己使用的经验,给大家分享一下,我的Mac端使用的视频分帧小工具!
keenfan
2024/03/28
4310
Mac端也可以做视频分帧啦!——性能测试视频分帧工具
计算机视觉算法中的 多目标跟踪(Multi-object Tracking)
计算机视觉领域中的目标跟踪是一项重要的研究任务,它涉及在视频序列中自动识别和跟踪多个感兴趣的目标。多目标跟踪(Multi-object Tracking)旨在从连续的图像帧中准确地定位和跟踪多个目标,同时保持目标的身份一致性。本文将介绍多目标跟踪的基本概念、常见的算法和应用领域。
大盘鸡拌面
2023/09/18
3.9K0
Python中的av入门
在Python中,av是一个强大的多媒体处理库,提供了音频和视频的编码、解码、剪辑、合并等功能。本文将介绍av库的安装和基本用法,以帮助你快速入门。
大盘鸡拌面
2023/10/17
9900
使用opencv处理多媒体数据
OpenCV做图像处理的同学应该特别熟悉。Open Source Computer Vision Library 开源的计算器视觉库。
languageX
2023/11/14
4910
推荐阅读
相关推荐
Timestamps are unset in a packet for stream 0. This is deprecated and will stop
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验