Azure数据工程指南-二十三、数据块中的机器学习

作者: Apache CN

寻求利用机器学习(ML)和人工智能能力的组织和开发人员花费大量时间构建 ML 模型,并寻求一种方法来简化他们的机器学习开发生命周期,以跟踪实验,将代码打包成可重复运行的代码,以及构建、共享和部署 ML 模型。 MLflow 是一个管理端到端机器学习生命周期的开源平台,如图 [23-1] Fig1

  1. 跟踪实验以比较和记录参数和结果
  2. 打包 ML 代码以与其他数据科学家共享或转移到生产中。
  3. 使用各种可用的库管理和部署 ML 模型
  4. 注册模型以便于模型管理,并提供模型作为 REST 端点

在本章中,我将介绍如何使用 Azure Databricks 开始使用 MLflow。Databricks 为跟踪和保护 ML 模型培训运行以及运行 ML 项目提供了集成的 MLflow 体验。除了提供 MLflow 的全面管理版本,Databricks 还集成了企业安全功能、高可用性、实验和运行管理以及笔记本版本捕获。

img/511918_1_En_23_Fig1_HTML.jpg

图 23-1

描述 MLflow 功能的图像

创建 MLflow 实验

让我们从在 Azure Databricks 中创建一个 MLflow 实验开始。首先导航至主页菜单并选择“新 MLflow 实验”,如图 [23-2] Fig2

img/511918_1_En_23_Fig2_HTML.jpg

图 23-2

从主页菜单创建新的 MLflow 实验

选择“新建 MLflow 实验”打开一个新的“创建 MLflow 实验”界面。填充实验名称,然后创建实验,如图 [23-3] Fig3

img/511918_1_En_23_Fig3_HTML.jpg

图 23-3

为 MLflow 创建实验

一旦实验被创建,它将有一个与之相关联的实验 ID,当您配置包含 ML 模型代码的笔记本时,您将需要这个 ID。注意图 [23-4] Fig4

img/511918_1_En_23_Fig4_HTML.jpg

图 23-4

实验用户界面的示例图像

安装 MLflow 库

创建 MLflow 实验后,创建一个新的集群,并在其上安装 MLflow PyPI 库。如果您正在运行用于机器学习的 Databricks 运行时,则 MLflow 已经安装,不需要任何设置。如果您正在运行 Databricks 运行时,请按照图 [23-5] Fig5

img/511918_1_En_23_Fig5_HTML.jpg

图 23-5

安装 MLflow PyPI 库

一旦库成功安装,可以在集群的库上看到 installed 状态,如图 [23-6] Fig6

img/511918_1_En_23_Fig6_HTML.jpg

图 23-6

已安装的 MLflow 库

创建笔记本

在安装了一个实验、一个集群和 MLflow 库之后,您需要创建一个新的笔记本来构建 ML 模型,然后将它与 MLflow 实验相关联。请注意,如果开始运行时没有活动的实验,Databricks 会自动创建一个笔记本实验。

使用以下代码开始运行。因为您有一个实验 ID,所以使用

mlflow.start_run().
mlflow.start_run(experiment_id=1027351307587712)

或者,您可以如下定义实验名称,这将简单地使用实验名称而不是 ID:

experiment_name = "/Demo/MLFlowDemo/"
mlflow.set_experiment(experiment_name)

选择性测井

从日志的角度来看,可以选择自动记录特定于模型的指标、参数和工件。或者,可以根据需要通过向笔记本代码添加以下命令来定义这些指标、参数或模型:

数字度量:mlflow.log_metric("accuracy", 0.9)

训练参数:mlflow.log_param("learning_rate", 0.001)

型号:mlflow.sklearn.log_model(model, "myModel")

其他工件(文件):mlflow.log_artifact("/tmp/my-file", "myArtifactPath")

下面的代码从 scikit-learn 导入一个数据集,并创建训练和测试数据集。这段代码旨在演示一个 ML 模型示例。将此添加到 Databricks 笔记本中的代码块:

from sklearn.model_selection import train_test_split
from sklearn.datasets import load_diabetes
db = load_diabetes()
X = db.data
y = db.target
X_train, X_test, y_train, y_test = train_test_split(X, y)

下一个代码块将导入 MLflow 和 sklearn,开始实验,并记录执行运行的详细信息。只需将此代码添加到您的 Databricks 笔记本中并运行它:

import mlflow
import mlflow.sklearn
from sklearn.ensemble import RandomForestRegressor
from sklearn.metrics import mean_squared_error

## In this run, neither the experiment_id nor the experiment_name parameter is provided. MLflow automatically creates a notebook experiment and logs runs to it.

## Access these runs using the Experiment sidebar. Click Experiment at the upper right of this screen.
with mlflow.start_run(experiment_id=1027351307587712):
  n_estimators = 100
  max_depth = 6
  max_features = 3

