浅谈机器学习生命周期平台MLflow

简介: MLflow 是一个简化机器学习开发的平台,包括跟踪实验、将代码打包以便于可复现的运行以及共享和部署模型。MLflow 提供了一组轻量级 API,可用于任何现有的机器学习应用程序或库(TensorFlow、PyTorch、XGBoost 等),无论您当前在何处运行 ML 代码(例如:在笔记本电脑、独立应用程序或云平台中)。

简介

MLflow 是一个简化机器学习开发的平台,包括跟踪实验、将代码打包以便于可复现的运行以及共享和部署模型。

MLflow 提供了一组轻量级 API,可用于任何现有的机器学习应用程序或库(TensorFlow、PyTorch、XGBoost 等),无论您当前在何处运行 ML 代码(例如:在笔记本电脑、独立应用程序或云平台中)。


机器学习工作流程

机器学习需要对广泛的数据集、数据准备步骤和算法进行试验,以构建最大化某些目标指标的模型。构建模型后,您还需要将其部署到生产系统,监控其性能,并根据新数据不断对其进行重新训练并与需要替代的模型进行比较。

因此,通过机器学习来提高生产力可能具有挑战性,原因如下:

  • 很难跟踪实验。当您只是在笔记本电脑或交互式 notebook 上处理文件时,您如何判断哪些数据、代码和参数用于获得特定结果?
  • 很难重现代码。即使您已经细致地跟踪了代码版本和参数,您也需要捕获整个环境(例如,依赖库)才能再次获得相同的结果。如果您希望其他数据科学家使用您的代码,或者如果您想在另一个平台(例如,在云平台中)大规模运行相同的代码,这尤其具有挑战性。
  • 没有标准的方法来打包和部署模型。每个数据科学团队都为其使用的每个 ML 库提出了自己的方法,并且模型与生成它的代码和参数之间的链接经常丢失。
  • 没有中央存储来管理模型(它们的版本和阶段变迁)。数据科学团队创建了许多模型。由于缺乏协作和管理模型生命周期的中央位置,数据科学团队在如何管理模型阶段方面面临挑战:从开发到登台,最后到归档或生产,以及各自的版本、注释和历史。

此外,尽管单个 ML 库为其中一些问题(例如:模型服务)提供了解决方案,但为了获得最佳结果,您通常需要尝试多个 ML 库。 MLflow 让您可以使用任何库训练、重用和部署模型,并将它们打包成可重复的步骤,其他数据科学家可以将其用作“黑匣子”,甚至无需知道您使用的是哪个库。


设计理念

MLflow 的核心理念是尽可能少地限制您的工作流程:它旨在与任何机器学习库一起使用,按照惯例(约定)确定有关您的代码的大部分内容,并且只需要最少的更改即可集成到现有的代码库中。 MLflow 的目标是获取以其格式编写的任何代码库,并使其可复现和可重复使用,可供多个数据科学家使用。


MLflow 组件

MLflow 目前提供四个组件:跟踪(Tracking)、项目(Projects)、模型(Models)和模型注册表(Model Registry)。 您可以单独使用这些组件中的每一个。例如,也许您想以 MLflow 的模型格式导出模型,而不使用 Tracking 或 Projects,但它们也可以很好地协同工作。

  • MLflow Tracking:通过 API 的形式记录机器学习实验中的参数、代码和结果,并使用交互式 UI 进行比较。
  • MLflow Projects:使用 Conda 和 Docker 将可重复运行的代码打包;因此,您可以与他人共享您的 ML 代码。
  • MLflow Models:一种模型打包格式和工具,让您可以轻松地将相同的模型(来自任何 ML 库)部署到 Docker、Apache Spark、Azure ML 和 AWS SageMaker 等平台上的批处理和实时评分。
  • MLflow Model Registry:一个集中式模型仓库,通过 API 和 UI 用于协作管理 MLflow 模型的整个生命周期。


