vlambda博客
学习文章列表

读书笔记《distributed-data-systems-with-azure-databricks》第11章使用MLFlow和MLeap管理和服务模型

Chapter 11: Managing and Serving Models with MLflow and MLeap

在上一章中,我们了解了如何微调在 Azure Databricks 中创建的模型。下一步是我们如何有效地跟踪和利用我们训练的模型。软件开发有明确的方法来跟踪代码,具有代码的暂存或生产版本和一般代码生命周期管理流程等阶段,但应用于机器学习模型的情况并不常见。造成这种情况的原因可能会有所不同,但一个原因可能是数据科学团队遵循自己的方法论,这些方法可能比软件生产更接近学术界,以及机器学习没有明确定义的开发方法论这一事实生命周期。我们可以将软件中常用的一些方法应用于 Azure Databricks 中的机器学习模型。

本章将重点探讨模型和过程如何...

Technical requirements

要处理本章中给出的示例,您需要具备以下条件:

  • An Azure Databricks subscription
  • An Azure Databricks notebook attached to a running cluster with Databricks Runtime for Machine Learning (Databricks Runtime ML) with version 7.0 or higher

Managing machine learning models

正如 我们之前所见,在 Azure Databricks 中,我们可以使用 MLflow 模型注册表,这是一个开源平台,用于管理机器学习或深度学习的完整生命周期 模型。它允许我们直接管理具有时间顺序、模型版本和阶段转换的模型。它为我们提供了 Experiments 和 Runs 等工具,使我们能够快速可视化训练运行和超参数优化的结果,并维护适当的模型版本控制,以跟踪我们有哪些模型可用于服务并快速更新当前如有必要,版本。

MLflow 在 Azure Databricks 中有一个模型存储库 user interface (UI)我们可以将模型设置为响应 REST API 的推理请求、阶段之间的转换模型,以及可视化与模型相关的指标和非结构化数据,例如描述和评论。它为我们提供了管理...

Model Registry example

在本节中,我们将通过一个示例进行,在该示例中,我们将开发一个机器学习模型并使用 MLflow 模型注册表来保存它、管理它所属的阶段以及用它来做预测。该模型将是一个 Keras 神经网络,我们将使用 Windfarm US 数据集,根据风向、风速和气温等天气条件参数预测风电场的功率输出。我们将使用 MLflow 来跟踪模型的阶段,并能够注册并再次加载它以进行预测:

  1. First, we will retrieve the dataset that will be used to train the model. We will use the pandas read_csv() function to load directly from the Uniform Resource Identifier (URI) of the file in GitHub, as follows:
    import pandas as pd
    wind_farm_data = pd.read_csv("https://github.com/dbczumar/model-registry-demo-notebook/raw/master/dataset/windfarm_data.csv", index_col=0)

    数据集...

Exporting and loading pipelines with MLeap

当我们训练机器学习或深度学习模型时,我们的目的是能够多次使用它来预测新的数据观察结果。为此,我们不仅必须能够存储模型,还必须能够将其重新加载回一个或多个平台。因此,我们遇到了序列化模型以供将来用于评分或预测的需要。

MLeap 是一种 常用格式,用于序列化和执行机器 学习和深度学习管道,采用流行的框架,例如 Apache Spark、scikit-learn 和 TensorFlow。它通常用于进行单个预测而不是批量预测。这些序列化的管道称为捆绑包,可以作为模型导出,然后加载并部署回 Azure Databricks 以进行新的预测。

在本节中,我们将学习如何使用 MLeap 导出并再次加载回 DecisionTreeClassifier MLlib 模型,以使用保存在...中的管道进行预测

Serving models with MLflow

在 Azure Databricks 中使用 MLflow 作为我们机器的存储库 学习模型的好处之一是它允许我们简单地为来自模型注册表的预测作为 REST API 端点。这些端点会在每个阶段的模型的较新版本上自动更新,因此这是使用 MLflow 模型注册表跟踪模型生命周期的补充功能。

可以从 Azure 工作区中的模型注册表 UI 启用模型作为 REST API 端点。要启用模型,请转到 Model Registry UI 中的模型页面并单击 服务标签中的="bold">启用 服务按钮。

单击以下屏幕截图中显示的按钮后,您应该会看到 状态为 Pending。几分钟后,状态将 更改为 Ready:

图 11.9 – 启用模型服务

如果要禁用...

Summary

机器学习模型的开发过程可能是一项复杂的任务,因为该学科固有的混合背景以及它通常与通用软件开发生命周期分离的事实。此外,如果我们无法导出用于提取数据特征的预处理管道,我们将在将模型从开发过渡到生产时遇到问题。

正如我们在本章中所看到的,我们可以使用 MLflow 来管理模型生命周期,并对使用的模型应用暂存和版本控制来解决问题,并有效地序列化预处理管道以用于预处理要推断的数据。

在下一章中,我们将探讨分布式学习的概念,这是一种可以在 Azure Databricks 中将深度学习模型的训练过程有效地分配给许多工作人员的技术。