英文链接: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

MLflow系列4:MLflow模型的更多相关文章

  1. MLflow系列2:MLflow追踪

    英文链接:https://mlflow.org/docs/latest/tracking.html 本文链接:https://www.cnblogs.com/CheeseZH/p/11945089.h ...

  2. MLflow系列1:MLflow入门教程(Python)

    英文链接:https://mlflow.org/docs/latest/tutorial.html 本文链接:https://www.cnblogs.com/CheeseZH/p/11943280.h ...

  3. MLflow系列3:MLflow项目

    英文链接:https://mlflow.org/docs/latest/projects.html 本文链接:https://www.cnblogs.com/CheeseZH/p/11945432.h ...

  4. 「译」JUnit 5 系列:扩展模型(Extension Model)

    原文地址:http://blog.codefx.org/design/architecture/junit-5-extension-model/ 原文日期:11, Apr, 2016 译文首发:Lin ...

  5. 探索ASP.NET MVC5系列之~~~4.模型篇---包含模型常用特性和过度提交防御

    其实任何资料里面的任何知识点都无所谓,都是不重要的,重要的是学习方法,自行摸索的过程(不妥之处欢迎指正) 汇总:http://www.cnblogs.com/dunitian/p/4822808.ht ...

  6. asp.net core系列 28 EF模型配置(字段,构造函数,拥有实体类型)

    一. 支持字段 EF允许读取或写入字段而不是一个属性.在使用实体类时,用面向对象的封装来限制或增强应用程序代码对数据访问的语义时,这可能很有用.无法使用数据注释配置.除了约定,还可以使用Fluent ...

  7. asp.net core系列 23 EF模型配置(概述, 类型和属性的包含与排除)

    一.模型配置概述 EF使用一组约定基于实体类的定义来构建模型. 可指定其他配置以补充或替代约定的内容.本系列介绍的配置可应用于面向任何数据存储的模型,以及面向任意关系数据库时可应用的配置. 数据库提供 ...

  8. javascript基础学习系列-DOM盒子模型常用属性

    最近在学习DOM盒子模型,各种属性看着眼花缭乱,下面根据三个系列来分别介绍一下: client系列 clientWidth :width+(padding-left)+(padding-right)— ...

  9. 微软BI 之SSAS 系列 - 基于雪花模型的维度设计

    基于雪花模型的维度以下面的 Product 产品与产品子类别,产品类别为例. DimProduct 表和 DimProductSubcategory 表有外键关系,而 DimProductSubcat ...

随机推荐

  1. 【优化】COUNT(1)、COUNT(*)、COUNT(常量)、COUNT(主键)、COUNT(ROWID)、COUNT(非空列)、COUNT(允许为空列)、COUNT(DISTINCT 列名)

    [优化]COUNT(1).COUNT(*).COUNT(常量).COUNT(主键).COUNT(ROWID).COUNT(非空列).COUNT(允许为空列).COUNT(DISTINCT 列名) 1. ...

  2. 【Git版本控制】为什么要先commit,然后pull,最后再push?而不是commit然后直接push?

    情况是这样的,现在远程有一个仓库,分支就一个,是master.然后我本地的仓库是从远程的master上clone下来的.大家都是clone下来,再在自己本地改好,再commit然后pull然后push ...

  3. error C4996: 'AVStream::codec': was declared deprecated

    关闭VS的SDL检查 工程 属性=>C/C++ =>General=> SDL checks 改为 No(/sdl).

  4. H3C FAT AP

  5. Windows & Ubuntu 双系统完美卸载Ubuntu(不残留,无污染)

    双系统卸载Ubuntu时,如若直接从Windows磁盘管理里格式化Ubuntu分区,由于Ubuntu的引导盘的原因,会导致电脑启动时出现问题,所以不建议这样的操作. 卸载Ubuntu前需要区分BIOS ...

  6. oracle中删除表:drop、delete、truncate

    相同点,使用drop delete truncate 都会删除表中的内容 drop table 表名 delete from 表名(后面不跟where语句,则删除表中所有的数据) truncate t ...

  7. 别名alias永久生效别名alias永久生效;虚拟机的NAT模式,进行静态IP配置,并A、B的实现免密访问

    别名alias永久生效 1.打开cd /etc/profile.d 目录 新建文件my_alias.sh 2.my_alias.sh里面添加 alias p=’poweroff -h’ alias r ...

  8. 学习:STL_vector容器

    vector基本概念: 功能: vector数据结构和数组非常相似,也称为单端数组 vector与普通数组区别: 不同之处在于数组是静态空间,而vector可以动态扩展 动态扩展: 并不是在原空间之后 ...

  9. org.apache.tomcat.util.bcel.classfile.ClassFormatException: Invalid byte tag in constant pool: 19

    在Maven上部署Struts2时,突然发生了如下错误,但是tomcat还能运行,发送错误的原因时Struts2的版本太高,和tomcat7不兼容. 开始Struts2用了2.5.20版本,后来换成2 ...

  10. 强制结束虚拟机 centos home 卷丢失导致无法挂载进入 emergency mode 紧急模式

    参考文章: https://blog.51cto.com/13059784/2054378 xfs文件修复参考1:https://codeday.me/bug/20181112/367781.html ...