MLflow 特点

  • 适用于任何 ML 库、语言和现有的代码
  • 在任何云中以相同的方式运行
  • 为从 1 个用户扩展到大型组织而设计
  • 使用 Apache Spark 处理规模化的大数据


如何指定制品位置

当您在 MLflow API 中指定制品的位置时,语法取决于您是调用的 Tracking、Models 还是 Projects 的 API。 对于 Tracking API,您可以使用(运行 ID,相对路径)元组指定制品位置。 对于 Models 和 Projects API,您可以通过以下方式指定制品位置:

  • /Users/me/path/to/local/model
  • relative/path/to/local/model
  • <scheme>/<scheme-dependent-path>,例如:
  • s3://my_bucket/path/to/model
  • hdfs://<host>:<port>/<path>
  • runs:/<mlflow_run_id>/run-relative/path/to/model
  • models:/<model_name>/<model_version>
  • models:/<model_name>/<stage>
  • mlflow-artifacts:/path/to/model(在 --serve-artifacts 代理模式下运行跟踪服务时)

Tracking API 示例:

mlflow.log_artifacts("<mlflow_run_id>", "/path/to/artifact")
复制代码


Models API 示例:

mlflow.pytorch.log_model("runs:/<mlflow_run_id>/run-relative/path/to/model", registered_model_name="mymodel")
复制代码


mlflow.pytorch.load_model("models:/mymodel/1")
复制代码


可扩展性和大数据

数据是机器学习获得良好结果的关键,因此, MLflow 旨在扩展到大型数据集、大型输出文件(例如:模型)和大量实验。具体来说,MLflow 支持四个维度的扩展:

  • 单个 MLflow 运行可以在分布式集群上执行,例如,使用 Apache Spark。您可以在您选择的分布式基础架构上启动运行并将结果报告给跟踪服务以进行比较。 MLflow 包含一个内置 API,用于在 Databricks 上启动运行。
  • MLflow 支持使用不同的参数并行启动多个运行,例如,用于超参数调优。您可以简单地使用 Projects API 来启动多个运行,并使用 Tracking API 来跟踪它们。
  • MLflow 项目可以从分布式存储系统(例如:AWS S3DBFS)获取输入并将输出写入其中。 MLflow 可以为只能在本地文件上运行的项目自动在本地下载此类文件,或者如果支持,则为项目提供分布式存储 URI。这意味着您可以编写构建大型数据集的项目,例如:对一个 100 TB 的文件进行特征化处理。
  • MLflow 模型注册表为大型组织提供了一个中央枢纽,以协作管理完整的模型生命周期。组织内的许多数据科学团队开发了数百个模型,每个模型都有其实验、运行、版本、制品和阶段变迁。中央注册表有助于大型组织中多个团队的模型发现和了解模型的用途。


应用场景

无论您是单独工作的数据科学家还是大型组织的一部分,都可以通过多种方式使用 MLflow:

  • 个人数据科学家可以使用 MLflow Tracking 在他们的机器上本地跟踪实验,组织项目中的代码以供将来重用,并输出模型,然后,生产工程师可以使用 MLflow 的部署工具进行部署。 MLflow Tracking 默认只是读写文件到本地文件系统,所以不需要部署服务
  • 数据科学团队可以部署 MLflow Tracking 服务来记录和比较处理同一问题的多个用户的结果。通过设置命名参数和指标的约定,他们可以尝试不同的算法来解决相同的问题,然后在新数据上再次运行相同的算法来比较未来的模型。此外,任何人都可以下载并运行另一个模型。
  • 大型组织可以使用 MLflow 共享项目、模型和结果。任何团队都可以使用 MLflow Projects运行另一个团队的代码,因此,组织可以打包其他团队可以使用的有用的训练和数据准备步骤,或者比较多个团队在同一任务上的结果。此外,工程团队可以轻松地将工作流程从研发转移到生产阶段。
  • 生产工程师可以以相同的方式部署来自不同 ML 库的模型,将模型作为文件存储在他们选择的管理系统中,并跟踪运行模型的来源。
  • 研究人员和开源开发人员可以以 MLflow Project 的格式将代码发布到 GitHub,使任何人都可以轻松地使用 mlflow run github.com/... 命令运行他们的代码。
  • ML 库开发人员可以输出 MLflow 模型格式的模型,让它们使用 MLflow 的内置工具自动支持部署。此外,部署工具开发人员(例如,构建服务平台的云供应商)可以自动支持多种模型。