## Create and train model
  rf = RandomForestRegressor(n_estimators = n_estimators, max_depth = max_depth, max_features = max_features)
  rf.fit(X_train, y_train)

## Make predictions
  predictions = rf.predict(X_test)

## Log parameters
  mlflow.log_param("num_trees", n_estimators)
  mlflow.log_param("maxdepth", max_depth)
  mlflow.log_param("max_feat", max_features)

## Log model
  mlflow.sklearn.log_model(rf, "random-forest-model")

## Create metrics
  mse = mean_squared_error(y_test, predictions)

## Log metrics
  mlflow.log_metric("mse", mse)

图 [23-7] Fig7

img/511918_1_En_23_Fig7_HTML.jpg

图 23-7

代码中定义的参数

点击图 [23-8] Fig8

img/511918_1_En_23_Fig8_HTML.jpg

图 23-8

单击打开用户界面

由于之前已经创建了一个 MLflow 实验,点击 MLFlowDemo 打开它,如图 [23-9] Fig9

img/511918_1_En_23_Fig9_HTML.jpg

图 23-9

打开 MLflow 实验

请注意,该实验运行了两次,并注意与之相关的参数和指标。此外,现在可以选择比较两次运行,如图 [23-10] Fig10

img/511918_1_En_23_Fig10_HTML.jpg

图 23-10

比较多次运行

点击比较,注意两次运行之间的所有相关细节,如图 [23-11] Fig11

img/511918_1_En_23_Fig11_HTML.jpg

图 23-11

比较两次模型运行的参数

此外,您可以通过图 [23-12] Fig12

img/511918_1_En_23_Fig12_HTML.jpg

图 23-12

样本地块 1

自动记录

