MLflow 概述

踏入机器学习(ML)的世界是一次令人兴奋的旅程,但它往往伴随着可能阻碍创新和实验的复杂性。

MLflow 是解决动态环境中许多问题的解决方案,提供工具并简化流程以优化机器学习生命周期并促进机器学习从业者之间的协作。

无论你是个人研究者、大型团队的一员,还是介于两者之间,MLflow 提供了一个 统一的平台 来导航 模型开发部署管理 的复杂迷宫。MLflow 旨在通过简化模型开发中独特的繁琐日志记录、组织和血统问题,来促进ML解决方案开发中的创新。这种专注使你能够确保你的ML项目是健壮的、透明的,并且准备好应对现实世界的挑战。

继续阅读以了解 MLflow 的核心组件,并理解它为模型开发和管理相关复杂工作流程带来的独特优势。

MLflow 的核心组件

MLflow 的核心提供了一套旨在简化 ML 工作流的工具。它专为协助 ML 从业者在 ML 开发和部署的各个阶段而设计。尽管其功能广泛,但 MLflow 的功能基于几个基础组件:

  • 跟踪: MLflow 跟踪提供了一个专用的 API 和 UI,用于在 ML 过程中记录参数、代码版本、指标和工件。这个集中式仓库捕获了参数、指标、工件、数据和环境配置等细节,使团队能够洞察其模型随时间的变化。无论是在独立脚本、笔记本还是其他环境中工作,跟踪都便于将结果记录到本地文件或服务器,使得跨不同用户比较多个运行变得更加容易。

  • 模型注册表: 模型注册表是一种系统化的模型管理方法,它有助于处理不同版本的模型,区分它们的状态,并确保平稳的生产化。它提供了一个集中的模型存储、API和UI,以协作管理MLflow模型的整个生命周期,包括模型血统、版本控制、别名、标签和注释。

  • LLMs 的 MLflow 部署: 这个服务器配备了一组标准化的 API,简化了访问 SaaS 和 OSS LLM 模型的过程。它作为一个统一的接口,通过认证访问增强了安全性,并为主要的 LLM 提供了一组通用的 API。

  • 评估: 专为深入模型分析设计,这组工具便于客观地比较模型,无论是传统的机器学习算法还是前沿的大型语言模型。

  • 提示工程界面: 这是一个专为提示工程设计的界面,以UI为中心的组件提供了一个用于提示实验、优化、评估、测试和部署的空间。

  • 配方: 作为构建机器学习项目的指南,配方在提供建议的同时,专注于确保功能性最终结果,这些结果针对实际部署场景进行了优化。

  • 项目: MLflow 项目标准化了机器学习代码、工作流和工件的打包,类似于一个可执行文件。每个项目,无论是包含代码的目录还是 Git 仓库,都使用描述符或约定来定义其依赖关系和执行方法。

通过整合这些核心组件,MLflow 提供了一个端到端的平台,确保在整个机器学习生命周期中实现效率、一致性和可追溯性。

为什么要使用 MLflow?

机器学习(ML)过程是复杂的,包括从数据预处理到模型部署和监控的各个阶段。确保在整个生命周期中保持生产力和效率面临着几个挑战:

  • 实验管理:跟踪众多的实验尤其在处理文件或交互式笔记本时非常困难。确定哪种数据、代码和参数组合导致了特定结果可能成为一项艰巨的任务。

  • 可重复性:确保在不同运行中获得一致的结果并非易事。除了跟踪代码版本和参数外,捕获整个环境,包括库依赖关系,是至关重要的。当与其他数据科学家合作或在不同平台上扩展代码时,这一挑战变得更加复杂。

  • 部署一致性:由于有大量的机器学习库可用,通常没有标准化的方式来打包和部署模型。自定义解决方案可能导致不一致性,并且模型与其产生的代码和参数之间的关键联系可能会丢失。

  • 模型管理:随着数据科学团队产生大量模型,管理、测试和持续部署这些模型成为一个重大障碍。没有集中平台,管理模型生命周期变得难以处理。

  • 库无关性:虽然个别机器学习库可能提供一些挑战的解决方案,但通常需要跨多个库进行实验才能获得最佳结果。一个平台在确保模型作为可重复的“黑箱”可用的同时,提供与各种库的兼容性是至关重要的。

