• MLflow系列4:MLflow模型


    英文链接:https://mlflow.org/docs/latest/models.html
    本文链接:https://www.cnblogs.com/CheeseZH/p/11946260.html

    一个MLflow模型是打包机器学习模型的基本格式,可以方便的应用到不同下游工具,例如实时RESTful服务或者批量推理的Apache Spark。这个格式定义了一系列规范,让你的模型可以被不同的下游工具使用。

    存储格式

    每个MLflow模型都是一个包含各种文件的目录,根目录包含一个MLmode文件,用于定义模型的多个flavors(这是个关键的概念,不知道如何翻译,就使用原词了)。

    Flavors是让MLflow模型强大的关键因素,是一套部署工具可以理解的规范,这使得能够开发一套工具兼容多种机器学习库。MLflow定义了一些基础的flavors,所以内置部署工具都支持,例如“Python function”flavor描述了如何通过Python函数的方式来运行模型。机器学习库也可以定义或使用其他的flavors,例如MLflow的mlflow.sklearn库允许将模型以scikit-learn Pipeline对象来加载或者当作通过的Python函数来使用。

    All of the flavors that a particular model supports are defined in its MLmodel file in YAML format. For example, mlflow.sklearn outputs models as follows:

    一个模型支持的所有flavors都在它的MLmodel文件中定义,这个文件是YAML格式。例如mlflow.sklearn输出模型目录结构:

    # Directory written by mlflow.sklearn.save_model(model, "my_model")
    my_model/
    ├── MLmodel
    └── model.pkl
    

    它的MLmodel文件描述了两个flavors:

    time_created: 2018-05-25T17:28:53.35
    
    flavors:
      sklearn:
        sklearn_version: 0.19.1
        pickled_model: model.pkl
      python_function:
        loader_module: mlflow.sklearn
    

    这个模型可以被任何支持sklearn或python_function模型flavor的工具使用。例如mlflow models serve命令能够serve带有sklearn flavor的模型:

    mlflow models serve my_model
    

    mlflow sagemaker命令行工具可以讲一个带有python_functionflavor的模型打包并部署到AWS SageMaker:

    mlflow sagemaker deploy -m my_model [other options]
    

    Fields in the MLmodel Format

    除了flavors, MLmodel YAML文件可以包含下列信息:

    • time_created
    • run_id,如果模型是通过MLflow Tracking保存的,会有一个run id

    模型API

    你可以通过多种方式保存和加载MLflow模型。首先,MLflow集成了很多通用库,例如mlflow.sklearn包含了用于scikit-learn模型的save_model, log_model, 和 load_model方法。其次,你可使用mlflow.models.Model类来创建和保存模型。这个类有四个关键方法:

    • add_flavor:为模型添加一个flavor。每个flavor有一个字符串名字和字典形式的key-value属性,value可以是任意能够被YAML序列化的对象。
    • save:将模型保存到本地目录。
    • log:使用MLflow Tracking将模型保存为当前run的产品。
    • load:从本地目录加载模型或者从之前的一个run的产品加载模型。

    内置Model Flavors

    模型定制化

    如果MLflow不支持你想使用的机器学习库,那么就需要进行模型定制化,主要包括Custom Python ModelsCustom Flavors

    内置部署工具

    MLflow提供的部署工具可以将MLflow模型部署到本地机器或者一些生产环境。并不是所有的部署方法都适用于所有模型flavors。

    部署MLflow模型

    MLflow可以将模型部署成本地REST API或者直接得出评分文件。MLflow可以将模型打包成支持REST API的Docker镜像。这个镜像可以被部署到类似Kubernetes的各种环境。

    你可以通过mlflow.models模块的命令行来本地部署模型或者生成Docker镜像。

    REST API服务接收通过POST请求发送到/invocations路径的下列数据格式:

    • split orientation格式的JSON-serialized pandas DataFrames. 例如, data = pandas_df.to_json(orient='split'). 这个格式需要在请求头指定Content-Type=application/json 或 application/json; format=pandas-split.
    • records orientation格式的JSON-serialized pandas DataFrames。不建议使用。
    • CSV-serialized pandas DataFrames. 例如data = pandas_df.to_csv(). 这个格式需要指定请求头Content-Type=text/csv。
      例如:
    # split-oriented
    curl http://127.0.0.1:5000/invocations -H 'Content-Type: application/json' -d '{
        "columns": ["a", "b", "c"],
        "data": [[1, 2, 3], [4, 5, 6]]
    }'
    
    # record-oriented (fine for vector rows, loses ordering for JSON records)
    curl http://127.0.0.1:5000/invocations -H 'Content-Type: application/json; format=pandas-records' -d '[[1, 2, 3], [4, 5, 6]]'
    

    常用命令

    • serve:将模型部署成本地REST API服务
    • build_docker:将模型打包成支持REST API的镜像
    • predict:通过模型根据CSV或JSON文件生成预测结果

    详情查看:

    mlflow models --help
    mlflow models serve --help
    mlflow models predict --help
    mlflow models build-docker --help
    

    部署python_function模型到Microsoft Azure ML

    部署python_function模型到Amazon SageMaker

    部署python_function模型到Apache Spark UDF

  • 相关阅读:
    Js变量类型
    前端面试题HTML
    AP聚类
    锚点
    html
    Active Learning主动学习
    z-index
    position
    学习笔记_卷积神经网络
    学习笔记_深度学习的数学基础
  • 原文地址:https://www.cnblogs.com/CheeseZH/p/11946260.html
Copyright © 2020-2023  润新知