相关文章
|
机器学习/深度学习 API 网络架构
"解锁机器学习超级能力!Databricks携手Mlflow,让模型训练与部署上演智能风暴,一触即发,点燃你的数据科学梦想!"
【8月更文挑战第9天】机器学习模型的训练与部署流程复杂,涵盖数据准备、模型训练、性能评估及部署等步骤。本文详述如何借助Databricks与Mlflow的强大组合来管理这一流程。首先需在Databricks环境内安装Mlflow库。接着,利用Mlflow跟踪功能记录训练过程中的参数与性能指标。最后,通过Mlflow提供的模型服务功能,采用REST API或Docker容器等方式部署模型。这一流程充分利用了Databricks的数据处理能力和Mlflow的生命周期管理优势。
748 7
|
机器学习/深度学习 编解码 算法
机器学习项目生命周期
机器学习项目生命周期
666 0
|
机器学习/深度学习 监控 算法
机器学习模型的生命周期
机器学习模型的生命周期
|
机器学习/深度学习 算法 数据挖掘
数据驱动!精细化运营!用机器学习做客户生命周期与价值预估!⛵
如何预测客户价值,计算特定时间段内能带来的价值,是互联网公司在面临海量用户时急需解决的运营命题。本文就来讲解『机器学习+RFM模型』的精细化运营解决方案。
1270 2
数据驱动!精细化运营!用机器学习做客户生命周期与价值预估!⛵
|
机器学习/深度学习 人工智能 算法
简化和扩展机器学习生命周期的7个人工智能趋势
随着人工智能(AI)变得越来越普遍,每个行业都竞相开发人工智能AI解决方案来推进它们的用例,围绕生产环境部署出现了实际的挑战。 在之前的文章中:如何从实验转向构建生产机器学习应用程序 ,我描述了将机器学习(ML)实验用于生产部署的过程。
2364 0
|
机器学习/深度学习 算法 搜索推荐
Machine Learning机器学习之决策树算法 Decision Tree(附Python代码)
Machine Learning机器学习之决策树算法 Decision Tree(附Python代码)
|
机器学习/深度学习 分布式计算 算法
大模型开发:你如何确定使用哪种机器学习算法?
在大型机器学习模型开发中,选择算法是关键。首先,明确问题类型(如回归、分类、聚类等)。其次,考虑数据规模、特征数量和类型、分布和结构,以判断适合的算法。再者,评估性能要求(准确性、速度、可解释性)和资源限制(计算资源、内存)。同时,利用领域知识和正则化来选择模型。最后,通过实验验证和模型比较进行优化。此过程涉及迭代和业务需求的技术权衡。
901 2
|
机器学习/深度学习 数据采集 算法
构建高效机器学习模型:从数据处理到算法优化
【2月更文挑战第30天】 在数据驱动的时代,构建一个高效的机器学习模型是实现智能决策和预测的关键。本文将深入探讨如何通过有效的数据处理策略、合理的特征工程、选择适宜的学习算法以及进行细致的参数调优来提升模型性能。我们将剖析标准化与归一化的差异,探索主成分分析(PCA)的降维魔力,讨论支持向量机(SVM)和随机森林等算法的适用场景,并最终通过网格搜索(GridSearchCV)来实现参数的最优化。本文旨在为读者提供一条清晰的路径,以应对机器学习项目中的挑战,从而在实际应用中取得更精准的预测结果和更强的泛化能力。
|
机器学习/深度学习 自然语言处理 算法
【机器学习】包裹式特征选择之拉斯维加斯包装器(LVW)算法
【机器学习】包裹式特征选择之拉斯维加斯包装器(LVW)算法
847 0

热门文章

最新文章