浅谈机器学习生命周期平台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 的内置工具自动支持部署。此外,部署工具开发人员(例如,构建服务平台的云供应商)可以自动支持多种模型。


相关文章
|
3月前
|
机器学习/深度学习 测试技术
阿里云入选Gartner数据科学和机器学习平台挑战者象限
Gartner® 正式发布了《数据科学与机器学习平台魔力象限》报告(Magic Quadrant™ for Data Science and Machine Learning Platforms),阿里云成为唯一一家入选该报告的中国厂商,被评为“挑战者”(Challengers)。
|
2月前
|
机器学习/深度学习 人工智能 监控
AutoTrain:Hugging Face 开源的无代码模型训练平台
AutoTrain 是 Hugging Face 推出的开源无代码模型训练平台,旨在简化最先进模型的训练过程。用户无需编写代码,只需上传数据即可创建、微调和部署自己的 AI 模型。AutoTrain 支持多种机器学习任务,并提供自动化最佳实践,包括超参数调整、模型验证和分布式训练。
179 4
AutoTrain:Hugging Face 开源的无代码模型训练平台
|
6天前
|
存储 人工智能 大数据
AI开发新范式,PAI模型构建平台升级发布
本次分享由阿里云智能集团产品专家高慧玲主讲,聚焦AI开发新范式及PAI模型构建平台的升级。分享分为四个部分,围绕“人人可用”和“面向生产”两大核心理念展开。通过降低AI工程化门槛、提供一站式全链路服务,PAI平台致力于帮助企业和开发者更高效地实现AI应用。案例展示中,介绍了多模态模型微调在文旅场景的应用,展示了如何快速复现并利用AI解决实际问题。最终目标是让AI技术更普及,赋能各行业,推动社会进步。
|
6月前
|
机器学习/深度学习 人工智能 Shell
人工智能平台PAI操作报错合集之在分布式训练过程中遇到报错,是什么原因
阿里云人工智能平台PAI是一个功能强大、易于使用的AI开发平台,旨在降低AI开发门槛,加速创新,助力企业和开发者高效构建、部署和管理人工智能应用。其中包含了一系列相互协同的产品与服务,共同构成一个完整的人工智能开发与应用生态系统。以下是对PAI产品使用合集的概述,涵盖数据处理、模型开发、训练加速、模型部署及管理等多个环节。
|
6月前
|
机器学习/深度学习 人工智能 数据处理
人工智能平台PAI操作报错合集之任务重启后出现模型拆分报错,该怎么办
阿里云人工智能平台PAI是一个功能强大、易于使用的AI开发平台,旨在降低AI开发门槛,加速创新,助力企业和开发者高效构建、部署和管理人工智能应用。其中包含了一系列相互协同的产品与服务,共同构成一个完整的人工智能开发与应用生态系统。以下是对PAI产品使用合集的概述,涵盖数据处理、模型开发、训练加速、模型部署及管理等多个环节。
|
3月前
|
机器学习/深度学习 人工智能 算法
机器学习【教育领域及其平台搭建】
机器学习【教育领域及其平台搭建】
69 6
|
5月前
|
机器学习/深度学习 API 网络架构
"解锁机器学习超级能力!Databricks携手Mlflow,让模型训练与部署上演智能风暴,一触即发,点燃你的数据科学梦想!"
【8月更文挑战第9天】机器学习模型的训练与部署流程复杂,涵盖数据准备、模型训练、性能评估及部署等步骤。本文详述如何借助Databricks与Mlflow的强大组合来管理这一流程。首先需在Databricks环境内安装Mlflow库。接着,利用Mlflow跟踪功能记录训练过程中的参数与性能指标。最后,通过Mlflow提供的模型服务功能,采用REST API或Docker容器等方式部署模型。这一流程充分利用了Databricks的数据处理能力和Mlflow的生命周期管理优势。
208 7
|
6月前
|
数据采集 人工智能 自然语言处理
阿里云百炼平台深度体验:智能问答与模型训练的创新之旅
在人工智能的浪潮中,阿里云百炼平台以其强大的大模型开发能力,为企业和个人开发者提供了一站式的解决方案。本文将从知识检索应用搭建、模型训练调优以及流程管理功能三个角度,全面评测阿里云百炼平台的实际使用体验。
352 3
|
5月前
|
机器学习/深度学习 人工智能 Linux
【机器学习】Dify:AI智能体开发平台版本升级
【机器学习】Dify:AI智能体开发平台版本升级
320 0
|
6月前
|
机器学习/深度学习 人工智能 分布式计算
人工智能平台PAI操作报错合集之引用github.com/alibaba/pairec包时报错,该如何解决
阿里云人工智能平台PAI是一个功能强大、易于使用的AI开发平台,旨在降低AI开发门槛,加速创新,助力企业和开发者高效构建、部署和管理人工智能应用。其中包含了一系列相互协同的产品与服务,共同构成一个完整的人工智能开发与应用生态系统。以下是对PAI产品使用合集的概述,涵盖数据处理、模型开发、训练加速、模型部署及管理等多个环节。