MLflow 通过提供一个为整个机器学习生命周期量身定制的统一平台来应对这些挑战。其优势包括:

  • 可追溯性:通过使用追踪服务器等工具,每次实验都会被记录下来,确保团队能够追溯并理解模型的演变过程。

  • 一致性:无论是通过 MLflow Deployments 访问 LLMs 模型,还是使用 MLflow Recipes 构建项目,MLflow 都提倡一致的方法,从而降低学习曲线和潜在错误。

  • 灵活性: MLflow 的与库无关的设计确保了与广泛的机器学习库的兼容性。它提供了跨不同编程语言的全面支持,背后有强大的 REST APICLI 以及 Python APIR APIJava API 的API。

通过简化复杂的机器学习工作流程,MLflow 使数据科学家和开发人员能够专注于构建和优化模型,确保从实验到生产的顺畅路径。

谁在使用 MLflow?

在整个项目的生命周期中,MLflow 中的组件设计用于满足不同的需求。

MLflow 概述,展示了从数据准备到监控的 ML 生命周期。上方的标签显示了与每个阶段相关的人员:数据工程师和科学家在早期阶段,ML 工程师和业务利益相关者在后期阶段。数据治理官参与所有阶段。

MLflow 的多功能性增强了从数据科学家到提示工程师等各种角色的工作流程,扩展了其影响范围,超越了数据科学团队的限制。

数据科学家 利用 MLflow 进行:

  • 实验跟踪和假设检验的持久性。

  • 代码结构化以提高可重复性。

  • 模型打包与依赖管理。

  • 评估超参数调优选择边界。

  • 比较模型随时间重新训练的结果。

  • 审查并选择最佳模型以进行部署。

MLOps 专业人员 利用 MLflow 来:

  • 管理训练模型的生命周期,包括部署前和部署后。

  • 安全地将模型部署到生产环境中。

  • 在部署之前审核和评审候选模型。

  • 管理部署依赖项。

数据科学管理者 通过以下方式与 MLflow 互动:

  • 审查实验和建模活动的结果。

  • 与团队合作,确保建模目标与业务目标一致。

提示工程用户 使用 MLflow 进行:

  • 评估和实验大型语言模型。

  • 制作自定义提示并保存其候选创作。

  • 决定最适合其特定项目需求的基模型。

MLflow 的使用案例

MLflow 功能多样,适用于各种机器学习场景。以下是一些典型的用例:

  • 实验跟踪:一个数据科学团队利用 MLflow 跟踪来记录特定领域实验的参数和指标。通过使用 MLflow UI,他们可以比较结果并微调他们的解决方案方法。这些实验的结果作为 MLflow 模型保存。

  • 模型选择与部署:MLOps 工程师使用 MLflow UI 来评估并选择表现最佳的模型。选定的模型会在 MLflow Registry 中注册,以便监控其在现实世界中的表现。

  • 模型性能监控:部署后,MLOps 工程师利用 MLflow Registry 来评估模型的有效性,将其与其他模型在实际环境中进行对比。

  • 协作项目:开始新项目的科学家将他们的工作组织为一个 MLflow 项目。这种结构便于共享和参数修改,促进协作。

MLflow 的可扩展性

MLflow 被设计为能够无缝集成各种数据环境,从小型数据集到大数据应用。它基于这样的理解构建:高质量的机器学习结果往往依赖于强大的数据源,因此它能够灵活地扩展以适应不同的数据需求。

以下是MLflow如何解决不同维度上的可扩展性问题:

  • 分布式执行:MLflow 运行可以在分布式集群上操作。例如,与 Apache Spark 的集成允许进行分布式处理。此外,运行可以在您选择的分布式基础设施上启动,结果会传递到中央跟踪服务器进行分析。值得注意的是,MLflow 提供了一个集成 API 来在 Databricks 上启动运行。

  • 并行运行:对于像超参数调优这样的用例,MLflow 可以协调多个同时运行的实验,每个实验具有不同的参数。

  • 与分布式存储的互操作性:MLflow 项目可以与分布式存储解决方案接口,包括 Azure ADLS、Azure Blob 存储、AWS S3、Cloudflare R2 和 DBFS。无论是自动将文件获取到本地环境,还是直接与分布式存储 URI 接口,MLflow 都确保项目能够处理大量数据集——即使是处理 100 TB 文件的场景。

  • 集中式模型管理与模型注册表: 大型组织可以从 MLflow 模型注册表中受益,这是一个为协作模型生命周期管理量身定制的统一平台。在多个数据科学团队可能同时开发大量模型的环境中,模型注册表显得尤为重要。它简化了模型发现、跟踪实验、管理版本,并促进不同团队之间对模型意图的理解。

通过解决这些可扩展性维度,MLflow 确保用户无论其数据环境的大小或复杂性如何,都能充分利用其功能。