在测试了定义的日志选项之后,还要测试自动日志。您可以使用图 [23-13] Fig13) 中所示的代码的以下变体来实现,它基本上用对`mlflow.sklearn.autolog(

img/511918_1_En_23_Fig13_HTML.jpg

图 23-13

自动登录代码示例

以下是您需要在 Databricks 笔记本中运行的代码,如图 [23-13] Fig13

import mlflow
import mlflow.sklearn
from sklearn.ensemble import RandomForestRegressor
from sklearn.metrics import mean_squared_error
mlflow.sklearn.autolog()

## In this run, neither the experiment_id nor the experiment_name parameter is provided. MLflow automatically creates a notebook experiment and logs runs to it.

## Access these runs using the Experiment sidebar. Click Experiment at the upper right of this screen.
with mlflow.start_run():
  n_estimators = 100
  max_depth = 6
  max_features = 3

## Create and train model
  rf = RandomForestRegressor(n_estimators = n_estimators, max_depth = max_depth, max_features = max_features)
  rf.fit(X_train, y_train)

## Make predictions
  predictions = rf.predict(X_test)

在运行这个新模型两次并导航回 MLflow 实验后,请注意实验 UI 中记录的新运行,这一次在捕获的指标中有一些差异,正如预期的那样,如图 [23-14] Fig14

img/511918_1_En_23_Fig14_HTML.jpg

图 23-14

实验 UI 2

点击其中一个运行,查看各种细节,包括图,如图 [23-15] Fig15

img/511918_1_En_23_Fig15_HTML.jpg

图 23-15

样地 2

注册一个模型

在创建、记录和比较模型之后,您可以通过点击想要记录的模型并向下滚动到运行细节中的工件来注册模型,如图 [23-16] Fig16

img/511918_1_En_23_Fig16_HTML.jpg

图 23-16

从实验界面选择模型

选择型号,点击【注册型号】,如图 [23-17] Fig17

img/511918_1_En_23_Fig17_HTML.jpg

图 23-17

单击从工件注册模型

在图 [23-18] Fig18

img/511918_1_En_23_Fig18_HTML.jpg

图 23-18

注册模型的步骤

一旦注册,Details 选项卡将包含与版本、注册时间戳、模型创建者和阶段相关的所有细节,如图 [23-19] Fig19

img/511918_1_En_23_Fig19_HTML.jpg

图 23-19

显示“详细信息”选项卡的图像

图 [23-20] Fig20

img/511918_1_En_23_Fig20_HTML.jpg

图 23-20

显示版本详细信息的图像

图 [23-21] Fig21

img/511918_1_En_23_Fig21_HTML.jpg

图 23-21

从一个阶段到另一个阶段的步骤

启用模型服务时,Databricks 会自动为模型创建一个唯一的单节点集群,并在该集群上部署模型的所有非归档版本。点击图 [23-22] Fig22

img/511918_1_En_23_Fig22_HTML.jpg

图 23-22

启用上菜的步骤

此时,您会看到服务和详细信息标签,如图 [23-23] Fig23

img/511918_1_En_23_Fig23_HTML.jpg

图 23-23

该图显示了新的“服务”选项卡属性

样本服务页面可能如图 [23-24] Fig24

img/511918_1_En_23_Fig24_HTML.jpg

图 23-24

上菜标签的示例图像

最后,当一个模型被注册后,您可以通过导航到 Databricks UI 中的 Models 选项卡来找到它,如图 [23-25] Fig25

img/511918_1_En_23_Fig25_HTML.jpg

图 23-25

“模型”选项卡图标的图像

摘要

在本章中,我演示了如何创建 MLflow 实验、安装 MLflow 库以及创建 MLflow 笔记本。我还向您展示了选择性和自动日志记录的实际例子,最后向您展示了如何注册一个模型。随着 MLflow 通过 Databricks 体验的集成,您现在有能力管理 ML 生命周期,包括实验、再现性、部署和中央模型注册。

文章列表

更多推荐

更多
  • AWS自动化机器学习-十一、MLSDLC 的持续集成、部署和训练 技术要求,编纂持续集成阶段,管理持续部署阶段,管理持续训练,延伸,构建集成工件,构建测试工件,构建生产工件,自动化持续集成流程,回顾构建阶段,回顾测试阶段,审查部署和维护阶段,回顾应用用户体验,创建新的鲍鱼调查数据,回顾持续训练流程,清
    Apache CN

  • AWS自动化机器学习-六、使用 AWS 步骤函数自动化机器学习过程 技术要求,介绍 AWS 步骤功能,使用 Step 函数 Data Science SDK for CI/CD,建立 CI/CD 渠道资源,创建状态机,解决状态机的复杂性,更新开发环境,创建管道工件库,构建管道应用构件,部署 CI/CD
    Apache CN

  • AWS自动化机器学习-第三部分:优化以源代码为中心的自动化机器学习方法 本节将向您介绍整体 CI/CD 流程的局限性,以及如何将 ML 从业者的角色进一步整合到管道构建流程中。本节还将介绍这种角色集成如何简化自动化过程,并通过向您介绍 AWS Step 函数向您展示一种优化的方法。本节包括以下章节:
    Apache CN

  • AWS自动化机器学习-一、AWS 上的自动化机器学习入门 技术要求,洗钱流程概述,洗钱过程的复杂性,端到端 ML 流程示例,AWS 如何使 ML 开发和部署过程更容易自动化,介绍 ACME 渔业物流,ML 的情况,从数据中获得洞察力,建立正确的模型,训练模型,评估训练好的模型,探索可能的后续步
    Apache CN

  • AWS自动化机器学习-二、使用 SageMaker 自动驾驶器自动化机器学习模型开发 技术要求,介绍 AWS AI 和 ML 前景,SageMaker 自动驾驶器概述,利用 SageMaker 自动驾驶器克服自动化挑战,使用 SageMaker SDK 自动化 ML 实验,SageMaker Studio 入门,准备实验
    Apache CN

  • AWS自动化机器学习-四、机器学习的持续集成和持续交(CI/CD) 四、机器学习的持续集成和持续交CI/CD技术要求,介绍 CI/CD 方法,通过 CI/CD 实现 ML 自动化,在 AWS 上创建 CI/CD 管道,介绍 CI/CD 的 CI 部分,介绍 CI/CD 的 CD 部分,结束循环,采取以部
    Apache CN

  • AWS自动化机器学习-九、使用 Amazon Managed Workflows 为 Apache AirFlow 构建 ML 工作流 技术要求,开发以数据为中心的工作流程,创建合成鲍鱼调查数据,执行以数据为中心的工作流程,构建和单元测试数据 ETL 工件,构建气流 DAG,清理, 在前面的年龄计算器示例中,我们了解了如何通过 ML 从业者和开发人员团队之间的跨职能
    Apache CN

  • AWS自动化机器学习-七、使用 AWS 步骤函数构建 ML 工作流 技术要求,构建状态机工作流,执行集成测试,监控管道进度,设置服务权限,创建 ML 工作流程, 在本章中,我们将从第六章中的 [处继续,使用 AWS 步骤函数自动化机器学习过程。您将从那一章中回忆起,我们正在努力实现的主要目标是简化
    Apache CN

  • AWS自动化机器学习-八、使用 Apache Airflow 实现机器学习过程的自动化 技术要求,介绍阿帕奇气流,介绍亚马逊 MWAA,利用气流处理鲍鱼数据集,配置 MWAA 系统的先决条件,配置 MWAA 环境, 当建立一个 ML 模型时,有一个所有 ML 从业者都知道的基本原则;也就是说,最大似然模型只有在数据被训练时
    Apache CN

  • AWS自动化机器学习-五、自动化 ML 模型的持续部署 技术要求,部署 CI/CD 管道,构建 ML 模型工件,执行自动化 ML 模型部署,整理管道结构,创建 CDK 应用,部署管道应用,查看建模文件,审查申请文件,查看模型服务文件,查看容器构建文件,提交 ML 工件,清理, 在 [第 4
    Apache CN

  • 近期文章

    更多
    文章目录

      推荐作者

      更多