美文网首页Spark和机器学习MLSQL
MLSQL如何支持部署SKLearn,Tensorflow,ML

MLSQL如何支持部署SKLearn,Tensorflow,ML

作者: 祝威廉 | 来源:发表于2018-04-27 16:07 被阅读838次

    部署成API服务时,除了要把raw数据特征化成向量外,研发还要想着怎么加载模型,产生模型的框架五花八门,比如Tensorflow,SKlearn,Spark MLllib等每个框架都有自己的模型格式。在我司,有一次用Sklearn研发了一个模型,研发资源比较紧张,没办法,算法同学治好自己用Python flask搭建了一个API,然后部署成微服务(多实例来解决并发能力)。

    有没有一种办法,可以一键部署多个不同类型框架训练出来的模型呢?答案是有的,目前MLSQL支持部署SKlearn,Tensorflow,Spark Mllib等三种类型框架的模型,完全无需任何开发。举个例子,通过MLSQL训练了一个SkLearn算法的模型,假设是贝叶斯,我们看看部署流程:

    用local模式启动StreamingPro:

    ./bin/spark-submit   --class streaming.core.StreamingApp \
    --master local[2] \
    --name predict_service \
    streamingpro-spark-2.0-1.0.0.jar    \
    -streaming.name predict_service    \
    -streaming.job.file.path file:///tmp/query.json \
    -streaming.platform spark   \
    -streaming.rest true   \
    -streaming.driver.port 9003   \
    -streaming.spark.service true 
    

    这个时候该服务会监听9003端口,向http://127.0.0.1:9003/run/script 接口注册已经训练好的模型:

    register SKLearn.`/tmp/model` as nb_predict;
    

    现在这个模型就已经可以对外提供服务了。你可以通过访问http://127.0.0.1:9003/model/predict获得SkLearn 贝叶斯模型的功能了。

    该接口支持两个参数:

    1. data ,等待预测的向量数组,json格式。支持dense和sparse两种格式的向量。
    2. sql, 选择什么模型进行预测。

    典型参数格式如下:

    data=[[1,2,3...]] & sql=select nb_predict(feature) as p
    

    其中 feature为一个固定字段,也就是指代data里面的向量。最后接口返回结果如下:

    {
        "p": {
            "type": 1,
            "values": [
                1,
                0
            ]
        }
    }
    
    

    最后,项目地址在这里:MLSQL 模型部署

    相关文章

      网友评论

        本文标题:MLSQL如何支持部署SKLearn,Tensorflow,ML

        本文链接:https://www.haomeiwen.com/subject/nlbblftx.html